# AI Pack: relay-contracts

- Description: Relay contracts and settlement modules.
- Remote: https://github.com/symbioticfi/relay-contracts
- Remote ref: HEAD
- Commit: cba718183692230382d53bb8424a2b6cb33f973d
- Generated (UTC): 2026-06-02T10:22:21.999Z
- Repomix: 1.14.1
- Preset: contract
- Ignore patterns: .gitignore, .dockerignore, .prettierignore, .npmignore, .nvmrc, .editorconfig, .gitattributes, **/.github/**, **/.husky/**, **/.vscode/**, **/.idea/**, **/.DS_Store, node_modules/, dist/, build/, .turbo/, .next/, out/, cache/, broadcast/, bin/, coverage*, *.test, target/, docs/, abis/, bindings/, test/**, !test/integration/**, script/utils/**, package-lock.json, pnpm-lock.yaml, yarn.lock, bun.lockb, .pre-commit-config.yaml
- Flags: compress

---

This file is a merged representation of a subset of the codebase, containing files not matching ignore patterns, combined into a single document by Repomix.
The content has been processed where content has been compressed (code blocks are separated by ⋮---- delimiter).

# File Summary

## Purpose

This file contains a packed representation of a subset of the repository's contents that is considered the most important context.
It is designed to be easily consumable by AI systems for analysis, code review,
or other automated processes.

## File Format

The content is organized as follows:

1. This summary section
2. Repository information
3. Directory structure
4. Repository files (if enabled)
5. Multiple file entries, each consisting of:
   a. A header with the file path (## File: path/to/file)
   b. The full contents of the file in a code block

## Usage Guidelines

- This file should be treated as read-only. Any changes should be made to the
  original repository files, not this packed version.
- When processing this file, use the file path to distinguish
  between different files in the repository.
- Be aware that this file may contain sensitive information. Handle it with
  the same level of security as you would the original repository.

## Notes

- Some files may have been excluded based on .gitignore rules and Repomix's configuration
- Binary files are not included in this packed representation. Please refer to the Repository Structure section for a complete list of file paths, including binary files
- Files matching these patterns are excluded: .gitignore, .dockerignore, .prettierignore, .npmignore, .nvmrc, .editorconfig, .gitattributes, **/.github/**, **/.husky/**, **/.vscode/**, **/.idea/**, **/.DS_Store, node_modules/, dist/, build/, .turbo/, .next/, out/, cache/, broadcast/, bin/, coverage*, *.test, target/, docs/, abis/, bindings/, test/**, !test/integration/**, script/utils/**, package-lock.json, pnpm-lock.yaml, yarn.lock, bun.lockb, .pre-commit-config.yaml
- Files matching patterns in .gitignore are excluded
- Files matching default ignore patterns are excluded
- Content has been compressed - code blocks are separated by ⋮---- delimiter
- Files are sorted by Git change count (files with more changes are at the bottom)

# Directory Structure

```
examples/
  MyKeyRegistry.sol
  MySettlement.sol
  MyValSetDriver.sol
  MyVotingPowerProvider.sol
script/
  examples/
    my-relay-deploy.toml
    MyRelayDeploy.sol
  relay-deploy.sh
  RelayDeploy.sol
snapshots/
  gas.txt
  sizes.txt
src/
  interfaces/
    modules/
      base/
        INetworkManager.sol
        IOzEIP712.sol
        IPermissionManager.sol
      common/
        permissions/
          IOzAccessControl.sol
          IOzAccessManaged.sol
          IOzOwnable.sol
      key-registry/
        IKeyRegistry.sol
      settlement/
        sig-verifiers/
          zk/
            IVerifier.sol
          ISigVerifier.sol
          ISigVerifierBlsBn254Simple.sol
          ISigVerifierBlsBn254ZK.sol
        ISettlement.sol
      valset-driver/
        IEpochManager.sol
        IValSetDriver.sol
      voting-power/
        base/
          IVotingPowerCalcManager.sol
        common/
          voting-power-calc/
            libraries/
              AggregatorV3Interface.sol
            IEqualStakeVPCalc.sol
            INormalizedTokenDecimalsVPCalc.sol
            IPricedTokensChainlinkVPCalc.sol
            IWeightedTokensVPCalc.sol
            IWeightedVaultsVPCalc.sol
        extensions/
          IBaseRewards.sol
          IBaseSlashing.sol
          IMultiToken.sol
          IOperatorsBlacklist.sol
          IOperatorsJail.sol
          IOperatorsWhitelist.sol
          IOperatorVaults.sol
          IOpNetVaultAutoDeploy.sol
          ISharedVaults.sol
        IVotingPowerProvider.sol
  libraries/
    keys/
      KeyBlsBls12381.sol
      KeyBlsBn254.sol
      KeyEcdsaSecp256k1.sol
    sigs/
      SigBlsBls12381.sol
      SigBlsBn254.sol
      SigEcdsaSecp256k1.sol
    structs/
      Checkpoints.sol
      PersistentSet.sol
    utils/
      BLS12381.sol
      BN254.sol
      InputNormalizer.sol
      KeyTags.sol
      Scaler.sol
      ValSetVerifier.sol
  modules/
    base/
      NetworkManager.sol
      OzEIP712.sol
      PermissionManager.sol
    common/
      permissions/
        OzAccessControl.sol
        OzAccessManaged.sol
        OzOwnable.sol
    key-registry/
      KeyRegistry.sol
    settlement/
      sig-verifiers/
        libraries/
          ExtraDataStorageHelper.sol
        SigVerifierBlsBn254Simple.sol
        SigVerifierBlsBn254ZK.sol
      Settlement.sol
    valset-driver/
      EpochManager.sol
      ValSetDriver.sol
    voting-power/
      base/
        VotingPowerCalcManager.sol
      common/
        voting-power-calc/
          libraries/
            ChainlinkPriceFeed.sol
          EqualStakeVPCalc.sol
          NormalizedTokenDecimalsVPCalc.sol
          PricedTokensChainlinkVPCalc.sol
          WeightedTokensVPCalc.sol
          WeightedVaultsVPCalc.sol
      extensions/
        logic/
          BaseRewardsLogic.sol
          BaseSlashingLogic.sol
          OpNetVaultAutoDeployLogic.sol
        BaseRewards.sol
        BaseSlashing.sol
        MultiToken.sol
        OperatorsBlacklist.sol
        OperatorsJail.sol
        OperatorsWhitelist.sol
        OperatorVaults.sol
        OpNetVaultAutoDeploy.sol
        SharedVaults.sol
      logic/
        VotingPowerProviderLogic.sol
      VotingPowerProvider.sol
.env.example
.gitmodules
.prettierrc
codecov.yml
CONTRIBUTING.md
foundry.lock
foundry.toml
gas.txt
LICENSE
package.json
README.md
remappings.txt
```

# Files

## File: examples/MyKeyRegistry.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {KeyRegistry} from "../src/modules/key-registry/KeyRegistry.sol";
⋮----
/// @title MyKeyRegistry
/// @notice Example implementation of the KeyRegistry contract.
contract MyKeyRegistry is KeyRegistry {
function initialize(KeyRegistryInitParams memory keyRegistryInitParams) public virtual initializer {
```

## File: examples/MySettlement.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {OzAccessControl} from "../src/modules/common/permissions/OzAccessControl.sol";
import {Settlement} from "../src/modules/settlement/Settlement.sol";
⋮----
import {ISettlement} from "../src/interfaces/modules/settlement/ISettlement.sol";
⋮----
/// @title MySettlement
/// @notice Example implementation of the Settlement contract.
contract MySettlement is Settlement, OzAccessControl {
⋮----
function initialize(SettlementInitParams memory settlementInitParams, address defaultAdmin)
```

## File: examples/MyValSetDriver.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {OzAccessControl} from "../src/modules/common/permissions/OzAccessControl.sol";
import {ValSetDriver} from "../src/modules/valset-driver/ValSetDriver.sol";
⋮----
import {IEpochManager} from "../src/interfaces/modules/valset-driver/IEpochManager.sol";
import {IValSetDriver} from "../src/interfaces/modules/valset-driver/IValSetDriver.sol";
⋮----
/// @title MyValSetDriver
/// @notice Example implementation of the ValSetDriver contract.
contract MyValSetDriver is ValSetDriver, OzAccessControl {
⋮----
function initialize(ValSetDriverInitParams memory valSetDriverInitParams, address defaultAdmin)
```

## File: examples/MyVotingPowerProvider.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {EqualStakeVPCalc} from "../src/modules/voting-power/common/voting-power-calc/EqualStakeVPCalc.sol";
import {OperatorVaults} from "../src/modules/voting-power/extensions/OperatorVaults.sol";
import {OzOwnable} from "../src/modules/common/permissions/OzOwnable.sol";
import {VotingPowerProvider} from "../src/modules/voting-power/VotingPowerProvider.sol";
⋮----
/// @title MyVotingPowerProvider
/// @notice Example implementation of the VotingPowerProvider contract.
contract MyVotingPowerProvider is VotingPowerProvider, OzOwnable, EqualStakeVPCalc, OperatorVaults {
⋮----
function initialize(
```

## File: script/examples/my-relay-deploy.toml

```toml
[31337]
endpoint_url = "http://127.0.0.1:8545"

[31338]
endpoint_url = "http://127.0.0.1:8546"

[1234567890]
endpoint_url = ""
keyRegistry = 31337
votingPowerProvider = [31337]
settlement = [
    31337,
    31338,
]
valSetDriver = 31337
```

## File: script/examples/MyRelayDeploy.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {SigVerifierBlsBn254Simple} from "../../src/modules/settlement/sig-verifiers/SigVerifierBlsBn254Simple.sol";
import {RelayDeploy} from "../RelayDeploy.sol";
import {IVotingPowerProvider} from "../../src/interfaces/modules/voting-power/IVotingPowerProvider.sol";
import {INetworkManager} from "../../src/interfaces/modules/base/INetworkManager.sol";
import {IOzEIP712} from "../../src/interfaces/modules/base/IOzEIP712.sol";
import {IOzOwnable} from "../../src/interfaces/modules/common/permissions/IOzOwnable.sol";
import {MyVotingPowerProvider} from "../../examples/MyVotingPowerProvider.sol";
import {MyKeyRegistry} from "../../examples/MyKeyRegistry.sol";
import {IKeyRegistry} from "../../src/interfaces/modules/key-registry/IKeyRegistry.sol";
import {MyValSetDriver} from "../../examples/MyValSetDriver.sol";
import {IValSetDriver} from "../../src/interfaces/modules/valset-driver/IValSetDriver.sol";
import {IEpochManager} from "../../src/interfaces/modules/valset-driver/IEpochManager.sol";
import {MySettlement} from "../../examples/MySettlement.sol";
import {ISettlement} from "../../src/interfaces/modules/settlement/ISettlement.sol";
⋮----
// ./script/relay-deploy.sh ./script/examples/MyRelayDeploy.sol ./script/examples/my-relay-deploy.toml --broadcast
⋮----
contract MyRelayDeploy is RelayDeploy {
⋮----
// Key registry parameters
⋮----
// Voting power parameters
⋮----
// Settlement parameters
⋮----
// ValSet driver parameters
⋮----
function _keyRegistryParams() internal override returns (address implementation, bytes memory initData) {
⋮----
function _votingPowerProviderParams() internal override returns (address implementation, bytes memory initData) {
⋮----
function _settlementParams() internal override returns (address implementation, bytes memory initData) {
⋮----
function _valSetDriverParams() internal override returns (address implementation, bytes memory initData) {
⋮----
function runDeployKeyRegistry() public override {
⋮----
function runDeployVotingPowerProvider() public override {
⋮----
function runDeploySettlement() public override {
⋮----
function runDeployValSetDriver() public override {
```

## File: script/relay-deploy.sh

```bash
#!/usr/bin/env bash
set -euo pipefail

usage() {
  cat <<'USAGE'
Usage: relay-deploy.sh <script-path> <config-path> [forge-script-args...]

Arguments:
  <script-path>    Path to the Forge deployment script (.s.sol)
  <config-path>    Path to the deployment configuration TOML file
  [args...]        Additional arguments forwarded to every forge script invocation
USAGE
}

if [[ $# -lt 2 ]]; then
  usage
  exit 1
fi

script_path=$1
shift
config_path=$1
shift
extra_args=("$@")

if [[ ! -f "$script_path" ]]; then
  echo "Error: script not found at '$script_path'" >&2
  exit 1
fi

if [[ ! -f "$config_path" ]]; then
  echo "Error: config not found at '$config_path'" >&2
  exit 1
fi

for bin in forge python3 cast; do
  if ! command -v "$bin" >/dev/null 2>&1; then
    echo "Error: required command '$bin' is not available in PATH" >&2
    exit 1
  fi
done

get_contract_chains() {
  local config_file=$1
  local contract_key=$2
  python3 - "$config_file" "$contract_key" <<'PY'
import sys

try:
    import tomllib  # Python 3.11+
except ModuleNotFoundError:  # pragma: no cover - fallback for older versions
    import tomli as tomllib

config_path, contract_key = sys.argv[1:3]
with open(config_path, "rb") as fh:
    config = tomllib.load(fh) or {}

def extract_chains(raw_value):
    if isinstance(raw_value, dict):
        raw_value = raw_value.get("chains")
    if isinstance(raw_value, list):
        return [str(item) for item in raw_value if item is not None]
    if raw_value is None:
        return []
    return [str(raw_value)]

contracts_section = {}
for key in ("1234567890", 1234567890):
    value = config.get(key)
    if isinstance(value, dict):
        contracts_section = value
        break
else:
    legacy_contracts = config.get("contracts")
    if isinstance(legacy_contracts, dict):
        contracts_section = legacy_contracts

chains = extract_chains(contracts_section.get(contract_key))

if not chains:
    legacy_contracts = config.get("contracts")
    if isinstance(legacy_contracts, dict):
        chains = extract_chains(legacy_contracts.get(contract_key))

for chain in chains:
    print(chain)
PY
}

get_chain_rpc_url() {
  local config_file=$1
  local chain_id=$2
  python3 - "$config_file" "$chain_id" <<'PY'
import sys

try:
    import tomllib  # Python 3.11+
except ModuleNotFoundError:  # pragma: no cover
    import tomli as tomllib

config_path, requested_chain = sys.argv[1:3]
with open(config_path, "rb") as fh:
    config = tomllib.load(fh) or {}

def normalize_chain_mapping(raw):
    chains = {}
    if isinstance(raw, dict):
        for key, value in raw.items():
            key_str = str(key)
            chains[key_str] = value
    return chains

chains = {}
chains.update(normalize_chain_mapping(config.get("chains")))

for key, value in config.items():
    if key in ("chains", "contracts") or key in ("0", 0):
        continue
    key_str = str(key)
    if not key_str.isdigit():
        continue
    if isinstance(value, (dict, str)):
        chains[key_str] = value

candidates = []
candidates.append(requested_chain)
try:
    candidates.append(int(requested_chain))
except ValueError:
    pass
candidates.append(str(requested_chain))

entry = None
seen = set()
for candidate in candidates:
    key_variants = []
    if isinstance(candidate, int):
        key_variants.extend([candidate, str(candidate)])
    else:
        key_variants.append(candidate)

    for key in key_variants:
        key_str = str(key)
        if key_str in seen:
            continue
        seen.add(key_str)
        if key_str in chains:
            entry = chains[key_str]
            break
    if entry is not None:
        break

if isinstance(entry, dict):
    url = entry.get("endpoint_url") or entry.get("rpc_url")
    if url:
        print(url)
elif isinstance(entry, str) and entry:
    print(entry)
PY
}

createx_address="0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed"
createx_deployer="0xeD456e05CaAb11d66C4c797dD6c1D6f9A7F352b5"
createx_tx="0xf92f698085174876e800832dc6c08080b92f1660a06040523060805234801561001457600080fd5b50608051612e3e6100d860003960008181610603015281816107050152818161082b015281816108d50152818161127f01528181611375015281816113e00152818161141f015281816114a7015281816115b3015281816117d20152818161183d0152818161187c0152818161190401528181611ac501528181611c7801528181611ce301528181611d2201528181611daa01528181611fe901528181612206015281816122f20152818161244d015281816124a601526125820152612e3e6000f3fe60806040526004361061018a5760003560e01c806381503da1116100d6578063d323826a1161007f578063e96deee411610059578063e96deee414610395578063f5745aba146103a8578063f9664498146103bb57600080fd5b8063d323826a1461034f578063ddda0acb1461036f578063e437252a1461038257600080fd5b80639c36a286116100b05780639c36a28614610316578063a7db93f214610329578063c3fe107b1461033c57600080fd5b806381503da1146102d0578063890c283b146102e357806398e810771461030357600080fd5b80632f990e3f116101385780636cec2536116101125780636cec25361461027d57806374637a7a1461029d5780637f565360146102bd57600080fd5b80632f990e3f1461023757806331a7c8c81461024a57806342d654fc1461025d57600080fd5b806327fe18221161016957806327fe1822146101f15780632852527a1461020457806328ddd0461461021757600080fd5b8062d84acb1461018f57806326307668146101cb57806326a32fc7146101de575b600080fd5b6101a261019d366004612915565b6103ce565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6101a26101d9366004612994565b6103e6565b6101a26101ec3660046129db565b610452565b6101a26101ff3660046129db565b6104de565b6101a2610212366004612a39565b610539565b34801561022357600080fd5b506101a2610232366004612a90565b6106fe565b6101a2610245366004612aa9565b61072a565b6101a2610258366004612aa9565b6107bb565b34801561026957600080fd5b506101a2610278366004612b1e565b6107c9565b34801561028957600080fd5b506101a2610298366004612a90565b610823565b3480156102a957600080fd5b506101a26102b8366004612b4a565b61084f565b6101a26102cb3660046129db565b611162565b6101a26102de366004612b74565b6111e8565b3480156102ef57600080fd5b506101a26102fe366004612bac565b611276565b6101a2610311366004612bce565b6112a3565b6101a2610324366004612994565b611505565b6101a2610337366004612c49565b6116f1565b6101a261034a366004612aa9565b611964565b34801561035b57600080fd5b506101a261036a366004612cd9565b6119ed565b6101a261037d366004612c49565b611a17565b6101a2610390366004612bce565b611e0c565b6101a26103a3366004612915565b611e95565b6101a26103b6366004612bce565b611ea4565b6101a26103c9366004612b74565b611f2d565b60006103dd8585858533611a17565b95945050505050565b6000806103f2846120db565b90508083516020850134f59150610408826123d3565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a35092915050565b60006104d86104d260408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b836103e6565b92915050565b600081516020830134f090506104f3816123d3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a2919050565b600080610545856120db565b905060008460601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f593505073ffffffffffffffffffffffffffffffffffffffff8316610635576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201526024015b60405180910390fd5b604051829073ffffffffffffffffffffffffffffffffffffffff8516907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a36000808473ffffffffffffffffffffffffffffffffffffffff1634876040516106a19190612d29565b60006040518083038185875af1925050503d80600081146106de576040519150601f19603f3d011682016040523d82523d6000602084013e6106e3565b606091505b50915091506106f382828961247d565b505050509392505050565b60006104d87f00000000000000000000000000000000000000000000000000000000000000008361084f565b60006107b36107aa60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b85858533611a17565b949350505050565b60006107b3848484336112a3565b60006040518260005260ff600b53836020527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f6040526055600b20601452806040525061d694600052600160345350506017601e20919050565b60006104d8827f00000000000000000000000000000000000000000000000000000000000000006107c9565b600060607f9400000000000000000000000000000000000000000000000000000000000000610887600167ffffffffffffffff612d45565b67ffffffffffffffff16841115610902576040517f3c55ab3b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b836000036109c7576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037015b6040516020818303038152906040529150611152565b607f8411610a60576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527fff0000000000000000000000000000000000000000000000000000000000000080831660218301527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b16602283015260f886901b1660368201526037016109b1565b60ff8411610b1f576040517fd70000000000000000000000000000000000000000000000000000000000000060208201527fff0000000000000000000000000000000000000000000000000000000000000080831660218301527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b1660228301527f8100000000000000000000000000000000000000000000000000000000000000603683015260f886901b1660378201526038016109b1565b61ffff8411610bff576040517fd80000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f086901b1660378201526039016109b1565b62ffffff8411610ce0576040517fd90000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e886901b166037820152603a016109b1565b63ffffffff8411610dc2576040517fda0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e086901b166037820152603b016109b1565b64ffffffffff8411610ea5576040517fdb0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f850000000000000000000000000000000000000000000000000000000000000060368201527fffffffffff00000000000000000000000000000000000000000000000000000060d886901b166037820152603c016109b1565b65ffffffffffff8411610f89576040517fdc0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f860000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffff000000000000000000000000000000000000000000000000000060d086901b166037820152603d016109b1565b66ffffffffffffff841161106e576040517fdd0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f870000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffffff0000000000000000000000000000000000000000000000000060c886901b166037820152603e016109b1565b6040517fde0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f880000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffffffff00000000000000000000000000000000000000000000000060c086901b166037820152603f0160405160208183030381529060405291505b5080516020909101209392505050565b60006104d86111e260408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b83611505565b600061126f61126860408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b8484610539565b9392505050565b600061126f83837f00000000000000000000000000000000000000000000000000000000000000006119ed565b60008451602086018451f090506112b9816123d3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a26000808273ffffffffffffffffffffffffffffffffffffffff168560200151876040516113279190612d29565b60006040518083038185875af1925050503d8060008114611364576040519150601f19603f3d011682016040523d82523d6000602084013e611369565b606091505b5091509150816113c9577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001631156114fb578373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d8060008114611495576040519150601f19603f3d011682016040523d82523d6000602084013e61149a565b606091505b509092509050816114fb577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b5050949350505050565b600080611511846120db565b905060006040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000828251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff81166115e0576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b604051839073ffffffffffffffffffffffffffffffffffffffff8316907f2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c906790600090a361162c83610823565b935060008173ffffffffffffffffffffffffffffffffffffffff1634876040516116569190612d29565b60006040518083038185875af1925050503d8060008114611693576040519150601f19603f3d011682016040523d82523d6000602084013e611698565b606091505b505090506116a681866124ff565b60405173ffffffffffffffffffffffffffffffffffffffff8616907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a25050505092915050565b6000806116fd876120db565b9050808651602088018651f59150611714826123d3565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a36000808373ffffffffffffffffffffffffffffffffffffffff168660200151886040516117849190612d29565b60006040518083038185875af1925050503d80600081146117c1576040519150601f19603f3d011682016040523d82523d6000602084013e6117c6565b606091505b509150915081611826577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163115611958578473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d80600081146118f2576040519150601f19603f3d011682016040523d82523d6000602084013e6118f7565b606091505b50909250905081611958577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b50505095945050505050565b60006107b36119e460408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b858585336116f1565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b600080611a23876120db565b905060006040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000828251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116611af2576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b604051839073ffffffffffffffffffffffffffffffffffffffff8316907f2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c906790600090a3611b3e83610823565b935060008173ffffffffffffffffffffffffffffffffffffffff1687600001518a604051611b6c9190612d29565b60006040518083038185875af1925050503d8060008114611ba9576040519150601f19603f3d011682016040523d82523d6000602084013e611bae565b606091505b50509050611bbc81866124ff565b60405173ffffffffffffffffffffffffffffffffffffffff8616907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a260608573ffffffffffffffffffffffffffffffffffffffff1688602001518a604051611c299190612d29565b60006040518083038185875af1925050503d8060008114611c66576040519150601f19603f3d011682016040523d82523d6000602084013e611c6b565b606091505b50909250905081611ccc577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163115611dfe578673ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d8060008114611d98576040519150601f19603f3d011682016040523d82523d6000602084013e611d9d565b606091505b50909250905081611dfe577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b505050505095945050505050565b60006103dd611e8c60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b868686866116f1565b60006103dd85858585336116f1565b60006103dd611f2460408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b86868686611a17565b6000808360601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f092505073ffffffffffffffffffffffffffffffffffffffff8216612016576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b60405173ffffffffffffffffffffffffffffffffffffffff8316907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a26000808373ffffffffffffffffffffffffffffffffffffffff1634866040516120809190612d29565b60006040518083038185875af1925050503d80600081146120bd576040519150601f19603f3d011682016040523d82523d6000602084013e6120c2565b606091505b50915091506120d282828861247d565b50505092915050565b60008060006120e9846125b3565b9092509050600082600281111561210257612102612e02565b1480156121205750600081600281111561211e5761211e612e02565b145b1561215e57604080513360208201524691810191909152606081018590526080016040516020818303038152906040528051906020012092506123cc565b600082600281111561217257612172612e02565b1480156121905750600181600281111561218e5761218e612e02565b145b156121b0576121a9338560009182526020526040902090565b92506123cc565b60008260028111156121c4576121c4612e02565b03612233576040517f13b3a2a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b600182600281111561224757612247612e02565b1480156122655750600081600281111561226357612263612e02565b145b1561227e576121a9468560009182526020526040902090565b600182600281111561229257612292612e02565b1480156122b0575060028160028111156122ae576122ae612e02565b145b1561231f576040517f13b3a2a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b61239a60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b84036123a657836123c9565b604080516020810186905201604051602081830303815290604052805190602001205b92505b5050919050565b73ffffffffffffffffffffffffffffffffffffffff8116158061240b575073ffffffffffffffffffffffffffffffffffffffff81163b155b1561247a576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b50565b82158061249f575073ffffffffffffffffffffffffffffffffffffffff81163b155b156124fa577f0000000000000000000000000000000000000000000000000000000000000000826040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b505050565b811580612520575073ffffffffffffffffffffffffffffffffffffffff8116155b80612540575073ffffffffffffffffffffffffffffffffffffffff81163b155b156125af576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b5050565b600080606083901c3314801561261057508260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000145b1561262057506000905080915091565b606083901c3314801561265a57507fff00000000000000000000000000000000000000000000000000000000000000601484901a60f81b16155b1561266b5750600090506001915091565b33606084901c036126825750600090506002915091565b606083901c1580156126db57508260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000145b156126ec5750600190506000915091565b606083901c15801561272557507fff00000000000000000000000000000000000000000000000000000000000000601484901a60f81b16155b1561273557506001905080915091565b606083901c61274a5750600190506002915091565b8260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000036127a55750600290506000915091565b8260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166000036127e15750600290506001915091565b506002905080915091565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261282c57600080fd5b813567ffffffffffffffff80821115612847576128476127ec565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561288d5761288d6127ec565b816040528381528660208588010111156128a657600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000604082840312156128d857600080fd5b6040516040810181811067ffffffffffffffff821117156128fb576128fb6127ec565b604052823581526020928301359281019290925250919050565b60008060008060a0858703121561292b57600080fd5b84359350602085013567ffffffffffffffff8082111561294a57600080fd5b6129568883890161281b565b9450604087013591508082111561296c57600080fd5b506129798782880161281b565b92505061298986606087016128c6565b905092959194509250565b600080604083850312156129a757600080fd5b82359150602083013567ffffffffffffffff8111156129c557600080fd5b6129d18582860161281b565b9150509250929050565b6000602082840312156129ed57600080fd5b813567ffffffffffffffff811115612a0457600080fd5b6107b38482850161281b565b803573ffffffffffffffffffffffffffffffffffffffff81168114612a3457600080fd5b919050565b600080600060608486031215612a4e57600080fd5b83359250612a5e60208501612a10565b9150604084013567ffffffffffffffff811115612a7a57600080fd5b612a868682870161281b565b9150509250925092565b600060208284031215612aa257600080fd5b5035919050565b600080600060808486031215612abe57600080fd5b833567ffffffffffffffff80821115612ad657600080fd5b612ae28783880161281b565b94506020860135915080821115612af857600080fd5b50612b058682870161281b565b925050612b1585604086016128c6565b90509250925092565b60008060408385031215612b3157600080fd5b82359150612b4160208401612a10565b90509250929050565b60008060408385031215612b5d57600080fd5b612b6683612a10565b946020939093013593505050565b60008060408385031215612b8757600080fd5b612b9083612a10565b9150602083013567ffffffffffffffff8111156129c557600080fd5b60008060408385031215612bbf57600080fd5b50508035926020909101359150565b60008060008060a08587031215612be457600080fd5b843567ffffffffffffffff80821115612bfc57600080fd5b612c088883890161281b565b95506020870135915080821115612c1e57600080fd5b50612c2b8782880161281b565b935050612c3b86604087016128c6565b915061298960808601612a10565b600080600080600060c08688031215612c6157600080fd5b85359450602086013567ffffffffffffffff80821115612c8057600080fd5b612c8c89838a0161281b565b95506040880135915080821115612ca257600080fd5b50612caf8882890161281b565b935050612cbf87606088016128c6565b9150612ccd60a08701612a10565b90509295509295909350565b600080600060608486031215612cee57600080fd5b8335925060208401359150612b1560408501612a10565b60005b83811015612d20578181015183820152602001612d08565b50506000910152565b60008251612d3b818460208701612d05565b9190910192915050565b67ffffffffffffffff828116828216039080821115612d8d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260008251806040840152612dcf816060850160208701612d05565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c6343000817000a1ca005f70bf8a1493291468f36ef23b05eb3a4f1807f6b4022942a4104b7537bfc36a029528c0c29546c81e7d78b0277ef87031541bdc96427b246ecedb6d74cd3ed62"

ensure_createx_deployed() {
  local rpc_url=$1

  local existing_code
  if ! existing_code=$(cast code "$createx_address" --rpc-url "$rpc_url" 2>/dev/null); then
    echo "Warning: failed to fetch CreateX code on ${rpc_url}; skipping bootstrap." >&2
    return
  fi

  if [[ "$existing_code" == "0x" || "$existing_code" == "0x0" ]]; then
    echo "Bootstrapping CreateX on ${rpc_url}" >&2
    cast rpc --rpc-url "$rpc_url" anvil_setBalance "$createx_deployer" 10000000000000000000
    cast rpc --rpc-url "$rpc_url" anvil_setNonce "$createx_deployer" 0x0
    cast publish "$createx_tx" --rpc-url "$rpc_url"
  fi
}


run_contract_deploy() {
  local contract_key=$1
  local signature=$2
  local description=$3

  local chains=()
  while IFS= read -r line; do
    [[ -n "$line" ]] && chains+=("$line")
  done < <(get_contract_chains "$config_path" "$contract_key")

  if [[ ${#chains[@]} -eq 0 ]]; then
    echo "Skipping ${description}: no chains configured."
    return
  fi

  for chain_id in "${chains[@]}"; do
    local endpoint_url
    endpoint_url=$(get_chain_rpc_url "$config_path" "$chain_id")

    if [[ -z "$endpoint_url" ]]; then
      echo "Warning: no endpoint_url configured for chain ${chain_id}; skipping ${description}." >&2
      continue
    fi

    ensure_createx_deployed "$endpoint_url"

    echo "Running ${description} on chain ${chain_id} (rpc: ${endpoint_url})"
    cmd=(forge script "$script_path" --sig "$signature" --chain-id "$chain_id" --rpc-url "$endpoint_url")

    if [[ ${#extra_args[@]} -gt 0 ]]; then
      cmd+=("${extra_args[@]}")
    fi

    "${cmd[@]}"
  done
}

run_contract_deploy "keyRegistry" "runDeployKeyRegistry()" "KeyRegistry deployment"
run_contract_deploy "votingPowerProvider" "runDeployVotingPowerProvider()" "VotingPowerProvider deployment"
run_contract_deploy "settlement" "runDeploySettlement()" "Settlement deployment"
run_contract_deploy "valSetDriver" "runDeployValSetDriver()" "ValSetDriver deployment"
```

## File: script/RelayDeploy.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {Vm, VmSafe} from "forge-std/Vm.sol";
import {Script, console2} from "forge-std/Script.sol";
import {Config} from "forge-std/Config.sol";
import {Variable} from "forge-std/LibVariable.sol";
⋮----
import {CreateXWrapper} from "@symbioticfi/core/script/utils/CreateXWrapper.sol";
import {Logs} from "@symbioticfi/core/script/utils/Logs.sol";
import {SymbioticCoreConstants} from "@symbioticfi/core/test/integration/SymbioticCoreConstants.sol";
import {SymbioticCoreInit} from "@symbioticfi/core/script/integration/SymbioticCoreInit.sol";
import "@symbioticfi/core/test/integration/SymbioticCoreImports.sol";
⋮----
import {TransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
⋮----
import {IOpNetVaultAutoDeploy} from "../src/interfaces/modules/voting-power/extensions/IOpNetVaultAutoDeploy.sol";
import {VotingPowerProvider} from "../src/modules/voting-power/VotingPowerProvider.sol";
import {IValSetDriver} from "../src/interfaces/modules/valset-driver/IValSetDriver.sol";
⋮----
/**
 * @title RelayDeploy
 * @notice Abstract base contract for deploying relay contracts using CREATE3
 * @dev This contract provides a standardized deployment pattern for relay contracts
 *
 * The contract supports both guarded and non-guarded salt deployments.
 * See https://github.com/pcaversaccio/createx?tab=readme-ov-file#security-considerations
 *
 * This script requires a deployed CreateX instance.
 */
abstract contract RelayDeploy is SymbioticCoreInit, Config, CreateXWrapper {
⋮----
modifier loadConfig() {
⋮----
modifier withBroadcast() {
⋮----
modifier withoutBroadcast() {
⋮----
/**
     * @notice Returns deployment parameters for the KeyRegistry contract
     * @dev Must be implemented by concrete deployment contracts
     * @return implementation The implementation contract address
     * @return initData The initialization data for the proxy
     */
function _keyRegistryParams() internal virtual returns (address implementation, bytes memory initData);
⋮----
/**
     * @notice Returns deployment parameters for the VotingPowerProvider contract
     * @dev Must be implemented by concrete deployment contracts
     * @return implementation The implementation contract address
     * @return initData The initialization data for the proxy
     */
function _votingPowerProviderParams() internal virtual returns (address implementation, bytes memory initData);
⋮----
/**
     * @notice Returns deployment parameters for the Settlement contract
     * @dev Must be implemented by concrete deployment contracts
     * @return implementation The implementation contract address
     * @return initData The initialization data for the proxy
     */
function _settlementParams() internal virtual returns (address implementation, bytes memory initData);
⋮----
/**
     * @notice Returns deployment parameters for the ValSetDriver contract
     * @dev Must be implemented by concrete deployment contracts
     * @return implementation The implementation contract address
     * @return initData The initialization data for the proxy
     */
function _valSetDriverParams() internal virtual returns (address implementation, bytes memory initData);
⋮----
function runDeployKeyRegistry() public virtual;
⋮----
function runDeployVotingPowerProvider() public virtual;
⋮----
function runDeploySettlement() public virtual;
⋮----
function runDeployValSetDriver() public virtual;
⋮----
function getCore() public withoutBroadcast loadConfig returns (SymbioticCoreConstants.Core memory) {
⋮----
function getKeyRegistry()
⋮----
function getVotingPowerProvider() public virtual withoutBroadcast loadConfig returns (address) {
⋮----
function getVotingPowerProviders()
⋮----
function getSettlement() public virtual withoutBroadcast loadConfig returns (address) {
⋮----
function getSettlements()
⋮----
function getValSetDriver()
⋮----
/**
     * @notice Deploy the KeyRegistry contract using CREATE3
     * @dev Deploys a transparent upgradeable proxy for the KeyRegistry
     * @param proxyOwner The owner of the proxy contract
     * @param isDeployerGuarded Whether to deploy with guarded salt for enhanced security
     * @return The address of the deployed KeyRegistry contract
     */
function deployKeyRegistry(address proxyOwner, bool isDeployerGuarded, bytes11 salt)
⋮----
/**
     * @notice Deploy the VotingPowerProvider contract using CREATE3
     * @dev Deploys a transparent upgradeable proxy for the VotingPowerProvider
     * @param proxyOwner The owner of the proxy contract
     * @param isDeployerGuarded Whether to deploy with guarded salt for enhanced security
     * @return The address of the deployed VotingPowerProvider contract
     */
function deployVotingPowerProvider(address proxyOwner, bool isDeployerGuarded, bytes11 salt)
⋮----
// Validate deployment
⋮----
/**
     * @notice Deploy the Settlement contract using CREATE3
     * @dev Deploys a transparent upgradeable proxy for the Settlement
     * @param proxyOwner The owner of the proxy contract
     * @param isDeployerGuarded Whether to deploy with guarded salt for enhanced security
     * @return The address of the deployed Settlement contract
     */
function deploySettlement(address proxyOwner, bool isDeployerGuarded, bytes11 salt)
⋮----
/**
     * @notice Deploy the ValSetDriver contract using CREATE3
     * @dev Deploys a transparent upgradeable proxy for the ValSetDriver
     * @param proxyOwner The owner of the proxy contract
     * @param isDeployerGuarded Whether to deploy with guarded salt for enhanced security
     * @return The address of the deployed ValSetDriver contract
     */
function deployValSetDriver(address proxyOwner, bool isDeployerGuarded, bytes11 salt)
⋮----
/**
     * @notice Internal function to deploy a contract using CREATE3 with optional initialization
     * @dev Creates a transparent upgradeable proxy and optionally initializes it
     * @param salt The CREATE3 salt for deterministic deployment
     * @param implementation The implementation contract address
     * @param initData The initialization data for the proxy (empty bytes if no initialization)
     * @param owner The owner of the proxy contract
     * @param isDeployerGuarded Whether to use guarded salt deployment
     * @return The address of the deployed contract
     */
function _deployContract(
```

## File: snapshots/gas.txt

```
No files changed, compilation skipped

Ran 1 test for test/modules/common/permissions/NoPermissionManager.t.sol:NoPermissionManagerTest
[PASS] test_NoPermissionCheck() (gas: 29615)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 686.83µs (56.17µs CPU time)

Ran 5 tests for test/modules/base/NetworkManager.t.sol:NetworkManagerTest
[PASS] test_DefaultsBeforeInit() (gas: 23077)
[PASS] test_InitializeAndCheckGetters() (gas: 100114)
[PASS] test_Location() (gas: 522)
[PASS] test_ReinitializeReverts() (gas: 104707)
[PASS] test_RevertNetworkManager_InvalidNetwork() (gas: 123081)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 935.83µs (126.42µs CPU time)

Ran 12 tests for test/libraries/utils/KeyTag.t.sol:KeyTagTest
[PASS] test_AddMultiple() (gas: 1857)
[PASS] test_ContainsAddRemove() (gas: 1141)
[PASS] test_DeserializeBitmask() (gas: 31921)
[PASS] test_GetKeyTagInvalidIdentifier() (gas: 4264)
[PASS] test_GetKeyTagInvalidType() (gas: 4180)
[PASS] test_GetKeyTagValid() (gas: 453)
[PASS] test_GetTag() (gas: 441)
[PASS] test_GetTagRevertWhenTooLarge() (gas: 4046)
[PASS] test_GetType() (gas: 380)
[PASS] test_GetTypeRevertWhenTooLarge() (gas: 4081)
[PASS] test_SerializeRevertOnDuplicate() (gas: 6095)
[PASS] test_SerializeUniqueKeyTags() (gas: 3469)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 1.10ms (189.42µs CPU time)

Ran 6 tests for test/libraries/utils/ValSetVerifier.t.sol:ValSetVerifierDataTest
[PASS] test_VerifyIsActive() (gas: 426163)
[PASS] test_VerifyKey() (gas: 535824)
[PASS] test_VerifyOperator() (gas: 423655)
[PASS] test_VerifyOperatorVotingPower() (gas: 737726)
[PASS] test_VerifyVault() (gas: 688799)
[PASS] test_VerifyVotingPower() (gas: 424194)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 4.56ms (4.16ms CPU time)

Ran 4 tests for test/modules/base/VotingPowerCalcManager.t.sol:VotingPowerCalcManagerTest
[PASS] testReInitializeReverts() (gas: 31722)
[PASS] testStakeToVotingPower() (gas: 6387)
[PASS] testStakeToVotingPowerAt() (gas: 9400)
[PASS] testWithExtraData() (gas: 6595)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 358.33µs (56.08µs CPU time)

Ran 2 tests for test/modules/voting-power/common/voting-power-calc/VotingPowerCalcsComposition.t.sol:VotingPowerCalcsCompositionTest
[PASS] test_FactorsAppliedOnceWithStackedCalcs() (gas: 854497)
[PASS] test_NormalizationRunsOnceAcrossCalcs() (gas: 855421)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 510.92µs (210.13µs CPU time)

Ran 4 tests for test/modules/common/permissions/OzOwnable.t.sol:OzOwnableTest
[PASS] testProtectedAction_RevertsForNonOwner() (gas: 34468)
[PASS] testProtectedAction_SucceedsForOwner() (gas: 34042)
[PASS] testReinitializeReverts() (gas: 34167)
[PASS] testTransferOwnership() (gas: 91093)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 317.67µs (69.75µs CPU time)

Ran 2 tests for test/modules/base/PermissionManager.t.sol:PermissionManagerTest
[PASS] test_ProtectedAction_RevertIfNotOwner() (gas: 32486)
[PASS] test_ProtectedAction_SucceedsForOwner() (gas: 28627)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 245.79µs (23.92µs CPU time)

Ran 8 tests for test/libraries/structs/PersistentSet.t.sol:PersistentSetTest
[PASS] test_AddressSetAddRemoveAndContains() (gas: 204274)
[PASS] test_AddressSetAllValues() (gas: 185014)
[PASS] test_AddressSetLengthAndValuesAt() (gas: 239766)
[PASS] test_Bytes32SetAddRemoveAndContains() (gas: 221727)
[PASS] test_Bytes32SetAllValues() (gas: 184889)
[PASS] test_Bytes32SetValuesAt() (gas: 245622)
[PASS] test_LargeAddressSetExceed256Elements() (gas: 16698398)
[PASS] test_RevertPersistentSet_InvalidKey() (gas: 184062)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 5.24ms (5.00ms CPU time)

Ran 12 tests for test/libraries/keys/KeyEcdsaSecp256k1.t.sol:KeyEcdsaSecp256k1Test
[PASS] test_DeserializeRevertsIfNot20Bytes() (gas: 10139)
[PASS] test_Equal() (gas: 25457)
[PASS] test_EqualFalse() (gas: 25456)
[PASS] test_FromBytesRevertsIfNot20Bytes() (gas: 10138)
[PASS] test_FromBytesRevertsInvalidBytes() (gas: 12982)
[PASS] test_FuzzSerializeDeserialize(address) (runs: 1000, μ: 1171, ~: 1171)
[PASS] test_FuzzToBytesFromBytes(address) (runs: 1000, μ: 1513, ~: 1513)
[PASS] test_FuzzWrapUnwrap(address) (runs: 1000, μ: 685, ~: 685)
[PASS] test_SerializeDeserialize() (gas: 4798)
[PASS] test_ToBytesFromBytes() (gas: 5282)
[PASS] test_WrapUnwrap() (gas: 4363)
[PASS] test_ZeroKey() (gas: 5910)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 42.90ms (64.16ms CPU time)

Ran 8 tests for test/modules/settlement/Settlement.t.sol:SettlementRawTest
[PASS] testCommitValSetHeader_Basic() (gas: 1090366)
[PASS] testInitParams() (gas: 31814)
[PASS] testSetGenesis_Permission() (gas: 421045)
[PASS] testSetGenesis_Revert_ValSetHeaderAlreadySubmitted() (gas: 242926)
[PASS] testVersion() (gas: 5714)
[PASS] test_commitValSetHeader_VerificationFailed() (gas: 933990)
[PASS] test_setSigVerifier() (gas: 331812)
[PASS] test_setSigVerifier_Revert_InvalidSigVerifier() (gas: 34441)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 2.81ms (1.90ms CPU time)

Ran 21 tests for test/libraries/keys/KeyBlsBn254.t.sol:KeyBlsBn254Test
[PASS] test_DeserializeEmptyBytesIsIdentity() (gas: 893)
[PASS] test_DeserializeRevertsInvalidLength() (gas: 10314)
[PASS] test_Equal() (gas: 19779)
[PASS] test_EqualFalse() (gas: 24066)
[PASS] test_FromBytesRevertsInvalidBytes() (gas: 13146)
[PASS] test_FromBytesRevertsInvalidLength() (gas: 10338)
[PASS] test_FuzzSerializeDeserialize(uint256) (runs: 1000, μ: 5467, ~: 2626)
[PASS] test_FuzzSerializeDeserializeNonZeroNegate(uint256) (runs: 1000, μ: 5955, ~: 9120)
[PASS] test_FuzzToBytesFromBytes(uint256) (runs: 1000, μ: 3791, ~: 2648)
[PASS] test_FuzzWrapUnwrap(uint256) (runs: 1000, μ: 3063, ~: 3440)
[PASS] test_OutOfBounds() (gas: 29927)
[PASS] test_SerializeDeserializeIdentity() (gas: 1399)
[PASS] test_SerializeDeserializeNonZero() (gas: 8155)
[PASS] test_SerializeDeserializeNonZeroNegate() (gas: 8997)
[PASS] test_SerializeRevertsInvalidKey() (gas: 12594)
[PASS] test_ToBytesFromBytesIdentity() (gas: 2264)
[PASS] test_ToBytesFromBytesNonZero() (gas: 4799)
[PASS] test_WrapRevertsInvalidKey(uint256) (runs: 1000, μ: 12833, ~: 12833)
[PASS] test_WrapUnwrapIdentity() (gas: 839)
[PASS] test_WrapUnwrapNonZero() (gas: 3231)
[PASS] test_ZeroKey() (gas: 6278)
Suite result: ok. 21 passed; 0 failed; 0 skipped; finished in 156.29ms (305.40ms CPU time)

Ran 6 tests for test/modules/common/permissions/OzAccessControl.t.sol:OzAccessControlTest
[PASS] testChangeRoleForProtectedFunction() (gas: 137387)
[PASS] testGetRoleForFunctionSelector() (gas: 69891)
[PASS] testProtectedFunction_RevertIfCallerDoesNotHaveRole() (gas: 36907)
[PASS] testSetNoRoleForSelector() (gas: 92605)
[PASS] test_Location() (gas: 458)
[PASS] test_ProtectedFunction_DefaultAdminCanCall() (gas: 31147)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 401.79µs (121.42µs CPU time)

Ran 3 tests for test/modules/common/permissions/OzAccessManaged.t.sol:OzAccessManagedTest
[PASS] testCannotChangeAuthority() (gas: 32030)
[PASS] testProtectedAction_RevertsForNonAdmin() (gas: 40324)
[PASS] testProtectedAction_SucceedsForAdmin() (gas: 39882)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 291.08µs (46.67µs CPU time)

Ran 5 tests for test/modules/base/OzEIP712.t.sol:OzEIP712Test
[PASS] test_HashTypedDataV4() (gas: 124325)
[PASS] test_InitializeSetsDomain() (gas: 125749)
[PASS] test_Location() (gas: 525)
[PASS] test_ReInitialize() (gas: 134135)
[PASS] test_SignatureRecovery() (gas: 122289)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 541.92µs (297.29µs CPU time)

Ran 6 tests for test/libraries/utils/InputNormalizer.t.sol:InputNormalizerTest
[PASS] test_normalizeDoubleDimEmpty() (gas: 1701)
[PASS] test_normalizeDoubleDimExact() (gas: 7134)
[PASS] test_normalizeDoubleDimMismatchRevert() (gas: 10039)
[PASS] test_normalizeSingleDimEmpty() (gas: 2037)
[PASS] test_normalizeSingleDimExact() (gas: 6924)
[PASS] test_normalizeSingleDimMismatchRevert() (gas: 9196)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 316.96µs (98.33µs CPU time)

Ran 12 tests for test/modules/voting-power/extensions/OpNetVaultAutoDeploy.t.sol:OpNetVaultAutoDeployTest
[PASS] test_AutoDeployOnRegister() (gas: 1775847)
[PASS] test_AutoDeployOnRegister_SetMaxNetworkLimitHook() (gas: 1522149)
[PASS] test_AutoDeployOnRegister_WithoutSlasher() (gas: 1298671)
[PASS] test_BasicFlags() (gas: 38675)
[PASS] test_Location() (gas: 547)
[PASS] test_SetAutoDeployConfig_InvalidBurnerHook() (gas: 83764)
[PASS] test_SetAutoDeployConfig_InvalidBurnerParamsWithSlasher() (gas: 81640)
[PASS] test_SetAutoDeployConfig_InvalidCollateral() (gas: 39635)
[PASS] test_SetAutoDeployConfig_InvalidEpochDurationLessThanMinVaultEpochDuration() (gas: 62245)
[PASS] test_SetAutoDeployConfig_InvalidEpochDurationZero() (gas: 39940)
[PASS] test_SetAutoDeployConfig_InvalidWithSlasher() (gas: 48729)
[PASS] test_SetAutoDeployStatus() (gas: 59408)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 208.82ms (21.75ms CPU time)

Ran 2 tests for test/modules/voting-power/extensions/MultiToken.t.sol:MultiTokenTest
[PASS] test_RegisterToken_OnlyOwnerCanCall() (gas: 85980)
[PASS] test_RegisterUnregisterToken_VaultManagerSide() (gas: 189914)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 212.77ms (1.92ms CPU time)

Ran 10 tests for test/modules/voting-power/extensions/BaseSlashing.t.sol:BaseSlashingTest
[PASS] test_ExecuteSlashVaul_NotVetoSlasher() (gas: 489962)
[PASS] test_ExecuteSlashVault_NoSlasher() (gas: 1398945)
[PASS] test_Location() (gas: 569)
[PASS] test_RevertWhen_SlashVault_NoSlashing() (gas: 497850)
[PASS] test_RevertWhen_SlashVault_UnknownSlasherType() (gas: 513933)
[PASS] test_SlashVault() (gas: 925817)
[PASS] test_SlashVaultUnsafe() (gas: 1853589)
[PASS] test_SlashVault_EpochDurationPassed() (gas: 519798)
[PASS] test_SlashVault_VetoSlasher() (gas: 3622315)
[PASS] test_SlashVault_WithHints() (gas: 892970)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 222.46ms (6.87ms CPU time)

Ran 6 tests for test/modules/voting-power/extensions/OperatorsJail.t.sol:OperatorsJailTest
[PASS] test_BasicEnvironment() (gas: 10198)
[PASS] test_JailOperator() (gas: 532213)
[PASS] test_JailOperator_RevertIfAlreadyJailed() (gas: 137444)
[PASS] test_Location() (gas: 526)
[PASS] test_UnjailOperator() (gas: 283471)
[PASS] test_UnjailOperator_RevertIfNotJailed() (gas: 34416)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 223.83ms (1.98ms CPU time)

Ran 3 tests for test/modules/voting-power/extensions/BaseRewards.t.sol:BaseRewardsTest
[PASS] test_Location() (gas: 569)
[PASS] test_OperatorRewards() (gas: 991074)
[PASS] test_StakerRewards() (gas: 1278970)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 255.89ms (2.09ms CPU time)

Ran 2 tests for test/modules/voting-power/extensions/SharedVaults.t.sol:SharedVaultsTest
[PASS] test_RegisterSharedVault_OnlyOwnerCanCall() (gas: 180177)
[PASS] test_RegisterUnregisterSharedVault_VaultManagerSide() (gas: 279858)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 243.98ms (643.00µs CPU time)

Ran 22 tests for test/libraries/keys/KeyBlsBls12381.t.sol:KeyBlsBls12381Test
[PASS] test_DeserializeRevertsInvalidLength() (gas: 10535)
[PASS] test_DeserializeZeroFromEmpty() (gas: 1806)
[PASS] test_Equal() (gas: 49612)
[PASS] test_EqualFalse() (gas: 49942)
[PASS] test_FromBytesRevertsInvalidBytes() (gas: 42869)
[PASS] test_FromBytesRevertsInvalidKey() (gas: 14559)
[PASS] test_FromBytesRevertsInvalidLength() (gas: 10560)
[PASS] test_OutOfBounds() (gas: 10660)
[PASS] test_SerializeDeserializeGenerator() (gas: 36041)
[PASS] test_SerializeDeserializeNegated() (gas: 36041)
[PASS] test_SerializeDeserializeZero() (gas: 2664)
[PASS] test_SerializeSetsSignBit() (gas: 51507)
[PASS] test_ToBytesFromBytesGenerator() (gas: 31954)
[PASS] test_ToBytesFromBytesZero() (gas: 3180)
[PASS] test_WrapRevertsForTorsionPoint() (gas: 17874786921033479948)
[PASS] test_WrapRevertsInvalidKey() (gas: 13347)
[PASS] test_WrapRevertsNonSubgroupPoint() (gas: 17874786921033479939)
[PASS] test_WrapRevertsWhenSubgroupCheckReturnsNonZero() (gas: 17733)
[PASS] test_WrapUnwrapGenerator() (gas: 16208)
[PASS] test_WrapUnwrapGoKey() (gas: 22802)
[PASS] test_WrapUnwrapZero() (gas: 1287)
[PASS] test_ZeroKey() (gas: 6850)
Suite result: ok. 22 passed; 0 failed; 0 skipped; finished in 141.52ms (141.25ms CPU time)

Ran 7 tests for test/libraries/sigs/SigBlsBn12381.t.sol:SigBlsBls12381Test
[PASS] test_InvalidMessageLength() (gas: 8719)
[PASS] test_VerifyInvalidSignature() (gas: 401757)
[PASS] test_VerifyMismatchedG2() (gas: 401834)
[PASS] test_VerifyRejectsZeroSignature() (gas: 370511)
[PASS] test_VerifyValidSignature() (gas: 401766)
[PASS] test_VerifyValidSignature_GoReference() (gas: 342537)
[PASS] test_VerifyZeroKey() (gas: 24770)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 305.04ms (304.59ms CPU time)

Ran 4 tests for test/libraries/sigs/SigBlsBn254.t.sol:SigBlsBn254Test
[PASS] test_BLSRegisterOperator() (gas: 1121825)
[PASS] test_BLSRegisterOperatorInvalid() (gas: 1121897)
[PASS] test_InvalidMessageLength() (gas: 7664)
[PASS] test_ZeroKey() (gas: 5008)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 8.85ms (8.58ms CPU time)

Ran 7 tests for test/modules/settlement/sig-verifiers/libraries/ExtraDataStorageHelper.t.sol:ExtraDataStorageHelperTest
[PASS] testFuzz_Uniqueness(uint32,uint32,uint8,uint8,bytes32,bytes32,uint256,uint256) (runs: 1000, μ: 9120, ~: 9066)
[PASS] test_BaseKey() (gas: 1081)
[PASS] test_IndexedKey() (gas: 4680)
[PASS] test_IndexedTagOnlyKey() (gas: 4441)
[PASS] test_SimpleKey() (gas: 1018)
[PASS] test_TagOnlyKey() (gas: 1151)
[PASS] test_TaggedKey() (gas: 1572)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 159.66ms (159.51ms CPU time)

Ran 18 tests for test/modules/valset-driver/EpochManager.t.sol:EpochManagerTest
[PASS] test_AdvanceTimeAndCheckEpoch() (gas: 220115)
[PASS] test_DirectSetEpochDuration() (gas: 247263)
[PASS] test_GetCurrentEpochDurationData() (gas: 163879)
[PASS] test_GetCurrentValue_MultipleCheckpoints() (gas: 260317)
[PASS] test_GetCurrentValue_NoCheckpoint() (gas: 10727)
[PASS] test_GetCurrentValue_SingleCheckpoint() (gas: 102941)
[PASS] test_GetEpochDurationAndStart() (gas: 446331)
[PASS] test_GetEpochDurationDataByIndex() (gas: 152588)
[PASS] test_GetEpochDurationDataByTimestamp() (gas: 152968)
[PASS] test_GetEpochIndex() (gas: 152595)
[PASS] test_GetEpochIndex_RevertIfTooOldTimestamp() (gas: 167677)
[PASS] test_Initialize_RevertOnPastTimestamp() (gas: 54167)
[PASS] test_Initialize_RevertOnZeroEpochDuration() (gas: 53817)
[PASS] test_Initialize_SetsEpochDuration() (gas: 248904)
[PASS] test_Initialize_SetsEpochDuration_WithZeroTimestamp() (gas: 217372)
[PASS] test_SerializeDeserializeEpochDurationData() (gas: 12310)
[PASS] test_SetEpochDuration_RevertIfIndexLessThanCurrent() (gas: 301709)
[PASS] test_SetEpochDuration_RevertOnZeroDuration() (gas: 180403)
Suite result: ok. 18 passed; 0 failed; 0 skipped; finished in 1.27ms (919.42µs CPU time)

Ran 1 test for test/modules/voting-power/extensions/EqualStakeVPCalc.t.sol:EqualStakeVPCalcTest
[PASS] test_create() (gas: 143)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 199.79µs (4.67µs CPU time)

Ran 3 tests for test/modules/voting-power/common/voting-power-calc/NormalizedTokenDecimalsVPCalc.t.sol:NormalizedTokenDecimalsVPCalcTest
[PASS] test_CheckStakes_18() (gas: 85210948)
[PASS] test_CheckStakes_24() (gas: 85226149)
[PASS] test_CheckStakes_8() (gas: 85226886)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 387.84ms (181.30ms CPU time)

Ran 1 test for test/modules/voting-power/extensions/OperatorVaults.t.sol:OperatorVaultsTest
[PASS] test_RegisterOperatorVault_OnlyOwnerCanCall() (gas: 2002389)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 223.90ms (856.00µs CPU time)

Ran 11 tests for test/modules/voting-power/extensions/OperatorsWhitelist.t.sol:OperatorsWhitelistTest
[PASS] test_DisableWhitelistAndRegister() (gas: 190986)
[PASS] test_DisableWhitelistAndRegisterOperatorVault() (gas: 471111)
[PASS] test_Location() (gas: 569)
[PASS] test_RegisterOperator_RevertIfNotWhitelisted() (gas: 36811)
[PASS] test_SetWhitelistStatus_RevertIfAlreadySet() (gas: 138365)
[PASS] test_SetWhitelistStatus_RevertIfNotWhitelisted() (gas: 36503)
[PASS] test_UnwhitelistOperator_RegisteredOperatorGetsUnregistered() (gas: 311437)
[PASS] test_UnwhitelistOperator_RevertIfNotWhitelisted() (gas: 34355)
[PASS] test_WhitelistEnabledByDefault() (gas: 7738)
[PASS] test_WhitelistOperatorAndRegister() (gas: 223187)
[PASS] test_WhitelistOperator_RevertIfAlreadyWhitelisted() (gas: 80347)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 218.75ms (2.88ms CPU time)

Ran 15 tests for test/modules/valset-driver/ValSetDriver.t.sol:ValSetDriverTest
[PASS] test_AddRemoveQuorumThreshold() (gas: 456299)
[PASS] test_AddRemoveSettlement() (gas: 481350)
[PASS] test_AddRemoveVotingPowerProvider() (gas: 353584)
[PASS] test_GetValSetConfig() (gas: 135827)
[PASS] test_InitialConfig() (gas: 422994)
[PASS] test_Location() (gas: 567)
[PASS] test_PermissionChecks() (gas: 278530)
[PASS] test_SetCommitterSlotDuration() (gas: 620467)
[PASS] test_SetKeysProvider() (gas: 100058)
[PASS] test_SetNumAggregators() (gas: 668960)
[PASS] test_SetNumCommitters() (gas: 669319)
[PASS] test_SetVerificationType() (gas: 75756)
[PASS] test_TimeBasedConfig() (gas: 119064)
[PASS] test_TimeBasedQueries() (gas: 385230)
[PASS] test_UpdateAllConfigs() (gas: 1104867)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 4.25ms (3.61ms CPU time)

Ran 21 tests for test/examples/MyVotingPowerProvider.t.sol:MyVotingPowerProviderTest
[PASS] testGetOperatorsAt_withTime() (gas: 472784)
[PASS] test_CheckStakes() (gas: 101935484)
[PASS] test_DistributeRewards() (gas: 207)
[PASS] test_IncreaseNonce() (gas: 66627)
[PASS] test_IsOperatorRegisteredAt_withTime() (gas: 195985)
[PASS] test_RegisterOperator() (gas: 1745463)
[PASS] test_RegisterOperatorValid() (gas: 162784)
[PASS] test_RegisterOperatorVault() (gas: 1911716)
[PASS] test_RegisterOperatorVaultExternal() (gas: 1791681)
[PASS] test_RegisterOperatorVault_RevertIfOperatorNotRegistered() (gas: 1344933)
[PASS] test_RegisterOperator_RevertIfAlreadyRegistered() (gas: 192924)
[PASS] test_RegisterOperator_RevertIfNotEntity() (gas: 41922)
[PASS] test_SlashVault_InstantSlasher() (gas: 252)
[PASS] test_SlashVault_RevertIfNoSlasher() (gas: 251)
[PASS] test_SlashVault_VetoSlasherFlow() (gas: 188)
[PASS] test_SlashingData() (gas: 50917)
[PASS] test_UnregisterOperator() (gas: 286328)
[PASS] test_UnregisterOperator_RevertIfNotRegistered() (gas: 40281)
[PASS] test_registerOperatorWithSignature() (gas: 1654031)
[PASS] test_registerOperatorWithSignature_RevertIfInvalidSig() (gas: 1221536)
[PASS] test_unregisterOperatorWithSignature() (gas: 292362)
Suite result: ok. 21 passed; 0 failed; 0 skipped; finished in 316.46ms (80.24ms CPU time)

Ran 30 tests for test/modules/voting-power/VotingPowerProvider.t.sol:VotingPowerProviderTest
[PASS] testGetOperatorsAt_withTime() (gas: 449003)
[PASS] test_CheckStakes() (gas: 320741338)
[PASS] test_DistributeRewards() (gas: 229)
[PASS] test_IncreaseNonce() (gas: 66499)
[PASS] test_IsOperatorRegisteredAt_withTime() (gas: 173206)
[PASS] test_Location() (gas: 611)
[PASS] test_RegisterOperator() (gas: 1860486)
[PASS] test_RegisterOperatorValid() (gas: 137749)
[PASS] test_RegisterOperatorVault() (gas: 2002137)
[PASS] test_RegisterOperatorVaultExternal() (gas: 1903865)
[PASS] test_RegisterOperatorVault_RevertIfOperatorNotRegistered() (gas: 1455863)
[PASS] test_RegisterOperator_RevertIfAlreadyRegistered() (gas: 169881)
[PASS] test_RegisterOperator_RevertIfNotEntity() (gas: 41446)
[PASS] test_RegisterSharedVault() (gas: 624131)
[PASS] test_RegisterSharedVault_RevertIfInvalidVault() (gas: 41387)
[PASS] test_RegisterSharedVault_RevertIfTokenNotRegistered() (gas: 11636850)
[PASS] test_RegisterToken() (gas: 539767)
[PASS] test_RegisterToken_RevertOnZeroAddress() (gas: 35174)
[PASS] test_SlashVault_InstantSlasher() (gas: 185)
[PASS] test_SlashVault_RevertIfNoSlasher() (gas: 273)
[PASS] test_SlashVault_VetoSlasherFlow() (gas: 277)
[PASS] test_SlashingData() (gas: 127991)
[PASS] test_UnregisterOperator() (gas: 263856)
[PASS] test_UnregisterOperator_RevertIfNotRegistered() (gas: 39873)
[PASS] test_UnregisterToken() (gas: 232892)
[PASS] test_ValidateVault() (gas: 1320114)
[PASS] test_ValidateVaultSlashingFailsIfLessThanMinVaultEpochDuration() (gas: 1311034)
[PASS] test_registerOperatorWithSignature() (gas: 1766424)
[PASS] test_registerOperatorWithSignature_RevertIfInvalidSig() (gas: 1221452)
[PASS] test_unregisterOperatorWithSignature() (gas: 292511)
Suite result: ok. 30 passed; 0 failed; 0 skipped; finished in 527.02ms (347.14ms CPU time)

Ran 13 tests for test/libraries/utils/BN12381.t.sol:BLS12381UtilsTest
[PASS] test_ExpandMsg_RevertsWhenDomainTooLong() (gas: 12474)
[PASS] test_FindYFromX_MatchesGenerator() (gas: 9765)
[PASS] test_GoGeneratorG1_MatchesSolidity() (gas: 8460)
[PASS] test_GoGeneratorG2_MatchesSolidity() (gas: 9136)
[PASS] test_GoHashToG1_MatchesSolidity() (gas: 27285)
[PASS] test_GoScalarMulG1_MatchesSolidity() (gas: 20750)
[PASS] test_HashToG1_OnCurveAndNonZero() (gas: 20647)
[PASS] test_IsInSubgroup_RevertsForTorsionPoint() (gas: 17874786921033478720)
[PASS] test_IsOnCurve_Generator() (gas: 1891)
[PASS] test_IsOnCurve_ReturnsFalseForTweakedPoint() (gas: 2042)
[PASS] test_Negate_GeneratorMatchesKnownNegation() (gas: 1804)
[PASS] test_XCubePlus4_NoCarryBorrowZeroBranch() (gas: 13058)
[PASS] test_XCubePlus4_ReducesModPrime() (gas: 6496)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 601.06ms (600.34ms CPU time)

Ran 6 tests for test/modules/voting-power/extensions/OperatorsBlacklist.t.sol:OperatorsBlacklistTest
[PASS] test_BasicEnvironment() (gas: 10071)
[PASS] test_BlacklistOperator() (gas: 322432)
[PASS] test_BlacklistOperator_RevertIfAlreadyBlacklisted() (gas: 95998)
[PASS] test_Location() (gas: 504)
[PASS] test_UnblacklistOperator() (gas: 255902)
[PASS] test_UnblacklistOperator_RevertIfNotBlacklisted() (gas: 34324)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 213.97ms (1.65ms CPU time)

Ran 14 tests for test/modules/key-registry/KeyRegistry.t.sol:KeyRegistryTest
[PASS] test_GetKeysAt_TimeCheckpoints() (gas: 850970)
[PASS] test_GetKeysOperators_MultipleOperators() (gas: 1047069)
[PASS] test_GetOperator_UnknownKey() (gas: 8664)
[PASS] test_Location() (gas: 611)
[PASS] test_SetBLSKey() (gas: 871389)
[PASS] test_SetBlsBls12381Key1() (gas: 742430)
[PASS] test_SetBlsBls12381Key_RevertInvalidSignature() (gas: 269330)
[PASS] test_SetECDSAKey() (gas: 500563)
[PASS] test_SetECDSAKey_RevertOnInvalidSignature() (gas: 61683)
[PASS] test_SetKey64() (gas: 504003)
[PASS] test_SetKey_AlreadyUsedKeyDifferentOperator() (gas: 400721)
[PASS] test_SetKey_RevertOnInvalidKeyType() (gas: 41015)
[PASS] test_SetKey_SameOperatorDifferentTags() (gas: 623823)
[PASS] test_SetKey_SameOperatorSameTag_Overwrite() (gas: 502258)
Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 682.97ms (683.64ms CPU time)

Ran 3 tests for test/modules/voting-power/common/voting-power-calc/WeightedTokensVPCalc.t.sol:WeightedTokensVPCalcTest
[PASS] test_CheckStakesTokenWeight() (gas: 89756882)
[PASS] test_SetTokenWeight_RevertIfTooLarge() (gas: 99727)
[PASS] test_StakeToVotingPowerAt_UsesHistoricalTokenWeightAndNormalization() (gas: 8188638)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 212.82ms (47.01ms CPU time)

Ran 4 tests for test/modules/voting-power/common/voting-power-calc/WeightedVaultsVPCalc.t.sol:WeightedVaultsVPCalcTest
[PASS] test_CheckStakesVaultWeight() (gas: 85488700)
[PASS] test_GetVaultWeightAt_UsesHistoricalVaultWeight() (gas: 6775516)
[PASS] test_SetVaultWeight_RevertIfTooLarge() (gas: 99612)
[PASS] test_StakeToVotingPowerAt_UsesHistoricalVaultWeight() (gas: 8003092)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 191.87ms (42.51ms CPU time)

Ran 14 tests for test/modules/settlement/sig-verifiers/SigVerifierBlsBn254Simple.t.sol:SigVerifierBlsBn254SimpleTest
[PASS] test_FalseQuorumThreshold() (gas: 30816733)
[PASS] test_FalseValidatorSet() (gas: 34856677)
[PASS] test_RevertInvalidMessageLength() (gas: 34848656)
[PASS] test_RevertInvalidNonSignerIndex() (gas: 34855641)
[PASS] test_RevertInvalidNonSignersOrder() (gas: 34875207)
[PASS] test_RevertInvalidProofLength() (gas: 34843094)
[PASS] test_RevertInvalidProofOffset() (gas: 34867909)
[PASS] test_RevertTooManyValidators() (gas: 34848638)
[PASS] test_RevertUnsupportedKeyTag() (gas: 34848452)
[PASS] test_Revert_InvalidNonSignersOrder() (gas: 34866543)
[PASS] test_ZeroValidators() (gas: 18245888)
[PASS] test_verifyQuorumSig1() (gas: 35085442)
[PASS] test_verifyQuorumSig2() (gas: 39459801)
[PASS] test_verifyQuorumSig3() (gas: 33444511)
Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 1.51s (1.27s CPU time)

Ran 13 tests for test/modules/settlement/sig-verifiers/SigVerifierBlsBn254ZK.t.sol:SigVerifierBlsBn254ZKTest
[PASS] test_Create() (gas: 4410955)
[PASS] test_FalseQuorumThreshold() (gas: 6974024)
[PASS] test_RevertInvalidLength() (gas: 4273)
[PASS] test_RevertInvalidTotalActiveValidators() (gas: 7232585)
[PASS] test_Revert_InvalidMaxValidators() (gas: 4411164)
[PASS] test_Revert_InvalidMaxValidatorsOrder() (gas: 4411206)
[PASS] test_Revert_InvalidMessageLength() (gas: 4428578)
[PASS] test_Revert_InvalidProofLength() (gas: 4434702)
[PASS] test_Revert_InvalidVerifier() (gas: 2943085)
[PASS] test_Revert_UnsupportedKeyTag() (gas: 4428427)
[PASS] test_ZeroValidators() (gas: 7245588)
[PASS] test_verifyQuorumSig() (gas: 7340626)
[PASS] test_verifyQuorumSig_FalseZkProof() (gas: 17595493375392677030)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 8.10s (38.35ms CPU time)

Ran 10 tests for test/libraries/structs/Checkpoints.t.sol:CheckpointsTrace208Test
[PASS] testAt(uint48[],uint208[],uint32) (runs: 1000, μ: 4790136, ~: 5051385)
[PASS] testLatest(uint48[],uint208[]) (runs: 1000, μ: 4758401, ~: 5088928)
[PASS] testLatestCheckpoint(uint48[],uint208[]) (runs: 1000, μ: 4796923, ~: 5020889)
[PASS] testLength(uint48[],uint208[]) (runs: 1000, μ: 4763080, ~: 5101460)
[PASS] testLookup(uint48[],uint208[],uint48) (runs: 1000, μ: 4625257, ~: 4867462)
[PASS] testPop(uint48[],uint208[]) (runs: 1000, μ: 2679909, ~: 2359272)
[PASS] testPush(uint48[],uint208[],uint48) (runs: 1000, μ: 5135121, ~: 5365318)
[PASS] testUpperLookupRecentCheckpoint(uint48[],uint208[],uint48) (runs: 1000, μ: 4918759, ~: 5217124)
[PASS] testUpperLookupRecentCheckpointWithHint(uint48[],uint208[],uint48,uint32) (runs: 1000, μ: 4629854, ~: 4893185)
[PASS] testUpperLookupRecentWithHint(uint48[],uint208[],uint48,uint32) (runs: 1000, μ: 4744786, ~: 5153499)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 8.62s (28.81s CPU time)

Ran 5 tests for test/modules/voting-power/common/voting-power-calc/PricedTokensChainlinkVPCalc.t.sol:PricedTokensChainlinkVPCalcTest
[PASS] test_ChainlinkCalcTracksRealPrice() (gas: 427075397)
[PASS] test_ChainlinkCalcTracksRealPriceHistorical() (gas: 169055795)
[PASS] test_ChainlinkCalcTracksRealPriceHistoricalZero() (gas: 144735109)
[PASS] test_ChainlinkCalcTracksRealPriceStale() (gas: 425403752)
[PASS] test_ChainlinkCalcTracksRealPriceWithInvert() (gas: 426710106)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 9.69s (18.79s CPU time)

Ran 10 tests for test/libraries/structs/Checkpoints.t.sol:CheckpointsTrace256Test
[PASS] testAt(uint48[],uint256[],uint32) (runs: 1000, μ: 8734193, ~: 9319525)
[PASS] testLatest(uint48[],uint256[]) (runs: 1000, μ: 8549675, ~: 9110382)
[PASS] testLatestCheckpoint(uint48[],uint256[]) (runs: 1000, μ: 8549351, ~: 9084131)
[PASS] testLength(uint48[],uint256[]) (runs: 1000, μ: 8559584, ~: 9038619)
[PASS] testLookup(uint48[],uint256[],uint48) (runs: 1000, μ: 8512508, ~: 9064031)
[PASS] testPop(uint48[],uint256[]) (runs: 1000, μ: 4475446, ~: 3834743)
[PASS] testPush(uint48[],uint256[],uint48) (runs: 1000, μ: 9048049, ~: 9668830)
[PASS] testUpperLookupRecentCheckpoint(uint48[],uint256[],uint48) (runs: 1000, μ: 8727948, ~: 9301647)
[PASS] testUpperLookupRecentCheckpointWithHint(uint48[],uint256[],uint48,uint32) (runs: 1000, μ: 8391456, ~: 8890273)
[PASS] testUpperLookupRecentWithHint(uint48[],uint256[],uint48,uint32) (runs: 1000, μ: 8503832, ~: 8917909)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 9.84s (38.16s CPU time)

Ran 10 tests for test/libraries/structs/Checkpoints.t.sol:CheckpointsTrace512Test
[PASS] testAt(uint48[],uint256[],uint32) (runs: 1000, μ: 12837842, ~: 13658421)
[PASS] testLatest(uint48[],uint256[]) (runs: 1000, μ: 12649640, ~: 13349565)
[PASS] testLatestCheckpoint(uint48[],uint256[]) (runs: 1000, μ: 12647587, ~: 13564964)
[PASS] testLength(uint48[],uint256[]) (runs: 1000, μ: 12257851, ~: 13032053)
[PASS] testLookup(uint48[],uint256[],uint48) (runs: 1000, μ: 12316268, ~: 12874336)
[PASS] testPop(uint48[],uint256[]) (runs: 1000, μ: 6223656, ~: 5597388)
[PASS] testPush(uint48[],uint256[],uint48) (runs: 1000, μ: 13315998, ~: 14094701)
[PASS] testUpperLookupRecentCheckpoint(uint48[],uint256[],uint48) (runs: 1000, μ: 12484698, ~: 13183319)
[PASS] testUpperLookupRecentCheckpointWithHint(uint48[],uint256[],uint48,uint32) (runs: 1000, μ: 12366302, ~: 13039492)
[PASS] testUpperLookupRecentWithHint(uint48[],uint256[],uint48,uint32) (runs: 1000, μ: 12289554, ~: 12819102)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 10.44s (44.48s CPU time)

Ran 5 tests for test/libraries/sigs/SigEcdsaSecp256k1.t.sol:SigEcdsaSecp256k1Test
[PASS] test_CorrectSignature() (gas: 13094)
[PASS] test_FuzzVerification(uint256,bytes) (runs: 1000, μ: 16860, ~: 16825)
[PASS] test_IncorrectSignature() (gas: 22938)
[PASS] test_InvalidMessageLength() (gas: 6500)
[PASS] test_ZeroKey() (gas: 2104)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 10.25s (10.25s CPU time)

╭---------------------------------------------------+-----------------+--------+--------+--------+---------╮
| examples/MyKeyRegistry.sol:MyKeyRegistry Contract |                 |        |        |        |         |
+==========================================================================================================+
| Deployment Cost                                   | Deployment Size |        |        |        |         |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
| 4702605                                           | 21526           |        |        |        |         |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                   |                 |        |        |        |         |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                     | Min             | Avg    | Median | Max    | # Calls |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
| hashTypedDataV4                                   | 6730            | 6730   | 6730   | 6730   | 4588    |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                        | 101091          | 101091 | 101091 | 101091 | 149     |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
| setKey                                            | 414935          | 418347 | 417209 | 453694 | 4588    |
╰---------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-------------------------------------------------+-----------------+--------+--------+--------+---------╮
| examples/MySettlement.sol:MySettlement Contract |                 |        |        |        |         |
+========================================================================================================+
| Deployment Cost                                 | Deployment Size |        |        |        |         |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| 2844085                                         | 12934           |        |        |        |         |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                 |                 |        |        |        |         |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                   | Min             | Avg    | Median | Max    | # Calls |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| SET_GENESIS_ROLE                                | 316             | 316    | 316    | 316    | 40      |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| VALIDATOR_SET_VERSION                           | 293             | 293    | 293    | 293    | 13      |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| getExtraDataAt                                  | 2699            | 2699   | 2699   | 2699   | 29      |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| getLastCommittedHeaderEpoch                     | 2417            | 2417   | 2417   | 2417   | 16      |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| getSigVerifier                                  | 7624            | 7624   | 7624   | 7624   | 31      |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| getTotalVotingPowerFromValSetHeaderAt           | 2666            | 2666   | 2666   | 2666   | 5       |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| grantRole                                       | 51664           | 51664  | 51664  | 51664  | 40      |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                      | 245046          | 245053 | 245046 | 245070 | 40      |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| setGenesis                                      | 156404          | 173786 | 174424 | 174436 | 28      |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| verifyQuorumSig                                 | 15379           | 44448  | 15918  | 218376 | 9       |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| verifyQuorumSigAt                               | 217091          | 232502 | 236873 | 243542 | 3       |
╰-------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-----------------------------------------------------+-----------------+---------+---------+---------+---------╮
| examples/MyValSetDriver.sol:MyValSetDriver Contract |                 |         |         |         |         |
+===============================================================================================================+
| Deployment Cost                                     | Deployment Size |         |         |         |         |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
| 3833743                                             | 19175           |         |         |         |         |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
|                                                     |                 |         |         |         |         |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name                                       | Min             | Avg     | Median  | Max     | # Calls |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
| MAX_QUORUM_THRESHOLD                                | 306             | 306     | 306     | 306     | 13      |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
| getCurrentEpoch                                     | 5840            | 5840    | 5840    | 5840    | 13      |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
| getCurrentEpochStart                                | 7527            | 7527    | 7527    | 7527    | 13      |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
| getEpochStart                                       | 6143            | 6143    | 6143    | 6143    | 43      |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
| getQuorumThresholds                                 | 10901           | 10901   | 10901   | 10901   | 13      |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
| getRequiredHeaderKeyTag                             | 4845            | 4845    | 4845    | 4845    | 13      |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
| initialize                                          | 1378966         | 1378974 | 1378978 | 1378978 | 40      |
╰-----------------------------------------------------+-----------------+---------+---------+---------+---------╯

╭-------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
| examples/MyVotingPowerProvider.sol:MyVotingPowerProvider Contract |                 |         |         |         |         |
+=============================================================================================================================+
| Deployment Cost                                                   | Deployment Size |         |         |         |         |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| 2859435                                                           | 13195           |         |         |         |         |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|                                                                   |                 |         |         |         |         |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name                                                     | Min             | Avg     | Median  | Max     | # Calls |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| NETWORK                                                           | 2449            | 2449    | 2449    | 2449    | 32      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| OPERATOR_REGISTRY                                                 | 261             | 261     | 261     | 261     | 45      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| SUBNETWORK                                                        | 661             | 2230    | 2661    | 2661    | 288     |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| SUBNETWORK_IDENTIFIER                                             | 2436            | 2436    | 2436    | 2436    | 32      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| VAULT_FACTORY                                                     | 306             | 306     | 306     | 306     | 38      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorStakes                                                 | 81380           | 81380   | 81380   | 81380   | 32      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorStakesAt                                               | 87678           | 87678   | 87678   | 87678   | 32      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVaults                                                 | 14584           | 15370   | 15370   | 16157   | 2       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVaultsAt                                               | 15293           | 15293   | 15293   | 15293   | 1       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPowers                                           | 93690           | 94345   | 94345   | 95001   | 64      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPowersAt                                         | 100647          | 101303  | 101303  | 101959  | 64      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperators                                                      | 14012           | 16294   | 14798   | 21567   | 4       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorsAt                                                    | 19709           | 21300   | 21300   | 22891   | 2       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSlashingData                                                   | 8251            | 8251    | 8251    | 8251    | 8       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSlashingDataAt                                                 | 10150           | 10328   | 10328   | 10507   | 2       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVotingPowers                                                   | 2487844         | 2487844 | 2487844 | 2487844 | 1       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVotingPowersAt                                                 | 2721564         | 2721564 | 2721564 | 2721564 | 1       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| hashTypedDataV4                                                   | 6786            | 6786    | 6786    | 6786    | 3       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| initialize                                                        | 294733          | 294733  | 294733  | 294733  | 22      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| invalidateOldSignatures                                           | 43532           | 43532   | 43532   | 43532   | 1       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorRegistered                                              | 8422            | 9187    | 8422    | 10718   | 9       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorRegisteredAt                                            | 6709            | 8348    | 9168    | 9168    | 3       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegistered(address)                                | 8435            | 8894    | 8435    | 10731   | 5       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegistered(address,address)                        | 8756            | 9138    | 8756    | 11052   | 6       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegisteredAt(address,address,uint48)               | 9558            | 9558    | 9558    | 9558    | 1       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegisteredAt(address,uint48)                       | 9120            | 9120    | 9120    | 9120    | 1       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| nonces                                                            | 2662            | 2662    | 2662    | 2662    | 5       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerOperator                                                  | 30726           | 113167  | 108840  | 143040  | 44      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerOperatorVault                                             | 86465           | 233307  | 236467  | 270667  | 38      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerOperatorWithSignature                                     | 39115           | 98985   | 98985   | 158856  | 2       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| stakeToVotingPower                                                | 870             | 870     | 870     | 870     | 96      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| stakeToVotingPowerAt                                              | 961             | 961     | 961     | 961     | 96      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterOperator                                                | 27152           | 61651   | 78901   | 78901   | 3       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterOperatorVault                                           | 125247          | 125355  | 125355  | 125463  | 2       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterOperatorWithSignature                                   | 94671           | 94671   | 94671   | 94671   | 1       |
╰-------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯

╭----------------------------------------------+-----------------+-------+--------+-------+---------╮
| lib/core/test/mocks/Token.sol:Token Contract |                 |       |        |       |         |
+===================================================================================================+
| Deployment Cost                              | Deployment Size |       |        |       |         |
|----------------------------------------------+-----------------+-------+--------+-------+---------|
| 519682                                       | 3161            |       |        |       |         |
|----------------------------------------------+-----------------+-------+--------+-------+---------|
|                                              |                 |       |        |       |         |
|----------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                | Min             | Avg   | Median | Max   | # Calls |
|----------------------------------------------+-----------------+-------+--------+-------+---------|
| approve                                      | 46306           | 46356 | 46366  | 46366 | 512     |
|----------------------------------------------+-----------------+-------+--------+-------+---------|
| balanceOf                                    | 559             | 1982  | 2559   | 2559  | 1783    |
|----------------------------------------------+-----------------+-------+--------+-------+---------|
| decimals                                     | 176             | 176   | 176    | 176   | 724     |
|----------------------------------------------+-----------------+-------+--------+-------+---------|
| totalSupply                                  | 2325            | 2325  | 2325   | 2325  | 749     |
|----------------------------------------------+-----------------+-------+--------+-------+---------|
| transfer                                     | 51553           | 51553 | 51553  | 51553 | 2       |
╰----------------------------------------------+-----------------+-------+--------+-------+---------╯

╭----------------------------------------------+-----------------+--------+--------+--------+---------╮
| lib/network/src/Network.sol:Network Contract |                 |        |        |        |         |
+=====================================================================================================+
| Deployment Cost                              | Deployment Size |        |        |        |         |
|----------------------------------------------+-----------------+--------+--------+--------+---------|
| 2728138                                      | 12614           |        |        |        |         |
|----------------------------------------------+-----------------+--------+--------+--------+---------|
|                                              |                 |        |        |        |         |
|----------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                | Min             | Avg    | Median | Max    | # Calls |
|----------------------------------------------+-----------------+--------+--------+--------+---------|
| execute                                      | 70058           | 70058  | 70058  | 70058  | 12      |
|----------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                   | 312841          | 312841 | 312841 | 312841 | 12      |
|----------------------------------------------+-----------------+--------+--------+--------+---------|
| schedule                                     | 64876           | 64876  | 64876  | 64876  | 12      |
╰----------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-------------------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------╮
| src/modules/settlement/sig-verifiers/SigVerifierBlsBn254Simple.sol:SigVerifierBlsBn254Simple Contract |                 |       |        |        |         |
+=============================================================================================================================================================+
| Deployment Cost                                                                                       | Deployment Size |       |        |        |         |
|-------------------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------|
| 0                                                                                                     | 4974            |       |        |        |         |
|-------------------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------|
|                                                                                                       |                 |       |        |        |         |
|-------------------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------|
| Function Name                                                                                         | Min             | Avg   | Median | Max    | # Calls |
|-------------------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------|
| AGGREGATED_PUBLIC_KEY_G1_HASH                                                                         | 161             | 161   | 161    | 161    | 15      |
|-------------------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------|
| VALIDATOR_SET_HASH_KECCAK256_HASH                                                                     | 183             | 183   | 183    | 183    | 15      |
|-------------------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------|
| verifyQuorumSig                                                                                       | 1265            | 52519 | 8494   | 181913 | 15      |
╰-------------------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------╯

╭-----------------------------------------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------╮
| src/modules/settlement/sig-verifiers/SigVerifierBlsBn254ZK.sol:SigVerifierBlsBn254ZK Contract |                 |                     |        |                      |         |
+=================================================================================================================================================================================+
| Deployment Cost                                                                               | Deployment Size |                     |        |                      |         |
|-----------------------------------------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| 0                                                                                             | 4094            |                     |        |                      |         |
|-----------------------------------------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
|                                                                                               |                 |                     |        |                      |         |
|-----------------------------------------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| Function Name                                                                                 | Min             | Avg                 | Median | Max                  | # Calls |
|-----------------------------------------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| TOTAL_ACTIVE_VALIDATORS_HASH                                                                  | 205             | 205                 | 205    | 205                  | 15      |
|-----------------------------------------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| VALIDATOR_SET_HASH_MIMC_HASH                                                                  | 227             | 227                 | 227    | 227                  | 13      |
|-----------------------------------------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| verifyQuorumSig                                                                               | 1281            | 2199436671923268328 | 15113  | 17595493375385703604 | 8       |
╰-----------------------------------------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------╯

╭----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| src/modules/voting-power/common/voting-power-calc/libraries/ChainlinkPriceFeed.sol:ChainlinkPriceFeed Contract |                 |        |        |        |         |
+=======================================================================================================================================================================+
| Deployment Cost                                                                                                | Deployment Size |        |        |        |         |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 1220091                                                                                                        | 6146            |        |        |        |         |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                                                |                 |        |        |        |         |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                                                  | Min             | Avg    | Median | Max    | # Calls |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getLatestPrice                                                                                                 | 45333           | 48364  | 49431  | 49898  | 217     |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getPriceAt(address,uint48,bool,uint48)                                                                         | 82942           | 82942  | 82942  | 82942  | 1       |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getPriceAt(address[2],uint48,bool[2],uint48[2])                                                                | 7033            | 373568 | 384824 | 398740 | 47      |
╰----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| src/modules/voting-power/extensions/logic/BaseRewardsLogic.sol:BaseRewardsLogic Contract |                 |        |        |        |         |
+=================================================================================================================================================+
| Deployment Cost                                                                          | Deployment Size |        |        |        |         |
|------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 321585                                                                                   | 1658            |        |        |        |         |
|------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                          |                 |        |        |        |         |
|------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                            | Min             | Avg    | Median | Max    | # Calls |
|------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| distributeOperatorRewards                                                                | 147122          | 147122 | 147122 | 147122 | 1       |
|------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| distributeStakerRewards                                                                  | 215666          | 215666 | 215666 | 215666 | 1       |
╰------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭--------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| src/modules/voting-power/extensions/logic/BaseSlashingLogic.sol:BaseSlashingLogic Contract |                 |        |        |        |         |
+===================================================================================================================================================+
| Deployment Cost                                                                            | Deployment Size |        |        |        |         |
|--------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 878339                                                                                     | 4439            |        |        |        |         |
|--------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                            |                 |        |        |        |         |
|--------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                              | Min             | Avg    | Median | Max    | # Calls |
|--------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| executeSlashVault                                                                          | 12081           | 115521 | 29372  | 391259 | 4       |
|--------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| slashVault                                                                                 | 12235           | 171484 | 79920  | 373690 | 9       |
╰--------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| src/modules/voting-power/extensions/logic/OpNetVaultAutoDeployLogic.sol:OpNetVaultAutoDeployLogic Contract |                 |       |        |       |         |
+=================================================================================================================================================================+
| Deployment Cost                                                                                            | Deployment Size |       |        |       |         |
|------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 1139807                                                                                                    | 5745            |       |        |       |         |
|------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                                                            |                 |       |        |       |         |
|------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                                                              | Min             | Avg   | Median | Max   | # Calls |
|------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| getAutoDeployConfig                                                                                        | 5052            | 5052  | 5052   | 5052  | 1       |
|------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| getAutoDeployedVault                                                                                       | 2588            | 2588  | 2588   | 2588  | 10      |
|------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| isAutoDeployEnabled                                                                                        | 2393            | 2393  | 2393   | 2393  | 6       |
|------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| isSetMaxNetworkLimitHookEnabled                                                                            | 437             | 937   | 437    | 2437  | 4       |
|------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| setAutoDeployStatus                                                                                        | 6508            | 19333 | 23608  | 23608 | 4       |
|------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| setSetMaxNetworkLimitHookStatus                                                                            | 23613           | 23613 | 23613  | 23613 | 1       |
╰------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
| src/modules/voting-power/logic/VotingPowerProviderLogic.sol:VotingPowerProviderLogic Contract |                 |         |         |         |         |
+=========================================================================================================================================================+
| Deployment Cost                                                                               | Deployment Size |         |         |         |         |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| 3129075                                                                                       | 15680           |         |         |         |         |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|                                                                                               |                 |         |         |         |         |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name                                                                                 | Min             | Avg     | Median  | Max     | # Calls |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| _validateVault                                                                                | 38106           | 42604   | 42604   | 47103   | 2       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorStake                                                                              | 79613           | 79613   | 79613   | 79613   | 96      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorStakeAt                                                                            | 86568           | 86568   | 86568   | 86568   | 96      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorStakes                                                                             | 76903           | 180783  | 180783  | 284663  | 64      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorStakesAt                                                                           | 83112           | 198139  | 198139  | 313167  | 64      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVaults                                                                             | 10435           | 10447   | 10435   | 12266   | 433     |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVaultsAt                                                                           | 10968           | 10968   | 10968   | 10968   | 2       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVaultsLength                                                                       | 2694            | 2694    | 2694    | 2694    | 1       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPower                                                                        | 14717           | 95791   | 90525   | 148960  | 596     |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPowerAt                                                                      | 15017           | 120838  | 98224   | 490969  | 338     |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPowers                                                                       | 88590           | 251673  | 254752  | 317578  | 2148    |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPowersAt                                                                     | 95453           | 222006  | 222006  | 348560  | 128     |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperators                                                                                  | 10120           | 12402   | 11035   | 17417   | 8       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorsAt                                                                                | 15619           | 17081   | 17081   | 18543   | 4       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorsLength                                                                            | 2424            | 2424    | 2424    | 2424    | 3       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSharedVaults                                                                               | 10097           | 21955   | 24691   | 24691   | 10      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSharedVaultsAt                                                                             | 10793           | 10793   | 10793   | 10793   | 1       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSharedVaultsLength                                                                         | 2448            | 2448    | 2448    | 2448    | 1       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSlashingData                                                                               | 925             | 4819    | 4925    | 4925    | 454     |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSlashingDataAt                                                                             | 5974            | 6455    | 6331    | 8786    | 14      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getTokens                                                                                     | 19264           | 19264   | 19264   | 19264   | 1       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getTokensAt                                                                                   | 7797            | 14473   | 14618   | 20862   | 4       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getTokensLength                                                                               | 2484            | 2484    | 2484    | 2484    | 3       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVotingPowers                                                                               | 2401354         | 3268074 | 3752854 | 5648883 | 49      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVotingPowersAt                                                                             | 2663293         | 4660579 | 4660579 | 6657866 | 2       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorRegistered                                                                          | 2810            | 5309    | 5046    | 7342    | 36      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorRegisteredAt                                                                        | 3142            | 4781    | 5601    | 5601    | 6       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegistered(address)                                                            | 5069            | 5834    | 5069    | 7365    | 15      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegistered(address,address)                                                    | 5199            | 5552    | 5199    | 7495    | 13      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegisteredAt(address,address,uint48)                                           | 5878            | 5878    | 5878    | 5878    | 2       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegisteredAt(address,uint48)                                                   | 5599            | 5599    | 5599    | 5599    | 2       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isSharedVaultRegistered                                                                       | 5090            | 5855    | 5090    | 7386    | 3       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isSharedVaultRegisteredAt                                                                     | 5622            | 5622    | 5622    | 5622    | 1       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isTokenRegistered                                                                             | 4996            | 5761    | 4996    | 7292    | 3       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isTokenRegisteredAt                                                                           | 8429            | 8429    | 8429    | 8429    | 1       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerOperator                                                                              | 6552            | 64252   | 62495   | 96695   | 1624    |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerOperatorVault                                                                         | 17136           | 208023  | 208990  | 243212  | 483     |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerSharedVault                                                                           | 6648            | 118148  | 111583  | 145827  | 135     |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerToken                                                                                 | 426             | 73088   | 90466   | 90466   | 16      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setSlashingData                                                                               | 9808            | 15374   | 9808    | 32074   | 4       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterOperator                                                                            | 2924            | 44748   | 54313   | 54313   | 12      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterOperatorVault                                                                       | 34188           | 97072   | 107553  | 107553  | 7       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterSharedVault                                                                         | 7390            | 38628   | 54247   | 54247   | 3       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterToken                                                                               | 7405            | 42547   | 54262   | 54262   | 4       |
╰-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯

╭-------------------------------------------------+-----------------+---------------------+---------------------+----------------------+---------╮
| test/data/zk/Verifier_100.sol:Verifier Contract |                 |                     |                     |                      |         |
+================================================================================================================================================+
| Deployment Cost                                 | Deployment Size |                     |                     |                      |         |
|-------------------------------------------------+-----------------+---------------------+---------------------+----------------------+---------|
| 1435489                                         | 6421            |                     |                     |                      |         |
|-------------------------------------------------+-----------------+---------------------+---------------------+----------------------+---------|
|                                                 |                 |                     |                     |                      |         |
|-------------------------------------------------+-----------------+---------------------+---------------------+----------------------+---------|
| Function Name                                   | Min             | Avg                 | Median              | Max                  | # Calls |
|-------------------------------------------------+-----------------+---------------------+---------------------+----------------------+---------|
| verifyProof                                     | 309915          | 8797746687692978130 | 8797746687692978130 | 17595493375385646346 | 2       |
╰-------------------------------------------------+-----------------+---------------------+---------------------+----------------------+---------╯

╭---------------------------------------------------------------------+-----------------+------+--------+------+---------╮
| test/libraries/sigs/SigBlsBn12381.t.sol:SigBlsBls12381Test Contract |                 |      |        |      |         |
+========================================================================================================================+
| Deployment Cost                                                     | Deployment Size |      |        |      |         |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
| 2537549                                                             | 12510           |      |        |      |         |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
|                                                                     |                 |      |        |      |         |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name                                                       | Min             | Avg  | Median | Max  | # Calls |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
| verify                                                              | 2158            | 2158 | 2158   | 2158 | 1       |
╰---------------------------------------------------------------------+-----------------+------+--------+------+---------╯

╭----------------------------------------------------------------+-----------------+------+--------+------+---------╮
| test/libraries/sigs/SigBlsBn254.t.sol:SigBlsBn254Test Contract |                 |      |        |      |         |
+===================================================================================================================+
| Deployment Cost                                                | Deployment Size |      |        |      |         |
|----------------------------------------------------------------+-----------------+------+--------+------+---------|
| 2386169                                                        | 11754           |      |        |      |         |
|----------------------------------------------------------------+-----------------+------+--------+------+---------|
|                                                                |                 |      |        |      |         |
|----------------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name                                                  | Min             | Avg  | Median | Max  | # Calls |
|----------------------------------------------------------------+-----------------+------+--------+------+---------|
| verify                                                         | 1799            | 1799 | 1799   | 1799 | 1       |
╰----------------------------------------------------------------+-----------------+------+--------+------+---------╯

╭----------------------------------------------------------------------------+-----------------+------+--------+------+---------╮
| test/libraries/sigs/SigEcdsaSecp256k1.t.sol:SigEcdsaSecp256k1Test Contract |                 |      |        |      |         |
+===============================================================================================================================+
| Deployment Cost                                                            | Deployment Size |      |        |      |         |
|----------------------------------------------------------------------------+-----------------+------+--------+------+---------|
| 1610499                                                                    | 7880            |      |        |      |         |
|----------------------------------------------------------------------------+-----------------+------+--------+------+---------|
|                                                                            |                 |      |        |      |         |
|----------------------------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name                                                              | Min             | Avg  | Median | Max  | # Calls |
|----------------------------------------------------------------------------+-----------------+------+--------+------+---------|
| verify                                                                     | 1775            | 1775 | 1775   | 1775 | 1       |
╰----------------------------------------------------------------------------+-----------------+------+--------+------+---------╯

╭---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/libraries/structs/Checkpoints.t.sol:CheckpointsTrace208Test Contract |                 |       |        |       |         |
+================================================================================================================================+
| Deployment Cost                                                           | Deployment Size |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 2713553                                                                   | 13389           |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                           |                 |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                             | Min             | Avg   | Median | Max   | # Calls |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| pop                                                                       | 23586           | 23586 | 23586  | 23586 | 3       |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| push                                                                      | 26424           | 26527 | 26466  | 26736 | 256     |
╰---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/libraries/structs/Checkpoints.t.sol:CheckpointsTrace256Test Contract |                 |       |        |       |         |
+================================================================================================================================+
| Deployment Cost                                                           | Deployment Size |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 2738984                                                                   | 13516           |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                           |                 |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                             | Min             | Avg   | Median | Max   | # Calls |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| pop                                                                       | 23596           | 23596 | 23596  | 23596 | 1       |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| push                                                                      | 29745           | 29908 | 29877  | 30129 | 256     |
╰---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/libraries/structs/Checkpoints.t.sol:CheckpointsTrace512Test Contract |                 |       |        |       |         |
+================================================================================================================================+
| Deployment Cost                                                           | Deployment Size |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 3141073                                                                   | 15524           |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                           |                 |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                             | Min             | Avg   | Median | Max   | # Calls |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| pop                                                                       | 23674           | 23674 | 23674  | 23674 | 2       |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| push                                                                      | 32861           | 32882 | 32885  | 32885 | 256     |
╰---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭-----------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/libraries/structs/PersistentSet.t.sol:PersistentSetTest Contract |                 |       |        |       |         |
+============================================================================================================================+
| Deployment Cost                                                       | Deployment Size |       |        |       |         |
|-----------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 2778830                                                               | 13715           |       |        |       |         |
|-----------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                       |                 |       |        |       |         |
|-----------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                         | Min             | Avg   | Median | Max   | # Calls |
|-----------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| remove                                                                | 26607           | 48119 | 48119  | 69632 | 2       |
╰-----------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭-------------------------------------------------------------+----------------------+----------------------+----------------------+----------------------+---------╮
| test/libraries/utils/BN12381.t.sol:BLS12381Harness Contract |                      |                      |                      |                      |         |
+===================================================================================================================================================================+
| Deployment Cost                                             | Deployment Size      |                      |                      |                      |         |
|-------------------------------------------------------------+----------------------+----------------------+----------------------+----------------------+---------|
| 501855                                                      | 2103                 |                      |                      |                      |         |
|-------------------------------------------------------------+----------------------+----------------------+----------------------+----------------------+---------|
|                                                             |                      |                      |                      |                      |         |
|-------------------------------------------------------------+----------------------+----------------------+----------------------+----------------------+---------|
| Function Name                                               | Min                  | Avg                  | Median               | Max                  | # Calls |
|-------------------------------------------------------------+----------------------+----------------------+----------------------+----------------------+---------|
| expandMsg                                                   | 1146                 | 1146                 | 1146                 | 1146                 | 1       |
|-------------------------------------------------------------+----------------------+----------------------+----------------------+----------------------+---------|
| isInSubgroup                                                | 17874786921033470443 | 17874786921033470443 | 17874786921033470443 | 17874786921033470443 | 1       |
|-------------------------------------------------------------+----------------------+----------------------+----------------------+----------------------+---------|
| xCubePlus4                                                  | 796                  | 896                  | 896                  | 996                  | 2       |
╰-------------------------------------------------------------+----------------------+----------------------+----------------------+----------------------+---------╯

╭-------------------------------------------------------------------------+-----------------+------+--------+------+---------╮
| test/libraries/utils/InputNormalizer.t.sol:InputNormalizerTest Contract |                 |      |        |      |         |
+============================================================================================================================+
| Deployment Cost                                                         | Deployment Size |      |        |      |         |
|-------------------------------------------------------------------------+-----------------+------+--------+------+---------|
| 1602692                                                                 | 7841            |      |        |      |         |
|-------------------------------------------------------------------------+-----------------+------+--------+------+---------|
|                                                                         |                 |      |        |      |         |
|-------------------------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name                                                           | Min             | Avg  | Median | Max  | # Calls |
|-------------------------------------------------------------------------+-----------------+------+--------+------+---------|
| normalizeDoubleDim                                                      | 2940            | 2940 | 2940   | 2940 | 1       |
|-------------------------------------------------------------------------+-----------------+------+--------+------+---------|
| normalizeSingleDim                                                      | 2361            | 2361 | 2361   | 2361 | 1       |
╰-------------------------------------------------------------------------+-----------------+------+--------+------+---------╯

╭-------------------------------------------------------+-----------------+------+--------+------+---------╮
| test/libraries/utils/KeyTag.t.sol:KeyTagTest Contract |                 |      |        |      |         |
+==========================================================================================================+
| Deployment Cost                                       | Deployment Size |      |        |      |         |
|-------------------------------------------------------+-----------------+------+--------+------+---------|
| 1494374                                               | 7300            |      |        |      |         |
|-------------------------------------------------------+-----------------+------+--------+------+---------|
|                                                       |                 |      |        |      |         |
|-------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name                                         | Min             | Avg  | Median | Max  | # Calls |
|-------------------------------------------------------+-----------------+------+--------+------+---------|
| getKeyTag                                             | 552             | 582  | 582    | 613  | 2       |
|-------------------------------------------------------+-----------------+------+--------+------+---------|
| getTag                                                | 482             | 482  | 482    | 482  | 1       |
|-------------------------------------------------------+-----------------+------+--------+------+---------|
| getType                                               | 483             | 483  | 483    | 483  | 1       |
|-------------------------------------------------------+-----------------+------+--------+------+---------|
| serialize                                             | 1787            | 1787 | 1787   | 1787 | 1       |
╰-------------------------------------------------------+-----------------+------+--------+------+---------╯

╭---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/libraries/utils/ValSetVerifier.t.sol:ValSetVerifierContract Contract |                 |       |        |       |         |
+================================================================================================================================+
| Deployment Cost                                                           | Deployment Size |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 659510                                                                    | 2832            |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                           |                 |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                             | Min             | Avg   | Median | Max   | # Calls |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| verifyIsActive                                                            | 56160           | 56301 | 56160  | 57120 | 7       |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| verifyKey                                                                 | 70130           | 70404 | 70130  | 71090 | 7       |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| verifyOperator                                                            | 55860           | 56005 | 55860  | 56820 | 7       |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| verifyOperatorVotingPower                                                 | 62130           | 62228 | 62130  | 63090 | 11      |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| verifyVault                                                               | 78930           | 79177 | 78960  | 79890 | 8       |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| verifyVotingPower                                                         | 55860           | 56005 | 55860  | 56820 | 7       |
╰---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭---------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------╮
| test/mocks/KeyBlsBls12381Mock.sol:KeyBlsBls12381Mock Contract |                 |                     |        |                      |         |
+=================================================================================================================================================+
| Deployment Cost                                               | Deployment Size |                     |        |                      |         |
|---------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| 903260                                                        | 3959            |                     |        |                      |         |
|---------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
|                                                               |                 |                     |        |                      |         |
|---------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| Function Name                                                 | Min             | Avg                 | Median | Max                  | # Calls |
|---------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| deserialize                                                   | 988             | 988                 | 988    | 988                  | 1       |
|---------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| equal                                                         | 1376            | 1387                | 1387   | 1399                 | 2       |
|---------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| fromBytes                                                     | 967             | 6837                | 3317   | 16227                | 3       |
|---------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| wrap                                                          | 1007            | 3972174871340778671 | 15252  | 17874786921033470347 | 9       |
|---------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| zeroKey                                                       | 826             | 826                 | 826    | 826                  | 1       |
╰---------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------╯

╭---------------------------------------------------------+-----------------+------+--------+------+---------╮
| test/mocks/KeyBlsBn254Mock.sol:KeyBlsBn254Mock Contract |                 |      |        |      |         |
+============================================================================================================+
| Deployment Cost                                         | Deployment Size |      |        |      |         |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| 628154                                                  | 2687            |      |        |      |         |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
|                                                         |                 |      |        |      |         |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name                                           | Min             | Avg  | Median | Max  | # Calls |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| deserialize                                             | 828             | 828  | 828    | 828  | 1       |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| equal                                                   | 1180            | 1193 | 1193   | 1207 | 2       |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| fromBytes                                               | 807             | 1379 | 1379   | 1952 | 2       |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| wrap                                                    | 788             | 1022 | 1021   | 1182 | 264     |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| zeroKey                                                 | 562             | 562  | 562    | 562  | 1       |
╰---------------------------------------------------------+-----------------+------+--------+------+---------╯

╭---------------------------------------------------------------------+-----------------+------+--------+------+---------╮
| test/mocks/KeyEcdsaSecp256k1Mock.sol:KeyEcdsaSecp256k1Mock Contract |                 |      |        |      |         |
+========================================================================================================================+
| Deployment Cost                                                     | Deployment Size |      |        |      |         |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
| 347774                                                              | 1390            |      |        |      |         |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
|                                                                     |                 |      |        |      |         |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name                                                       | Min             | Avg  | Median | Max  | # Calls |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
| deserialize                                                         | 755             | 755  | 755    | 755  | 1       |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
| equal                                                               | 837             | 837  | 837    | 837  | 2       |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
| fromBytes                                                           | 776             | 1087 | 1087   | 1399 | 2       |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
| wrap                                                                | 575             | 575  | 575    | 575  | 4       |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
| zeroKey                                                             | 374             | 374  | 374    | 374  | 1       |
╰---------------------------------------------------------------------+-----------------+------+--------+------+---------╯

╭---------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/mocks/RewarderMock.sol:RewarderMock Contract |                 |        |        |        |         |
+==========================================================================================================+
| Deployment Cost                                   | Deployment Size |        |        |        |         |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
| 211160                                            | 758             |        |        |        |         |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                   |                 |        |        |        |         |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                     | Min             | Avg    | Median | Max    | # Calls |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
| distributeOperatorRewards                         | 154018          | 154018 | 154018 | 154018 | 1       |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
| distributeStakerRewards                           | 222446          | 222446 | 222446 | 222446 | 1       |
╰---------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-------------------------------------------------------------------+-----------------+------+--------+------+---------╮
| test/mocks/SigVerifierFalseMock.sol:SigVerifierFalseMock Contract |                 |      |        |      |         |
+======================================================================================================================+
| Deployment Cost                                                   | Deployment Size |      |        |      |         |
|-------------------------------------------------------------------+-----------------+------+--------+------+---------|
| 179999                                                            | 614             |      |        |      |         |
|-------------------------------------------------------------------+-----------------+------+--------+------+---------|
|                                                                   |                 |      |        |      |         |
|-------------------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name                                                     | Min             | Avg  | Median | Max  | # Calls |
|-------------------------------------------------------------------+-----------------+------+--------+------+---------|
| verifyQuorumSig                                                   | 1093            | 1093 | 1093   | 1093 | 1       |
╰-------------------------------------------------------------------+-----------------+------+--------+------+---------╯

╭---------------------------------------------------------+-----------------+------+--------+------+---------╮
| test/mocks/SigVerifierMock.sol:SigVerifierMock Contract |                 |      |        |      |         |
+============================================================================================================+
| Deployment Cost                                         | Deployment Size |      |        |      |         |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| 180215                                                  | 615             |      |        |      |         |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
|                                                         |                 |      |        |      |         |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name                                           | Min             | Avg  | Median | Max  | # Calls |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| verifyQuorumSig                                         | 1094            | 1094 | 1094   | 1094 | 10      |
╰---------------------------------------------------------+-----------------+------+--------+------+---------╯

╭-------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/mocks/SlasherMock.sol:SlasherMock Contract |                 |        |        |        |         |
+========================================================================================================+
| Deployment Cost                                 | Deployment Size |        |        |        |         |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| 326654                                          | 1292            |        |        |        |         |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                 |                 |        |        |        |         |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                   | Min             | Avg    | Median | Max    | # Calls |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| executeSlashVault                               | 44234           | 146097 | 61846  | 416462 | 4       |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| slashVault                                      | 45374           | 202802 | 114874 | 400244 | 9       |
╰-------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
| test/mocks/VotingPowerProviderSemiFull.sol:VotingPowerProviderSemiFull Contract |                 |         |         |         |         |
+===========================================================================================================================================+
| Deployment Cost                                                                 | Deployment Size |         |         |         |         |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| 3710676                                                                         | 17131           |         |         |         |         |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|                                                                                 |                 |         |         |         |         |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name                                                                   | Min             | Avg     | Median  | Max     | # Calls |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| NETWORK                                                                         | 2443            | 2443    | 2443    | 2443    | 6       |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| OPERATOR_REGISTRY                                                               | 350             | 350     | 350     | 350     | 1124    |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| SUBNETWORK                                                                      | 719             | 1136    | 719     | 2719    | 9931    |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| VAULT_FACTORY                                                                   | 284             | 284     | 284     | 284     | 121     |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| distributeOperatorRewards                                                       | 24854           | 24854   | 24854   | 24854   | 1       |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| distributeStakerRewards                                                         | 27110           | 27110   | 27110   | 27110   | 1       |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPowers                                                         | 260857          | 260857  | 260857  | 260857  | 2020    |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getRewarder                                                                     | 2432            | 2432    | 2432    | 2432    | 4       |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSharedVaults                                                                 | 29142           | 29142   | 29142   | 29142   | 8       |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSlasher                                                                      | 2519            | 2519    | 2519    | 2519    | 4       |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSlashingData                                                                 | 8273            | 8273    | 8273    | 8273    | 3       |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVotingPowers                                                                 | 2458608         | 3312540 | 3842567 | 3842567 | 47      |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| initialize                                                                      | 346801          | 346801  | 346801  | 346801  | 40      |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerOperator                                                                | 113472          | 114689  | 113472  | 147672  | 1124    |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerSharedVault                                                             | 138549          | 149883  | 138549  | 172749  | 121     |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setRewarder                                                                     | 25218           | 36288   | 36288   | 47358   | 4       |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setSlasher                                                                      | 25228           | 32460   | 30268   | 47368   | 11      |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| slashVault                                                                      | 25676           | 25676   | 25676   | 25676   | 1       |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| stakeToVotingPower                                                              | 915             | 915     | 915     | 915     | 9924    |
╰---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯

╭--------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/modules/base/NetworkManager.t.sol:TestNetworkManager Contract |                 |       |        |       |         |
+=========================================================================================================================+
| Deployment Cost                                                    | Deployment Size |       |        |       |         |
|--------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 346454                                                             | 1384            |       |        |       |         |
|--------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                    |                 |       |        |       |         |
|--------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                      | Min             | Avg   | Median | Max   | # Calls |
|--------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| NETWORK                                                            | 2329            | 2329  | 2329   | 2329  | 2       |
|--------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| SUBNETWORK                                                         | 2572            | 2572  | 2572   | 2572  | 2       |
|--------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| SUBNETWORK_IDENTIFIER                                              | 2435            | 2435  | 2435   | 2435  | 2       |
|--------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| initialize                                                         | 24220           | 55579 | 69627  | 69639 | 5       |
╰--------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭--------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/modules/base/OzEIP712.t.sol:TestOzEIP712 Contract |                 |       |        |       |         |
+=============================================================================================================+
| Deployment Cost                                        | Deployment Size |       |        |       |         |
|--------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 608919                                                 | 2598            |       |        |       |         |
|--------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                        |                 |       |        |       |         |
|--------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                          | Min             | Avg   | Median | Max   | # Calls |
|--------------------------------------------------------+-----------------+-------+--------+-------+---------|
| eip712Domain                                           | 10880           | 10880 | 10880  | 10880 | 1       |
|--------------------------------------------------------+-----------------+-------+--------+-------+---------|
| hashTypedDataV4                                        | 6652            | 6652  | 6652   | 6652  | 2       |
|--------------------------------------------------------+-----------------+-------+--------+-------+---------|
| hashTypedDataV4CrossChain                              | 6543            | 6543  | 6543   | 6543  | 1       |
|--------------------------------------------------------+-----------------+-------+--------+-------+---------|
| initialize                                             | 25375           | 85059 | 99983  | 99983 | 5       |
╰--------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭--------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/modules/base/PermissionManager.t.sol:TestPermissionManager Contract |                 |       |        |       |         |
+===============================================================================================================================+
| Deployment Cost                                                          | Deployment Size |       |        |       |         |
|--------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 177603                                                                   | 603             |       |        |       |         |
|--------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                          |                 |       |        |       |         |
|--------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                            | Min             | Avg   | Median | Max   | # Calls |
|--------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| initialize                                                               | 67820           | 67820 | 67820  | 67820 | 2       |
|--------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| protectedAction                                                          | 23348           | 23394 | 23394  | 23440 | 2       |
╰--------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/modules/base/VotingPowerCalcManager.t.sol:TestVotingPowerCalcManager Contract |                 |       |        |       |         |
+=========================================================================================================================================+
| Deployment Cost                                                                    | Deployment Size |       |        |       |         |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 250232                                                                             | 939             |       |        |       |         |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                                    |                 |       |        |       |         |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                                      | Min             | Avg   | Median | Max   | # Calls |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| initialize                                                                         | 23666           | 58589 | 67320  | 67320 | 5       |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| stakeToVotingPower                                                                 | 774             | 786   | 786    | 798   | 2       |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| stakeToVotingPowerAt                                                               | 880             | 880   | 880    | 880   | 1       |
╰------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭--------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/modules/common/permissions/NoPermissionManager.t.sol:TestNoPermissionManager Contract |                 |       |        |       |         |
+=================================================================================================================================================+
| Deployment Cost                                                                            | Deployment Size |       |        |       |         |
|--------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 125983                                                                                     | 364             |       |        |       |         |
|--------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                                            |                 |       |        |       |         |
|--------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                                              | Min             | Avg   | Median | Max   | # Calls |
|--------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| actionRequiringNoPermission                                                                | 21161           | 21161 | 21161  | 21161 | 1       |
|--------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| initialize                                                                                 | 45147           | 45147 | 45147  | 45147 | 1       |
╰--------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/modules/common/permissions/OzAccessControl.t.sol:TestOzAccessControl Contract |                 |       |        |       |         |
+=========================================================================================================================================+
| Deployment Cost                                                                    | Deployment Size |       |        |       |         |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 432460                                                                             | 1782            |       |        |       |         |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                                    |                 |       |        |       |         |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                                      | Min             | Avg   | Median | Max   | # Calls |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| ADMIN_ROLE                                                                         | 304             | 304   | 304    | 304   | 1       |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| getRole                                                                            | 2640            | 2640  | 2640   | 2640  | 2       |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| grantRole                                                                          | 51417           | 51417 | 51417  | 51417 | 1       |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| initialize                                                                         | 73750           | 73750 | 73750  | 73750 | 6       |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| protectedFunction                                                                  | 25889           | 25915 | 25889  | 25954 | 5       |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| setSelectorRole                                                                    | 27977           | 41499 | 48261  | 48261 | 3       |
╰------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭------------------------------------------------------------------------------+-----------------+------+--------+------+---------╮
| test/modules/common/permissions/OzAccessManaged.t.sol:MockAuthority Contract |                 |      |        |      |         |
+=================================================================================================================================+
| Deployment Cost                                                              | Deployment Size |      |        |      |         |
|------------------------------------------------------------------------------+-----------------+------+--------+------+---------|
| 133454                                                                       | 424             |      |        |      |         |
|------------------------------------------------------------------------------+-----------------+------+--------+------+---------|
|                                                                              |                 |      |        |      |         |
|------------------------------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name                                                                | Min             | Avg  | Median | Max  | # Calls |
|------------------------------------------------------------------------------+-----------------+------+--------+------+---------|
| canCall                                                                      | 2629            | 2629 | 2629   | 2629 | 2       |
╰------------------------------------------------------------------------------+-----------------+------+--------+------+---------╯

╭------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/modules/common/permissions/OzAccessManaged.t.sol:TestOzAccessManaged Contract |                 |       |        |       |         |
+=========================================================================================================================================+
| Deployment Cost                                                                    | Deployment Size |       |        |       |         |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 400664                                                                             | 1635            |       |        |       |         |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                                    |                 |       |        |       |         |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                                      | Min             | Avg   | Median | Max   | # Calls |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| initialize                                                                         | 23962           | 58212 | 69629  | 69629 | 4       |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| protectedAction                                                                    | 29336           | 29375 | 29375  | 29415 | 2       |
╰------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/modules/common/permissions/OzOwnable.t.sol:TestOzOwnable Contract |                 |       |        |       |         |
+=============================================================================================================================+
| Deployment Cost                                                        | Deployment Size |       |        |       |         |
|------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 263112                                                                 | 999             |       |        |       |         |
|------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                        |                 |       |        |       |         |
|------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                          | Min             | Avg   | Median | Max   | # Calls |
|------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| initialize                                                             | 23940           | 60684 | 69871  | 69871 | 5       |
|------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| protectedAction                                                        | 23395           | 23421 | 23421  | 23447 | 4       |
|------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| transferOwnership                                                      | 28412           | 28412 | 28412  | 28412 | 1       |
╰------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭----------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/key-registry/KeyRegistry.t.sol:TestKeyRegistry Contract |                 |        |        |        |         |
+=============================================================================================================================+
| Deployment Cost                                                      | Deployment Size |        |        |        |         |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 4854651                                                              | 22229           |        |        |        |         |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                      |                 |        |        |        |         |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                        | Min             | Avg    | Median | Max    | # Calls |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKey                                                               | 813             | 7884   | 8559   | 20890  | 10      |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKeyAt                                                             | 988             | 8148   | 9401   | 21729  | 7       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKeyTags                                                           | 35892           | 35892  | 35892  | 35892  | 4       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKeyTagsAt                                                         | 36726           | 37166  | 36726  | 39181  | 6       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKeys()                                                            | 107285          | 107285 | 107285 | 107285 | 1       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKeys(address)                                                     | 44674           | 47588  | 44674  | 53418  | 3       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKeysAt(address,uint48)                                            | 48594           | 52075  | 52075  | 55556  | 2       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKeysAt(uint48)                                                    | 111136          | 111136 | 111136 | 111136 | 1       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKeysOperators                                                     | 17334           | 17334  | 17334  | 17334  | 1       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKeysOperatorsAt                                                   | 18549           | 18549  | 18549  | 18549  | 1       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKeysOperatorsLength                                               | 2439            | 2439   | 2439   | 2439   | 1       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperator                                                          | 2989            | 3001   | 3001   | 3025   | 5       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| hashTypedDataV4                                                      | 6752            | 6752   | 6752   | 6752   | 15      |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                           | 100561          | 100561 | 100561 | 100561 | 14      |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setKey                                                               | 31243           | 240667 | 293623 | 526957 | 18      |
╰----------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/settlement/Settlement.t.sol:TestSettlement Contract |                 |        |        |        |         |
+=========================================================================================================================+
| Deployment Cost                                                  | Deployment Size |        |        |        |         |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 2584488                                                          | 11734           |        |        |        |         |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                  |                 |        |        |        |         |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                    | Min             | Avg    | Median | Max    | # Calls |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| VALIDATOR_SET_VERSION                                            | 249             | 249    | 249    | 249    | 9       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| commitValSetHeader                                               | 26363           | 94034  | 54813  | 193370 | 14      |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getCaptureTimestampFromValSetHeader                              | 4728            | 4728   | 4728   | 4728   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getCaptureTimestampFromValSetHeaderAt                            | 2676            | 2676   | 2676   | 2676   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getExtraData                                                     | 4768            | 4768   | 4768   | 4768   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getExtraDataAt                                                   | 2655            | 2655   | 2655   | 2655   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getLastCommittedHeaderEpoch                                      | 2395            | 2395   | 2395   | 2395   | 2       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getQuorumThresholdFromValSetHeader                               | 4699            | 4699   | 4699   | 4699   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getQuorumThresholdFromValSetHeaderAt                             | 2603            | 2603   | 2603   | 2603   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getRequiredKeyTagFromValSetHeader                                | 4730            | 4730   | 4730   | 4730   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getRequiredKeyTagFromValSetHeaderAt                              | 2654            | 2654   | 2654   | 2654   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getSigVerifier                                                   | 4700            | 5553   | 4700   | 10354  | 10      |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getSigVerifierAt                                                 | 6118            | 6936   | 6118   | 8573   | 3       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getTotalVotingPowerFromValSetHeader                              | 4633            | 4633   | 4633   | 4633   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getTotalVotingPowerFromValSetHeaderAt                            | 2644            | 2644   | 2644   | 2644   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getValSetHeader                                                  | 11830           | 11830  | 11830  | 11830  | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getValSetHeaderAt                                                | 9633            | 9633   | 9633   | 9633   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getValSetHeaderHash                                              | 11842           | 11842  | 11842  | 11842  | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getValSetHeaderHashAt                                            | 9786            | 9786   | 9786   | 9786   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getValidatorsSszMRootFromValSetHeader                            | 4635            | 4635   | 4635   | 4635   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getValidatorsSszMRootFromValSetHeaderAt                          | 2647            | 2647   | 2647   | 2647   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getVersionFromValSetHeader                                       | 4675            | 4675   | 4675   | 4675   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getVersionFromValSetHeaderAt                                     | 2622            | 2622   | 2622   | 2622   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                       | 125031          | 159814 | 159814 | 194598 | 16      |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isValSetHeaderCommittedAt                                        | 2703            | 2703   | 2703   | 2703   | 3       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setGenesis                                                       | 25641           | 107018 | 147068 | 147068 | 6       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setSigVerifier                                                   | 23864           | 46268  | 57470  | 57470  | 3       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| verifyQuorumSigAt                                                | 3887            | 3887   | 3887   | 3887   | 1       |
╰------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/valset-driver/EpochManager.t.sol:TestEpochManager Contract |                 |        |        |        |         |
+================================================================================================================================+
| Deployment Cost                                                         | Deployment Size |        |        |        |         |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 990683                                                                  | 4363            |        |        |        |         |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                         |                 |        |        |        |         |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                           | Min             | Avg    | Median | Max    | # Calls |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| deserializeEpochDurationData                                            | 632             | 632    | 632    | 632    | 1       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getCurrentEpoch                                                         | 2597            | 5167   | 5863   | 5863   | 10      |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getCurrentEpochDuration                                                 | 5544            | 5544   | 5544   | 5544   | 1       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getCurrentEpochDurationData                                             | 2529            | 4055   | 4055   | 5581   | 2       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getCurrentEpochStart                                                    | 7409            | 7409   | 7409   | 7409   | 2       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getCurrentValuePublic                                                   | 2614            | 6491   | 5496   | 8270   | 11      |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getEpochDuration                                                        | 5772            | 6999   | 6999   | 8227   | 2       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getEpochDurationDataByIndex                                             | 5792            | 5792   | 5792   | 5792   | 2       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getEpochDurationDataByTimestamp                                         | 5842            | 5842   | 5842   | 5842   | 1       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getEpochIndex                                                           | 5374            | 5815   | 6036   | 6036   | 3       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getEpochStart                                                           | 6039            | 7266   | 7266   | 8494   | 2       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getNextEpoch                                                            | 5208            | 6041   | 6041   | 6875   | 6       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getNextEpochDuration                                                    | 5169            | 5809   | 5793   | 7793   | 8       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getNextEpochStart                                                       | 5249            | 8463   | 9793   | 14120  | 7       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                              | 44972           | 124273 | 137487 | 137487 | 14      |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| pushTestCheckpoint                                                      | 51895           | 59250  | 59250  | 66606  | 4       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| serializeEpochDurationData                                              | 701             | 701    | 701    | 701    | 1       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setEpochDuration(uint48)                                                | 33754           | 59387  | 40422  | 91169  | 5       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setEpochDuration(uint48,uint48,uint48)                                  | 82394           | 82394  | 82394  | 82394  | 1       |
╰-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
| test/modules/valset-driver/ValSetDriver.t.sol:TestValSetDriver Contract |                 |         |         |         |         |
+===================================================================================================================================+
| Deployment Cost                                                         | Deployment Size |         |         |         |         |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| 3710429                                                                 | 16939           |         |         |         |         |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|                                                                         |                 |         |         |         |         |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name                                                           | Min             | Avg     | Median  | Max     | # Calls |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| addQuorumThreshold                                                      | 24252           | 44576   | 25534   | 102986  | 4       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| addSettlement                                                           | 24275           | 40523   | 24368   | 103030  | 5       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| addVotingPowerProvider                                                  | 24284           | 56255   | 26633   | 103039  | 5       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getCommitterSlotDuration                                                | 4823            | 4823    | 4823    | 4823    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getCommitterSlotDurationAt                                              | 5681            | 6500    | 5681    | 8140    | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getConfig                                                               | 124850          | 124850  | 124850  | 124850  | 5       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getConfigAt                                                             | 133734          | 134826  | 133734  | 136193  | 9       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getKeysProvider                                                         | 7493            | 7493    | 7493    | 7493    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getKeysProviderAt                                                       | 8281            | 8281    | 8281    | 8281    | 1       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getMaxValidatorsCount                                                   | 4882            | 4882    | 4882    | 4882    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getMaxValidatorsCountAt                                                 | 5715            | 6534    | 5715    | 8174    | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getMaxVotingPower                                                       | 7100            | 7100    | 7100    | 7100    | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getMaxVotingPowerAt                                                     | 7887            | 8870    | 7887    | 10346   | 5       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getMinInclusionVotingPower                                              | 7121            | 7121    | 7121    | 7121    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getMinInclusionVotingPowerAt                                            | 7865            | 8684    | 7865    | 10324   | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getNumAggregators                                                       | 4830            | 4830    | 4830    | 4830    | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getNumAggregatorsAt                                                     | 5708            | 6937    | 6937    | 8167    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getNumCommitters                                                        | 4859            | 4859    | 4859    | 4859    | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getNumCommittersAt                                                      | 5648            | 6877    | 6877    | 8107    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getQuorumThresholds                                                     | 18665           | 19336   | 19336   | 20007   | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getQuorumThresholdsAt                                                   | 19813           | 19813   | 19813   | 19813   | 1       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getRequiredHeaderKeyTag                                                 | 4823            | 4823    | 4823    | 4823    | 1       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getRequiredHeaderKeyTagAt                                               | 5637            | 6866    | 6866    | 8096    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getRequiredKeyTags                                                      | 35784           | 35878   | 35878   | 35972   | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getRequiredKeyTagsAt                                                    | 36600           | 37545   | 36788   | 39247   | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSettlements                                                          | 10895           | 16551   | 18735   | 20023   | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSettlementsAt                                                        | 19927           | 19927   | 19927   | 19927   | 1       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVerificationType                                                     | 4868            | 4868    | 4868    | 4868    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVerificationTypeAt                                                   | 5660            | 6889    | 6889    | 8119    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVotingPowerProviders                                                 | 18714           | 24916   | 26554   | 27842   | 4       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVotingPowerProvidersAt                                               | 19908           | 19908   | 19908   | 19908   | 1       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| initialize                                                              | 1112889         | 1112889 | 1112889 | 1112889 | 15      |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isQuorumThresholdRegistered                                             | 3165            | 4283    | 4283    | 5401    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isQuorumThresholdRegisteredAt                                           | 5957            | 5957    | 5957    | 5957    | 1       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isSettlementRegistered                                                  | 3123            | 4241    | 4241    | 5359    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isSettlementRegisteredAt                                                | 5962            | 5962    | 5962    | 5962    | 1       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isVotingPowerProviderRegistered                                         | 3124            | 4614    | 5360    | 5360    | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isVotingPowerProviderRegisteredAt                                       | 3375            | 5113    | 5982    | 5982    | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| removeQuorumThreshold                                                   | 24294           | 44801   | 31338   | 78771   | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| removeSettlement                                                        | 24253           | 44767   | 31288   | 78760   | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| removeVotingPowerProvider                                               | 24242           | 44756   | 31277   | 78749   | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setCommitterSlotDuration                                                | 23844           | 33870   | 28311   | 55015   | 4       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setKeysProvider                                                         | 24318           | 30364   | 30364   | 36411   | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setMaxValidatorsCount                                                   | 23847           | 37209   | 32758   | 55024   | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setMaxVotingPower                                                       | 23769           | 51065   | 35255   | 80531   | 5       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setMinInclusionVotingPower                                              | 52419           | 66513   | 66513   | 80607   | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setNumAggregators                                                       | 23827           | 33610   | 32709   | 54975   | 5       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setNumCommitters                                                        | 23893           | 33686   | 32792   | 55058   | 5       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setRequiredHeaderKeyTag                                                 | 32774           | 43907   | 43907   | 55040   | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setRequiredKeyTags                                                      | 35586           | 46247   | 46247   | 56908   | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setVerificationType                                                     | 23889           | 37209   | 32736   | 55002   | 3       |
╰-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯

╭--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
| test/modules/voting-power/VotingPowerProvider.t.sol:TestVotingPowerProvider Contract |                 |         |         |         |         |
+================================================================================================================================================+
| Deployment Cost                                                                      | Deployment Size |         |         |         |         |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| 3262394                                                                              | 15058           |         |         |         |         |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|                                                                                      |                 |         |         |         |         |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name                                                                        | Min             | Avg     | Median  | Max     | # Calls |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| NETWORK                                                                              | 2427            | 2427    | 2427    | 2427    | 33      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| OPERATOR_REGISTRY                                                                    | 328             | 328     | 328     | 328     | 46      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| SUBNETWORK                                                                           | 683             | 1602    | 683     | 2683    | 1536    |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| SUBNETWORK_IDENTIFIER                                                                | 2502            | 2502    | 2502    | 2502    | 32      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| VAULT_FACTORY                                                                        | 306             | 306     | 306     | 306     | 58      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorStake                                                                     | 83162           | 83162   | 83162   | 83162   | 96      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorStakeAt                                                                   | 90163           | 90163   | 90163   | 90163   | 96      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorStakes                                                                    | 290505          | 290505  | 290505  | 290505  | 32      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorStakesAt                                                                  | 319187          | 319187  | 319187  | 319187  | 32      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVaults                                                                    | 14584           | 15370   | 15370   | 16157   | 2       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVaultsAt                                                                  | 15250           | 15250   | 15250   | 15250   | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVaultsLength                                                              | 6016            | 6016    | 6016    | 6016    | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPower                                                               | 18893           | 56797   | 56797   | 94701   | 192     |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPowerAt                                                             | 19342           | 74813   | 102549  | 102549  | 288     |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPowers                                                              | 322841          | 323498  | 323498  | 324155  | 64      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPowersAt                                                            | 353895          | 354552  | 354552  | 355209  | 64      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperators                                                                         | 14057           | 16339   | 14843   | 21612   | 4       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorsAt                                                                       | 19754           | 21345   | 21345   | 22936   | 2       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorsLength                                                                   | 5597            | 5597    | 5597    | 5597    | 3       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSharedVaults                                                                      | 14077           | 14863   | 14863   | 15650   | 2       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSharedVaultsAt                                                                    | 14929           | 14929   | 14929   | 14929   | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSharedVaultsLength                                                                | 5623            | 5623    | 5623    | 5623    | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSlashingData                                                                      | 8251            | 8251    | 8251    | 8251    | 12      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSlashingDataAt                                                                    | 10551           | 11778   | 11778   | 13006   | 2       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getTokens                                                                            | 23199           | 23199   | 23199   | 23199   | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getTokensAt                                                                          | 11697           | 18631   | 18905   | 25020   | 4       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getTokensLength                                                                      | 5613            | 5613    | 5613    | 5613    | 3       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVotingPowers                                                                      | 5754613         | 5754613 | 5754613 | 5754613 | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVotingPowersAt                                                                    | 6763710         | 6763710 | 6763710 | 6763710 | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| hashTypedDataV4                                                                      | 6743            | 6743    | 6743    | 6743    | 3       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| initialize                                                                           | 179126          | 182041  | 179126  | 269517  | 31      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| invalidateOldSignatures                                                              | 43554           | 43554   | 43554   | 43554   | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorRegistered                                                                 | 8488            | 9253    | 8488    | 10784   | 9       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorRegisteredAt                                                               | 6687            | 8326    | 9146    | 9146    | 3       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegistered(address)                                                   | 8435            | 8894    | 8435    | 10731   | 5       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegistered(address,address)                                           | 8712            | 9094    | 8712    | 11008   | 6       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegisteredAt(address,address,uint48)                                  | 9470            | 9470    | 9470    | 9470    | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegisteredAt(address,uint48)                                          | 9120            | 9120    | 9120    | 9120    | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isSharedVaultRegistered                                                              | 8466            | 8466    | 8466    | 8466    | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isSharedVaultRegisteredAt                                                            | 9188            | 9188    | 9188    | 9188    | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isTokenRegistered                                                                    | 8373            | 8373    | 8373    | 8373    | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isTokenRegisteredAt                                                                  | 11996           | 11996   | 11996   | 11996   | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| nonces                                                                               | 2598            | 2598    | 2598    | 2598    | 5       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerOperator()                                                                   | 143163          | 143163  | 143163  | 143163  | 4       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerOperator(address)                                                            | 31090           | 90354   | 87175   | 121375  | 41      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerOperatorVault                                                                | 42340           | 213918  | 234213  | 268413  | 44      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerOperatorWithSignature                                                        | 39159           | 99068   | 99068   | 158978  | 2       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerSharedVault                                                                  | 31138           | 90142   | 72657   | 170550  | 12      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerToken                                                                        | 24886           | 100171  | 115181  | 115181  | 14      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setSlashingData                                                                      | 56782           | 56782   | 56782   | 56782   | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| stakeToVotingPower                                                                   | 893             | 893     | 893     | 893     | 480     |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| stakeToVotingPowerAt                                                                 | 961             | 961     | 961     | 961     | 576     |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterOperator()                                                                 | 78857           | 78857   | 78857   | 78857   | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterOperator(address)                                                          | 27461           | 50763   | 50763   | 74065   | 2       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterOperatorVault                                                              | 123003          | 123111  | 123111  | 123219  | 2       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterOperatorWithSignature                                                      | 94671           | 94671   | 94671   | 94671   | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterSharedVault                                                                | 32143           | 53179   | 53179   | 74215   | 2       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterToken                                                                      | 32135           | 61711   | 74207   | 78791   | 3       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| validateVault                                                                        | 41549           | 46047   | 46047   | 50546   | 2       |
╰--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯

╭-----------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/modules/voting-power/common/voting-power-calc/NormalizedTokenDecimalsVPCalc.t.sol:MockToken Contract |                 |       |        |       |         |
+================================================================================================================================================================+
| Deployment Cost                                                                                           | Deployment Size |       |        |       |         |
|-----------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 543826                                                                                                    | 3105            |       |        |       |         |
|-----------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                                                           |                 |       |        |       |         |
|-----------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                                                             | Min             | Avg   | Median | Max   | # Calls |
|-----------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| approve                                                                                                   | 46294           | 46315 | 46318  | 46318 | 162     |
|-----------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| balanceOf                                                                                                 | 559             | 2074  | 2559   | 2559  | 669     |
|-----------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| decimals                                                                                                  | 182             | 182   | 182    | 182   | 169     |
|-----------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| totalSupply                                                                                               | 2325            | 2325  | 2325   | 2325  | 345     |
╰-----------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/voting-power/common/voting-power-calc/NormalizedTokenDecimalsVPCalc.t.sol:TestVotingPowerProvider Contract |                 |        |        |        |         |
+================================================================================================================================================================================+
| Deployment Cost                                                                                                         | Deployment Size |        |        |        |         |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 3414699                                                                                                                 | 15762           |        |        |        |         |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                                                         |                 |        |        |        |         |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                                                           | Min             | Avg    | Median | Max    | # Calls |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| NETWORK                                                                                                                 | 2494            | 2494   | 2494   | 2494   | 96      |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| OPERATOR_REGISTRY                                                                                                       | 306             | 306    | 306    | 306    | 96      |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| SUBNETWORK                                                                                                              | 2661            | 2661   | 2661   | 2661   | 192     |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| SUBNETWORK_IDENTIFIER                                                                                                   | 2480            | 2480   | 2480   | 2480   | 96      |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| VAULT_FACTORY                                                                                                           | 306             | 306    | 306    | 306    | 96      |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVaults                                                                                                       | 14584           | 14584  | 14584  | 14584  | 96      |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVotingPower                                                                                                  | 84466           | 84738  | 84871  | 84877  | 96      |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getSlashingData                                                                                                         | 8251            | 8251   | 8251   | 8251   | 96      |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                                                                              | 179104          | 224299 | 224299 | 269495 | 6       |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperator                                                                                                        | 87153           | 88221  | 87153  | 121353 | 96      |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperatorVault                                                                                                   | 234179          | 235257 | 234191 | 268391 | 96      |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| stakeToVotingPower                                                                                                      | 6535            | 6807   | 6940   | 6946   | 96      |
╰-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/voting-power/common/voting-power-calc/PricedTokensChainlinkVPCalc.t.sol:TestVotingPowerProvider Contract |                 |        |        |        |         |
+==============================================================================================================================================================================+
| Deployment Cost                                                                                                       | Deployment Size |        |        |        |         |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 4211259                                                                                                               | 19445           |        |        |        |         |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                                                       |                 |        |        |        |         |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                                                         | Min             | Avg    | Median | Max    | # Calls |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| NETWORK                                                                                                               | 2494            | 2494   | 2494   | 2494   | 232     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| OPERATOR_REGISTRY                                                                                                     | 306             | 306    | 306    | 306    | 232     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| SUBNETWORK                                                                                                            | 2661            | 2661   | 2661   | 2661   | 484     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| SUBNETWORK_IDENTIFIER                                                                                                 | 2480            | 2480   | 2480   | 2480   | 232     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| VAULT_FACTORY                                                                                                         | 306             | 306    | 306    | 306    | 232     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVaults                                                                                                     | 14584           | 14584  | 14584  | 14584  | 232     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVotingPower                                                                                                | 148605          | 151606 | 152703 | 153170 | 212     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVotingPowerAt                                                                                              | 495302          | 495302 | 495302 | 495302 | 40      |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getSlashingData                                                                                                       | 8251            | 8251   | 8251   | 8251   | 232     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getTokenHops                                                                                                          | 11443           | 11443  | 11443  | 11443  | 8       |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getTokenHopsAt                                                                                                        | 12204           | 12204  | 12204  | 12204  | 8       |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getTokenPrice                                                                                                         | 63851           | 64037  | 63851  | 64318  | 5       |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getTokenPriceAt                                                                                                       | 22163           | 324379 | 399954 | 413870 | 7       |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                                                                            | 269495          | 269495 | 269495 | 269495 | 8       |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperator                                                                                                      | 87175           | 88354  | 87175  | 121375 | 232     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperatorVault                                                                                                 | 234179          | 235368 | 234191 | 268391 | 232     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setTokenHops                                                                                                          | 24752           | 99863  | 99077  | 119453 | 18      |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| stakeToVotingPower                                                                                                    | 70648           | 73649  | 74746  | 75213  | 212     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| stakeToVotingPowerAt                                                                                                  | 410917          | 410917 | 410917 | 410917 | 40      |
╰-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/modules/voting-power/common/voting-power-calc/VotingPowerCalcsComposition.t.sol:MultiCalcMock Contract |                 |       |        |       |         |
+==================================================================================================================================================================+
| Deployment Cost                                                                                             | Deployment Size |       |        |       |         |
|-------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 1420651                                                                                                     | 6352            |       |        |       |         |
|-------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                                                             |                 |       |        |       |         |
|-------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                                                               | Min             | Avg   | Median | Max   | # Calls |
|-------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| setTokenPrice                                                                                               | 44095           | 44095 | 44095  | 44095 | 2       |
|-------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| setTokenWeight                                                                                              | 68568           | 68568 | 68568  | 68568 | 2       |
|-------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| setVaultCollateral                                                                                          | 44276           | 44276 | 44276  | 44276 | 2       |
|-------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| setVaultWeight                                                                                              | 68352           | 68352 | 68352  | 68352 | 2       |
|-------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| stakeToVotingPower                                                                                          | 19045           | 19247 | 19247  | 19450 | 2       |
|-------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| stakeToVotingPowerAt                                                                                        | 20338           | 20540 | 20540  | 20743 | 2       |
╰-------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/voting-power/common/voting-power-calc/WeightedTokensVPCalc.t.sol:TestVotingPowerProvider Contract |                 |        |        |        |         |
+=======================================================================================================================================================================+
| Deployment Cost                                                                                                | Deployment Size |        |        |        |         |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 3834606                                                                                                        | 17704           |        |        |        |         |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                                                |                 |        |        |        |         |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                                                  | Min             | Avg    | Median | Max    | # Calls |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| NETWORK                                                                                                        | 2427            | 2427   | 2427   | 2427   | 33      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| OPERATOR_REGISTRY                                                                                              | 328             | 328    | 328    | 328    | 33      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| SUBNETWORK                                                                                                     | 2661            | 2661   | 2661   | 2661   | 102     |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| SUBNETWORK_IDENTIFIER                                                                                          | 2524            | 2524   | 2524   | 2524   | 33      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| VAULT_FACTORY                                                                                                  | 306             | 306    | 306    | 306    | 33      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVaults                                                                                              | 14584           | 14584  | 14584  | 14584  | 64      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVotingPower                                                                                         | 89524           | 90669  | 90669  | 91815  | 64      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVotingPowerAt                                                                                       | 96114           | 98760  | 98888  | 101343 | 5       |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getSlashingData                                                                                                | 8251            | 8251   | 8251   | 8251   | 33      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                                                                     | 179126          | 215282 | 179126 | 269517 | 5       |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperator                                                                                               | 87197           | 89269  | 87197  | 121397 | 33      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperatorVault                                                                                          | 234201          | 236283 | 234213 | 268413 | 33      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setTokenWeight                                                                                                 | 22209           | 56411  | 68502  | 68682  | 5       |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| stakeToVotingPower                                                                                             | 11571           | 12716  | 12716  | 13862  | 64      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| stakeToVotingPowerAt                                                                                           | 11737           | 14383  | 14511  | 16966  | 5       |
╰----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/voting-power/common/voting-power-calc/WeightedVaultsVPCalc.t.sol:TestVotingPowerProvider Contract |                 |        |        |        |         |
+=======================================================================================================================================================================+
| Deployment Cost                                                                                                | Deployment Size |        |        |        |         |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 3689898                                                                                                        | 17035           |        |        |        |         |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                                                |                 |        |        |        |         |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                                                  | Min             | Avg    | Median | Max    | # Calls |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| NETWORK                                                                                                        | 2427            | 2427   | 2427   | 2427   | 34      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| OPERATOR_REGISTRY                                                                                              | 306             | 306    | 306    | 306    | 34      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| SUBNETWORK                                                                                                     | 2661            | 2661   | 2661   | 2661   | 71      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| SUBNETWORK_IDENTIFIER                                                                                          | 2502            | 2502   | 2502   | 2502   | 34      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| VAULT_FACTORY                                                                                                  | 306             | 306    | 306    | 306    | 34      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVaults                                                                                              | 14584           | 14584  | 14584  | 14584  | 33      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVotingPower                                                                                         | 81405           | 81476  | 81405  | 83690  | 32      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVotingPowerAt                                                                                       | 88016           | 90662  | 90790  | 93245  | 5       |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getSlashingData                                                                                                | 8251            | 8251   | 8251   | 8251   | 34      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getVaultWeightAt                                                                                               | 3097            | 6120   | 5871   | 8326   | 6       |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                                                                     | 179104          | 217843 | 179104 | 269495 | 7       |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperator                                                                                               | 87153           | 90170  | 87153  | 121353 | 34      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperatorVault                                                                                          | 234201          | 237228 | 234213 | 268413 | 34      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setVaultWeight                                                                                                 | 22140           | 57779  | 68433  | 68661  | 7       |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| stakeToVotingPower                                                                                             | 3474            | 3545   | 3474   | 5759   | 32      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| stakeToVotingPowerAt                                                                                           | 3639            | 6285   | 6413   | 8868   | 5       |
╰----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/voting-power/extensions/MultiToken.t.sol:TestMultiToken Contract |                 |        |        |        |         |
+======================================================================================================================================+
| Deployment Cost                                                               | Deployment Size |        |        |        |         |
|-------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 2702244                                                                       | 12468           |        |        |        |         |
|-------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                               |                 |        |        |        |         |
|-------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                 | Min             | Avg    | Median | Max    | # Calls |
|-------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                                    | 269516          | 269516 | 269516 | 269516 | 2       |
|-------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isTokenRegistered                                                             | 8372            | 9520   | 9520   | 10668  | 2       |
|-------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerToken                                                                 | 80730           | 80730  | 80730  | 80730  | 2       |
|-------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| unregisterToken                                                               | 78801           | 78801  | 78801  | 78801  | 1       |
╰-------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------╮
| test/modules/voting-power/extensions/OpNetVaultAutoDeploy.t.sol:TestOpNetVaultAutoDeploy Contract |                 |        |         |         |         |
+============================================================================================================================================================+
| Deployment Cost                                                                                   | Deployment Size |        |         |         |         |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| 3280298                                                                                           | 15210           |        |         |         |         |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
|                                                                                                   |                 |        |         |         |         |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| Function Name                                                                                     | Min             | Avg    | Median  | Max     | # Calls |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| NETWORK                                                                                           | 413             | 1413   | 1413    | 2413    | 6       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| OPERATOR_REGISTRY                                                                                 | 306             | 306    | 306     | 306     | 4       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| SUBNETWORK                                                                                        | 2712            | 2712   | 2712    | 2712    | 1       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| VAULT_CONFIGURATOR                                                                                | 327             | 327    | 327     | 327     | 3       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| VAULT_FACTORY                                                                                     | 284             | 284    | 284     | 284     | 3       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| getAutoDeployConfig                                                                               | 9118            | 9118   | 9118    | 9118    | 1       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| getAutoDeployedVault                                                                              | 6024            | 6024   | 6024    | 6024    | 5       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| getOperatorVaults                                                                                 | 14562           | 14955  | 14562   | 16135   | 4       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| getSlashingData                                                                                   | 1751            | 3917   | 1751    | 8251    | 18      |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| initialize                                                                                        | 330115          | 330115 | 330115  | 330115  | 12      |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| isAutoDeployEnabled                                                                               | 5567            | 5567   | 5567    | 5567    | 2       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| isSetMaxNetworkLimitHookEnabled                                                                   | 5655            | 5655   | 5655    | 5655    | 1       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| registerOperator                                                                                  | 78448           | 958443 | 1178938 | 1397450 | 4       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| setAutoDeployConfig                                                                               | 26834           | 34105  | 35955   | 40939   | 7       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| setAutoDeployStatus                                                                               | 30961           | 43786  | 48061   | 48061   | 4       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| setSetMaxNetworkLimitHookStatus                                                                   | 48077           | 48077  | 48077   | 48077   | 1       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| setSlashingData                                                                                   | 34482           | 34482  | 34482   | 34482   | 3       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| unregisterOperator                                                                                | 78879           | 78879  | 78879   | 78879   | 1       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| unregisterOperatorVault                                                                           | 128129          | 128129 | 128129  | 128129  | 1       |
╰---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------╯

╭---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/voting-power/extensions/OperatorVaults.t.sol:TestOperatorVaults Contract |                 |        |        |        |         |
+==============================================================================================================================================+
| Deployment Cost                                                                       | Deployment Size |        |        |        |         |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 2876559                                                                               | 13289           |        |        |        |         |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                       |                 |        |        |        |         |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                         | Min             | Avg    | Median | Max    | # Calls |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| OPERATOR_REGISTRY                                                                     | 283             | 283    | 283    | 283    | 1       |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| VAULT_FACTORY                                                                         | 328             | 328    | 328    | 328    | 2       |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getSlashingData                                                                       | 8251            | 8251   | 8251   | 8251   | 1       |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                                            | 269472          | 269472 | 269472 | 269472 | 1       |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isOperatorVaultRegistered                                                             | 8457            | 10179  | 10753  | 10753  | 4       |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperator                                                                      | 143118          | 143118 | 143118 | 143118 | 1       |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperatorVault                                                                 | 24556           | 151263 | 158545 | 270689 | 3       |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| unregisterOperatorVault(address)                                                      | 49385           | 49385  | 49385  | 49385  | 1       |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| unregisterOperatorVault(address,address)                                              | 24600           | 75031  | 75031  | 125463 | 2       |
╰---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/voting-power/extensions/OperatorsBlacklist.t.sol:TestOperatorsBlacklist Contract |                 |        |        |        |         |
+======================================================================================================================================================+
| Deployment Cost                                                                               | Deployment Size |        |        |        |         |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 2901985                                                                                       | 13392           |        |        |        |         |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                               |                 |        |        |        |         |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                                 | Min             | Avg    | Median | Max    | # Calls |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| OPERATOR_REGISTRY                                                                             | 283             | 283    | 283    | 283    | 2       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| blacklistOperator                                                                             | 24118           | 56516  | 51266  | 99414  | 4       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getSlashingData                                                                               | 8251            | 8251   | 8251   | 8251   | 6       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                                                    | 269472          | 269472 | 269472 | 269472 | 6       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isOperatorBlacklisted                                                                         | 2619            | 2619   | 2619   | 2619   | 5       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isOperatorRegistered                                                                          | 8422            | 9187   | 8422   | 10718  | 3       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperator                                                                              | 23635           | 104821 | 145415 | 145415 | 3       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| unblacklistOperator                                                                           | 23541           | 23838  | 23838  | 24136  | 2       |
╰-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/voting-power/extensions/OperatorsJail.t.sol:TestOperatorsJail Contract |                 |        |        |        |         |
+============================================================================================================================================+
| Deployment Cost                                                                     | Deployment Size |        |        |        |         |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 2953448                                                                             | 13630           |        |        |        |         |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                     |                 |        |        |        |         |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                       | Min             | Avg    | Median | Max    | # Calls |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| OPERATOR_REGISTRY                                                                   | 283             | 283    | 283    | 283    | 3       |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorJailedUntil                                                              | 2666            | 2666   | 2666   | 2666   | 5       |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                                          | 269472          | 269472 | 269472 | 269472 | 6       |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isOperatorJailed                                                                    | 2713            | 2713   | 2713   | 2713   | 7       |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isOperatorRegistered                                                                | 8422            | 9187   | 8422   | 10718  | 3       |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| jailOperator                                                                        | 22400           | 47399  | 43071  | 99769  | 6       |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperator                                                                    | 23685           | 86571  | 94556  | 145465 | 5       |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| unjailOperator                                                                      | 23592           | 23889  | 23889  | 24187  | 2       |
╰-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/voting-power/extensions/OperatorsWhitelist.t.sol:TestOperatorsWhitelist Contract |                 |        |        |        |         |
+======================================================================================================================================================+
| Deployment Cost                                                                               | Deployment Size |        |        |        |         |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 3004098                                                                                       | 13864           |        |        |        |         |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                               |                 |        |        |        |         |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                                 | Min             | Avg    | Median | Max    | # Calls |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| OPERATOR_REGISTRY                                                                             | 327             | 327    | 327    | 327    | 4       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| VAULT_FACTORY                                                                                 | 328             | 328    | 328    | 328    | 1       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getSlashingData                                                                               | 8251            | 8251   | 8251   | 8251   | 11      |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                                                    | 293443          | 293443 | 293443 | 293443 | 11      |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isOperatorRegistered                                                                          | 8443            | 9017   | 8443   | 10739  | 4       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isOperatorVaultRegistered(address)                                                            | 8457            | 8457   | 8457   | 8457   | 1       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isOperatorVaultRegistered(address,address)                                                    | 8734            | 8734   | 8734   | 8734   | 1       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isOperatorWhitelisted                                                                         | 2686            | 2686   | 2686   | 2686   | 2       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isWhitelistEnabled                                                                            | 2401            | 2401   | 2401   | 2401   | 4       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperator                                                                              | 25797           | 106270 | 145394 | 147621 | 6       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperatorVault                                                                         | 268468          | 268468 | 268468 | 268468 | 1       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setWhitelistStatus                                                                            | 23091           | 26973  | 23433  | 45003  | 6       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| unwhitelistOperator                                                                           | 24114           | 51888  | 51888  | 79663  | 2       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| whitelistOperator                                                                             | 24096           | 40079  | 45407  | 45407  | 4       |
╰-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-----------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/voting-power/extensions/SharedVaults.t.sol:TestSharedVaults Contract |                 |        |        |        |         |
+==========================================================================================================================================+
| Deployment Cost                                                                   | Deployment Size |        |        |        |         |
|-----------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 2724473                                                                           | 12571           |        |        |        |         |
|-----------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                   |                 |        |        |        |         |
|-----------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                     | Min             | Avg    | Median | Max    | # Calls |
|-----------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| VAULT_FACTORY                                                                     | 328             | 328    | 328    | 328    | 2       |
|-----------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                                        | 269494          | 269494 | 269494 | 269494 | 2       |
|-----------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isSharedVaultRegistered                                                           | 8465            | 9613   | 9613   | 10761  | 2       |
|-----------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerSharedVault                                                               | 170594          | 170594 | 170594 | 170594 | 2       |
|-----------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| unregisterSharedVault                                                             | 74215           | 74215  | 74215  | 74215  | 1       |
╰-----------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯


Ran 46 test suites in 11.24s (64.23s CPU time): 387 tests passed, 0 failed, 0 skipped (387 total tests)
```

## File: snapshots/sizes.txt

```
No files changed, compilation skipped

╭------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------╮
| Contract                                                                                                         | Runtime Size (B) | Initcode Size (B) | Runtime Margin (B) | Initcode Margin (B) |
+====================================================================================================================================================================================================+
| Address                                                                                                          | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| Arrays                                                                                                           | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| AuthorityUtils                                                                                                   | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| BLS12381                                                                                                         | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| BLS12381Harness                                                                                                  | 2,075            | 2,103             | 22,501             | 47,049              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| BN254                                                                                                            | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| BN254G2                                                                                                          | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| BaseRewardsLogic                                                                                                 | 1,606            | 1,658             | 22,970             | 47,494              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| BaseSlashingLogic                                                                                                | 4,387            | 4,439             | 20,189             | 44,713              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| Bytes                                                                                                            | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| ChainlinkPriceFeed                                                                                               | 6,094            | 6,146             | 18,482             | 43,006              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| Checkpoints (lib/core/src/contracts/libraries/Checkpoints.sol)                                                   | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| Checkpoints (lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol)                                 | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| Checkpoints (src/libraries/structs/Checkpoints.sol)                                                              | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| Comparators                                                                                                      | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| Create2                                                                                                          | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| CreateXWrapper                                                                                                   | 2,764            | 2,792             | 21,812             | 46,360              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| ECDSA                                                                                                            | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| ERC1967Proxy                                                                                                     | 122              | 934               | 24,454             | 48,218              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| ERC1967Utils                                                                                                     | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| ERC4626Math                                                                                                      | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| EnumerableSet                                                                                                    | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| Errors                                                                                                           | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| ExtraDataStorageHelper                                                                                           | 123              | 173               | 24,453             | 48,979              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| FeeOnTransferToken                                                                                               | 1,785            | 3,197             | 22,791             | 45,955              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| InputNormalizer                                                                                                  | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| KeyBlsBls12381                                                                                                   | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| KeyBlsBls12381Mock                                                                                               | 3,931            | 3,959             | 20,645             | 45,193              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| KeyBlsBn254                                                                                                      | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| KeyBlsBn254Mock                                                                                                  | 2,659            | 2,687             | 21,917             | 46,465              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| KeyEcdsaSecp256k1                                                                                                | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| KeyEcdsaSecp256k1Mock                                                                                            | 1,362            | 1,390             | 23,214             | 47,762              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| KeyRegistry                                                                                                      | 21,229           | 21,257            | 3,347              | 27,895              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| KeyRegistryWithKey64                                                                                             | 21,653           | 21,681            | 2,923              | 27,471              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| KeyTags                                                                                                          | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| Logs                                                                                                             | 4,290            | 4,342             | 20,286             | 44,810              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| Math                                                                                                             | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| MessageHashUtils                                                                                                 | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| MockAuthority                                                                                                    | 258              | 392               | 24,318             | 48,760              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| MockToken (test/modules/voting-power/common/voting-power-calc/NormalizedTokenDecimalsVPCalc.t.sol)               | 1,757            | 2,881             | 22,819             | 46,271              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| MockToken (test/modules/voting-power/common/voting-power-calc/VotingPowerCalcsComposition.t.sol)                 | 1,757            | 2,881             | 22,819             | 46,271              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| MockToken (test/modules/voting-power/common/voting-power-calc/WeightedTokensVPCalc.t.sol)                        | 1,757            | 2,881             | 22,819             | 46,271              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| MockToken (test/modules/voting-power/common/voting-power-calc/WeightedVaultsVPCalc.t.sol)                        | 1,757            | 2,881             | 22,819             | 46,271              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| MultiCalcMock                                                                                                    | 6,324            | 6,352             | 18,252             | 42,800              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| MyKeyRegistry                                                                                                    | 21,498           | 21,526            | 3,078              | 27,626              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| MySettlement                                                                                                     | 12,906           | 12,934            | 11,670             | 36,218              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| MyValSetDriver                                                                                                   | 19,147           | 19,175            | 5,429              | 29,977              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| MyVotingPowerProvider                                                                                            | 12,963           | 13,131            | 11,613             | 36,021              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| Network                                                                                                          | 12,358           | 12,550            | 12,218             | 36,602              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| OpNetVaultAutoDeployLogic                                                                                        | 5,693            | 5,745             | 18,883             | 43,407              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| Panic                                                                                                            | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| PersistentSet                                                                                                    | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| ProxyAdmin                                                                                                       | 977              | 1,213             | 23,599             | 47,939              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| RewarderMock                                                                                                     | 730              | 758               | 23,846             | 48,394              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| SafeCast                                                                                                         | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| SafeERC20                                                                                                        | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| Scaler                                                                                                           | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| SigBlsBls12381                                                                                                   | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| SigBlsBn254                                                                                                      | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| SigEcdsaSecp256k1                                                                                                | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| SigVerifierBlsBn254Simple                                                                                        | 4,946            | 4,974             | 19,630             | 44,178              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| SigVerifierBlsBn254ZK                                                                                            | 2,694            | 3,774             | 21,882             | 45,378              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| SigVerifierFalseMock                                                                                             | 586              | 614               | 23,990             | 48,538              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| SigVerifierMock                                                                                                  | 587              | 615               | 23,989             | 48,537              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| SignatureChecker                                                                                                 | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| SignedMath                                                                                                       | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| Simulation                                                                                                       | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| SlasherMock                                                                                                      | 1,264            | 1,292             | 23,312             | 47,860              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| SlotDerivation                                                                                                   | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| StorageSlot                                                                                                      | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| Strings                                                                                                          | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| Subnetwork                                                                                                       | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| SymbioticCoreBytecode                                                                                            | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| SymbioticCoreConstants                                                                                           | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| SymbioticUtils                                                                                                   | 80               | 109               | 24,496             | 49,043              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestEpochManager                                                                                                 | 4,335            | 4,363             | 20,241             | 44,789              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestKeyRegistry                                                                                                  | 22,201           | 22,229            | 2,375              | 26,923              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestMultiToken                                                                                                   | 12,236           | 12,404            | 12,340             | 36,748              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestNetworkManager                                                                                               | 1,356            | 1,384             | 23,220             | 47,768              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestNoPermissionManager                                                                                          | 336              | 364               | 24,240             | 48,788              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestOpNetVaultAutoDeploy                                                                                         | 14,906           | 15,114            | 9,670              | 34,038              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestOperatorVaults                                                                                               | 12,923           | 13,225            | 11,653             | 35,927              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestOperatorsBlacklist                                                                                           | 13,160           | 13,328            | 11,416             | 35,824              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestOperatorsJail                                                                                                | 13,398           | 13,566            | 11,178             | 35,586              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestOperatorsWhitelist                                                                                           | 13,632           | 13,800            | 10,944             | 35,352              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestOzAccessControl                                                                                              | 1,754            | 1,782             | 22,822             | 47,370              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestOzAccessManaged                                                                                              | 1,607            | 1,635             | 22,969             | 47,517              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestOzEIP712                                                                                                     | 2,570            | 2,598             | 22,006             | 46,554              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestOzOwnable                                                                                                    | 971              | 999               | 23,605             | 48,153              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestPermissionManager                                                                                            | 575              | 603               | 24,001             | 48,549              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestSettlement                                                                                                   | 11,706           | 11,734            | 12,870             | 37,418              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestSharedVaults                                                                                                 | 12,339           | 12,507            | 12,237             | 36,645              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestValSetDriver                                                                                                 | 16,911           | 16,939            | 7,665              | 32,213              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestVotingPowerCalcManager                                                                                       | 911              | 939               | 23,665             | 48,213              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestVotingPowerProvider (test/modules/voting-power/VotingPowerProvider.t.sol)                                    | 14,826           | 14,994            | 9,750              | 34,158              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestVotingPowerProvider (test/modules/voting-power/common/voting-power-calc/NormalizedTokenDecimalsVPCalc.t.sol) | 15,530           | 15,698            | 9,046              | 33,454              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestVotingPowerProvider (test/modules/voting-power/common/voting-power-calc/PricedTokensChainlinkVPCalc.t.sol)   | 19,213           | 19,381            | 5,363              | 29,771              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestVotingPowerProvider (test/modules/voting-power/common/voting-power-calc/WeightedTokensVPCalc.t.sol)          | 17,472           | 17,640            | 7,104              | 31,512              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TestVotingPowerProvider (test/modules/voting-power/common/voting-power-calc/WeightedVaultsVPCalc.t.sol)          | 16,803           | 16,971            | 7,773              | 32,181              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TimelockControllerUpgradeable                                                                                    | 7,690            | 7,718             | 16,886             | 41,434              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| Token                                                                                                            | 1,723            | 3,065             | 22,853             | 46,087              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| TransparentUpgradeableProxy                                                                                      | 1,073            | 3,445             | 23,503             | 45,707              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| ValSetVerifier                                                                                                   | 44               | 94                | 24,532             | 49,058              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| ValSetVerifierContract                                                                                           | 2,804            | 2,832             | 21,772             | 46,320              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| ValSetVerifierMock                                                                                               | 1,170            | 1,198             | 23,406             | 47,954              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| Verifier (test/data/zk/Verifier_10.sol)                                                                          | 6,391            | 6,419             | 18,185             | 42,733              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| Verifier (test/data/zk/Verifier_100.sol)                                                                         | 6,393            | 6,421             | 18,183             | 42,731              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| Verifier (test/data/zk/Verifier_1000.sol)                                                                        | 6,391            | 6,419             | 18,185             | 42,733              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| VotingPowerProviderFull                                                                                          | 24,293           | 24,501            | 283                | 24,651              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| VotingPowerProviderLogic                                                                                         | 15,628           | 15,680            | 8,948              | 33,472              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| VotingPowerProviderSemiFull                                                                                      | 16,899           | 17,067            | 7,677              | 32,085              |
|------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------|
| VotingPowerProviderSharedVaults                                                                                  | 12,826           | 12,994            | 11,750             | 36,158              |
╰------------------------------------------------------------------------------------------------------------------+------------------+-------------------+--------------------+---------------------╯
```

## File: src/interfaces/modules/base/INetworkManager.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IStaticDelegateCallable} from "@symbioticfi/core/src/interfaces/common/IStaticDelegateCallable.sol";
⋮----
/**
 * @title INetworkManager
 * @notice Interface for the NetworkManager contract.
 */
interface INetworkManager is IStaticDelegateCallable {
/**
     * @notice Reverts when the network is zero address.
     */
⋮----
/**
     * @notice The storage of the NetworkManager contract.
     * @param _network The address of the network.
     * @param _subnetworkID The identifier of the subnetwork.
     * @dev The whole set of contracts supports only a single subnetwork per network.
     * @custom:storage-location erc7201:symbiotic.storage.NetworkManager
     */
⋮----
/**
     * @notice The parameters for the initialization of the NetworkManager contract.
     * @param network The address of the network.
     * @param subnetworkId The identifier of the subnetwork.
     * @dev `network` is not obligated to be registered in NetworkRegistry contract, it can be any non-zero address.
     */
⋮----
/**
     * @notice Emitted during the NetworkManager initialization.
     * @param network The address of the network.
     * @param subnetworkId The identifier of the subnetwork.
     */
event InitSubnetwork(address network, uint96 subnetworkId);
⋮----
/**
     * @notice Returns the address of the network.
     * @return The address of the network.
     */
function NETWORK() external view returns (address);
⋮----
/**
     * @notice Returns the identifier of the subnetwork.
     * @return The identifier of the subnetwork.
     */
function SUBNETWORK_IDENTIFIER() external view returns (uint96);
⋮----
/**
     * @notice Returns the subnetwork (a concatenation of the network and the subnetwork ID).
     * @return The subnetwork.
     */
function SUBNETWORK() external view returns (bytes32);
```

## File: src/interfaces/modules/base/IOzEIP712.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IERC5267} from "@openzeppelin/contracts/interfaces/IERC5267.sol";
⋮----
/**
 * @title IOzEIP712
 * @notice Interface for the OzEIP712 contract.
 */
interface IOzEIP712 is IERC5267 {
/**
     * @notice The parameters for the initialization of the OzEIP712 contract.
     * @param name The name for EIP712.
     * @param version The version for EIP712.
     */
⋮----
/**
     * @notice Emitted during the OzEIP712 initialization.
     * @param name The name for EIP712.
     * @param version The version for EIP712.
     */
event InitEIP712(string name, string version);
⋮----
/**
     * @notice Returns the EIP712 hash of the typed data.
     * @param structHash The hash of the typed data struct.
     * @return The EIP712 formatted hash.
     */
function hashTypedDataV4(bytes32 structHash) external view returns (bytes32);
⋮----
/**
     * @notice Wraps the `structHash` to the EIP712 format for cross-chain usage.
     * @param structHash The hash of the typed data struct.
     * @return The EIP712 formatted hash.
     * @dev It doesn't include `chainId` and `verifyingContract` fields for the domain separator.
     */
function hashTypedDataV4CrossChain(bytes32 structHash) external view returns (bytes32);
```

## File: src/interfaces/modules/base/IPermissionManager.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
/**
 * @title IPermissionManager
 * @notice Interface for the PermissionManager contract.
 */
interface IPermissionManager {}
```

## File: src/interfaces/modules/common/permissions/IOzAccessControl.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IPermissionManager} from "../../../modules/base/IPermissionManager.sol";
⋮----
import {IAccessControl} from "@openzeppelin/contracts/access/IAccessControl.sol";
⋮----
/**
 * @title IOzAccessControl
 * @notice Interface for the OzAccessControl contract.
 */
interface IOzAccessControl is IPermissionManager, IAccessControl {
/**
     * @notice The storage of the OzAccessControl contract.
     * @param _selectorRoles The mapping from the function selector to the required role.
     * @custom:storage-location erc7201:symbiotic.storage.OzAccessControl
     */
⋮----
/**
     * @notice Emitted when the required role is set for a selector.
     * @param selector The function selector.
     * @param role The required role.
     */
event SetSelectorRole(bytes4 indexed selector, bytes32 indexed role);
⋮----
/**
     * @notice Returns the required role for a selector.
     * @param selector The function selector.
     * @return The required role.
     */
function getRole(bytes4 selector) external view returns (bytes32);
```

## File: src/interfaces/modules/common/permissions/IOzAccessManaged.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IPermissionManager} from "../../../modules/base/IPermissionManager.sol";
⋮----
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
⋮----
/**
 * @title IOzAccessManaged
 * @notice Interface for the OzAccessManaged contract.
 */
interface IOzAccessManaged is IPermissionManager, IAccessManaged {
/**
     * @notice The parameters for the initialization of the OzAccessManaged contract.
     * @param authority The address of the authority that will check the access.
     */
```

## File: src/interfaces/modules/common/permissions/IOzOwnable.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IPermissionManager} from "../../../modules/base/IPermissionManager.sol";
⋮----
/**
 * @title IOzOwnable
 * @notice Interface for the OzOwnable contract.
 */
interface IOzOwnable is IPermissionManager {
/**
     * @notice The parameters for the initialization of the OzOwnable contract.
     * @param owner The address of the owner.
     */
```

## File: src/interfaces/modules/key-registry/IKeyRegistry.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IOzEIP712} from "../../modules/base/IOzEIP712.sol";
⋮----
import {Checkpoints} from "../../../libraries/structs/Checkpoints.sol";
import {PersistentSet} from "../../../libraries/structs/PersistentSet.sol";
⋮----
/**
 * @title IKeyRegistry
 * @notice Interface for the KeyRegistry contract.
 */
interface IKeyRegistry is IOzEIP712 {
/**
     * @notice Reverts when the key is already used by another operator or with another tag.
     */
⋮----
/**
     * @notice Reverts when the key ownership signature is invalid.
     */
⋮----
/**
     * @notice Reverts when the key type is not supported.
     */
⋮----
/**
     * @notice The storage of the KeyRegistry contract.
     * @param _keys32 The mapping from the operator and the key tag to the 32 bytes key.
     * @param _keys64 The mapping from the operator and the key tag to the 64 bytes key.
     * @param _operatorByKeyHash The mapping from the key hash to the operator.
     * @param _operatorByTypeAndKeyHash The mapping from the key type and the key hash to the operator.
     * @param _operatorByTagAndKeyHash The mapping from the key type and the key hash to the operator.
     * @param _operators The set of operators with registered keys.
     * @param _operatorKeyTags The mapping from the operator to the registered key tags.
     * @custom:storage-location erc7201:symbiotic.storage.KeyRegistry
     */
⋮----
/**
     * @notice The parameters for the initialization of the KeyRegistry contract.
     * @param ozEip712InitParams The parameters for the initialization of the OzEIP712 contract.
     */
⋮----
/**
     * @notice The key with the tag and the payload.
     * @param tag The tag of the key.
     * @param payload The payload of the key.
     */
⋮----
/**
     * @notice The operator with the keys.
     * @param operator The address of the operator.
     * @param keys The operator's keys.
     */
⋮----
/**
     * @notice Emitted when the key is set.
     * @param operator The address of the operator.
     * @param tag The tag of the key.
     * @param key The payload of the key.
     * @param extraData The extra data of the key (e.g., the G2 key for BLS keys).
     */
event SetKey(address indexed operator, uint8 indexed tag, bytes indexed key, bytes extraData);
⋮----
/**
     * @notice Returns the operator's keys at a specific timestamp.
     * @param operator The address of the operator.
     * @param timestamp The timestamp.
     * @return The operator's keys.
     */
function getKeysAt(address operator, uint48 timestamp) external view returns (Key[] memory);
⋮----
/**
     * @notice Returns the current operator's keys.
     * @param operator The address of the operator.
     * @return The operator's keys.
     */
function getKeys(address operator) external view returns (Key[] memory);
⋮----
/**
     * @notice Returns the key at a specific timestamp.
     * @param operator The address of the operator.
     * @param tag The tag of the key.
     * @param timestamp The timestamp.
     * @return The key.
     * @dev Will return a zero key if the key is not found (e.g., abi.encode(address(0)) for ECDSA keys).
     */
function getKeyAt(address operator, uint8 tag, uint48 timestamp) external view returns (bytes memory);
⋮----
/**
     * @notice Returns the current key.
     * @param operator The address of the operator.
     * @param tag The tag of the key.
     * @return The key.
     * @dev Will return a zero key if the key is not found (e.g., abi.encode(address(0)) for ECDSA keys).
     */
function getKey(address operator, uint8 tag) external view returns (bytes memory);
⋮----
/**
     * @notice Returns the operator by the key.
     * @param key The key.
     * @return The operator.
     */
function getOperator(bytes memory key) external view returns (address);
⋮----
/**
     * @notice Returns the operators with their keys at a specific timestamp.
     * @param timestamp The timestamp.
     * @return The operators with their keys.
     * @dev Different operators may have different numbers of keys and their tags.
     */
function getKeysAt(uint48 timestamp) external view returns (OperatorWithKeys[] memory);
⋮----
/**
     * @notice Returns the current operators with their keys.
     * @return The operators with their keys.
     * @dev Different operators may have different numbers of keys and their tags.
     */
function getKeys() external view returns (OperatorWithKeys[] memory);
⋮----
/**
     * @notice Returns the number of the operators who registered any keys.
     * @return The number of the operators who registered any keys.
     */
function getKeysOperatorsLength() external view returns (uint256);
⋮----
/**
     * @notice Returns the operators who registered any keys until a specific timestamp.
     * @param timestamp The timestamp.
     * @return The operators who registered any keys until a specific timestamp.
     */
function getKeysOperatorsAt(uint48 timestamp) external view returns (address[] memory);
⋮----
/**
     * @notice Returns the operators who registered any keys.
     * @return The operators who registered any keys.
     */
function getKeysOperators() external view returns (address[] memory);
⋮----
/**
     * @notice Sets a key for a caller.
     * @param tag The tag of the key.
     * @param key The payload of the key.
     * @param signature The signature to verify the key ownership.
     * @param extraData The extra data of the key (e.g., the G2 key for BLS keys).
     */
function setKey(uint8 tag, bytes memory key, bytes memory signature, bytes memory extraData) external;
```

## File: src/interfaces/modules/settlement/sig-verifiers/zk/IVerifier.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
/**
 * @title IVerifier
 * @notice Interface for the gnark verifier contracts.
 */
interface IVerifier {
/**
     * @notice Verifies a ZK proof for the given input.
     * @param proof The ZK proof.
     * @param commitments The commitments.
     * @param commitmentPok The commitment proof of knowledge.
     * @param input The circuit public input.
     * @dev Reverts if the proof is invalid.
     */
function verifyProof(
```

## File: src/interfaces/modules/settlement/sig-verifiers/ISigVerifier.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
/**
 * @title ISigVerifier
 * @notice Interface for the signature verifier contracts.
 */
interface ISigVerifier {
/**
     * @notice Returns the type of the signature verification.
     * @return The type of the signature verification.
     */
function VERIFICATION_TYPE() external view returns (uint32);
⋮----
/**
     * @notice Returns the result of the quorum signature verification.
     * @param settlement The address of the Settlement contract.
     * @param epoch The epoch from which the validator set is to use.
     * @param message The message to verify.
     * @param keyTag The tag of the key.
     * @param quorumThreshold The quorum threshold (in absolute terms).
     * @param proof The proof (depends on the verification type).
     * @return The result of the quorum signature verification.
     */
function verifyQuorumSig(
```

## File: src/interfaces/modules/settlement/sig-verifiers/ISigVerifierBlsBn254Simple.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {ISigVerifier} from "./ISigVerifier.sol";
⋮----
/**
 * @title ISigVerifierBlsBn254Simple
 * @notice Interface for the SigVerifierBlsBn254Simple contract.
 */
interface ISigVerifierBlsBn254Simple is ISigVerifier {
/**
     * @notice Reverts when the message length is invalid.
     */
⋮----
/**
     * @notice Reverts when the non-signer index is greater than the number of validators.
     */
⋮----
/**
     * @notice Reverts when the non-signers' indices are not in the correct order.
     * @dev The indices must be sorted in ascending order.
     */
⋮----
/**
     * @notice Reverts when the proof length is too short.
     */
⋮----
/**
     * @notice Reverts when the proof offset is invalid.
     */
⋮----
/**
     * @notice Reverts when the number of validators exceeds the maximum allowed for this verification mechanism.
     */
⋮----
/**
     * @notice Reverts when the verification is not supported for the given key tag.
     */
⋮----
/**
     * @notice Returns the marker for extra data fetching of the validator set keccak256 hash.
     * @return The marker for extra data fetching of the validator set keccak256 hash.
     */
function VALIDATOR_SET_HASH_KECCAK256_HASH() external view returns (bytes32);
⋮----
/**
     * @notice Returns the marker for extra data fetching of the aggregated public key G1.
     * @return The marker for extra data fetching of the aggregated public key G1.
     * @dev The public key is compressed to one bytes32 slot.
     */
function AGGREGATED_PUBLIC_KEY_G1_HASH() external view returns (bytes32);
⋮----
/**
     * @notice Returns the maximum allowed number of validators for this verification mechanism.
     * @return The maximum allowed number of validators for this verification mechanism.
     * @dev The maximum exists because each non-signer's index is encoded as a 2 bytes value.
     */
function MAX_VALIDATORS() external view returns (uint256);
```

## File: src/interfaces/modules/settlement/sig-verifiers/ISigVerifierBlsBn254ZK.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {ISigVerifier} from "./ISigVerifier.sol";
⋮----
/**
 * @title ISigVerifierBlsBn254ZK
 * @notice Interface for the SigVerifierBlsBn254ZK contract.
 */
interface ISigVerifierBlsBn254ZK is ISigVerifier {
/**
     * @notice Reverts when the number of verifiers and max validators is not the same or zero.
     */
⋮----
/**
     * @notice Reverts when the maximum supported number of validators is zero.
     */
⋮----
/**
     * @notice Reverts when the maximum supported numbers of validators is not in the correct order.
     * @dev The maximum supported numbers of validators must be in ascending order.
     */
⋮----
/**
     * @notice Reverts when the message length is invalid.
     */
⋮----
/**
     * @notice Reverts when the proof length is invalid.
     */
⋮----
/**
     * @notice Reverts when the proof offset is invalid.
     */
⋮----
/**
     * @notice Reverts when the total active validators is greater than the maximum supported.
     */
⋮----
/**
     * @notice Reverts when the verifier is zero address.
     */
⋮----
/**
     * @notice Reverts when the verification is not supported for the given key tag.
     */
⋮----
/**
     * @notice Returns the marker for extra data fetching of the total active validators.
     * @return The marker for extra data fetching of the total active validators.
     */
function TOTAL_ACTIVE_VALIDATORS_HASH() external view returns (bytes32);
⋮----
/**
     * @notice Returns the marker for extra data fetching of the validator set MiMC hash.
     * @return The marker for extra data fetching of the validator set MiMC hash.
     */
function VALIDATOR_SET_HASH_MIMC_HASH() external view returns (bytes32);
⋮----
/**
     * @notice Returns the verifier at the given index.
     * @param index The index of the verifier.
     * @return The verifier at the given index.
     */
function verifiers(uint256 index) external view returns (address);
⋮----
/**
     * @notice Returns the maximum supported number of validators for the verifier at the given index.
     * @param index The index of the verifier.
     * @return The maximum supported number of validators for the verifier at the given index.
     */
function maxValidators(uint256 index) external view returns (uint256);
```

## File: src/interfaces/modules/settlement/ISettlement.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {INetworkManager} from "../../modules/base/INetworkManager.sol";
import {IOzEIP712} from "../../modules/base/IOzEIP712.sol";
import {IPermissionManager} from "../../modules/base/IPermissionManager.sol";
⋮----
import {Checkpoints} from "../../../libraries/structs/Checkpoints.sol";
⋮----
/**
 * @title ISettlement
 * @notice Interface for the Settlement contract.
 */
interface ISettlement is INetworkManager, IOzEIP712, IPermissionManager {
/**
     * @notice Reverts when the extra data key is duplicated.
     */
⋮----
/**
     * @notice Reverts when the capture timestamp is less than or equal to the capture timestamp of the latest committed header,
     *         or greater than or equal to the current timestamp.
     */
⋮----
/**
     * @notice Reverts when the proposed during the commit epoch is less than or equal to the latest committed one.
     */
⋮----
/**
     * @notice Reverts when the new quorum signature verifier is zero.
     */
⋮----
/**
     * @notice Reverts when the validator set SSZ root is zero.
     */
⋮----
/**
     * @notice Reverts when the version to be committed is not the same as the version inside the contract.
     * @dev Can be triggered during the upgrades.
     */
⋮----
/**
     * @notice Reverts when the quorum threshold is greater than the total voting power.
     */
⋮----
/**
     * @notice Reverts when the validator set header is already committed for the proposed epoch.
     */
⋮----
/**
     * @notice Reverts when the quorum signature verification fails.
     */
⋮----
/**
     * @notice The storage of the Settlement contract.
     * @param _lastCommittedHeaderEpoch The epoch of the last committed header.
     * @param _sigVerifier The address of the quorum signature verifier.
     * @param _valSetHeader The mapping from the epoch to the validator set header.
     * @param _extraData The mapping from the epoch and the key to the extra data.
     * @custom:storage-location ERC-7201 slot: erc7201:symbiotic.storage.Settlement.
     */
⋮----
/**
     * @notice The parameters for the initialization of the Settlement contract.
     * @param networkManagerInitParams The parameters for the initialization of the NetworkManager.
     * @param ozEip712InitParams The parameters for the initialization of the OzEIP712.
     * @param sigVerifier The address of the quorum signature verifier.
     */
⋮----
/**
     * @notice The validator set header.
     * @param version The version of the validator set header.
     * @param requiredKeyTag The required key tag for the validator set header using which the next header will be committed.
     * @param epoch The epoch of the validator set.
     * @param captureTimestamp The capture timestamp of the validator set.
     * @param quorumThreshold The quorum threshold of the validator set header which will need to be reached to commit the next header.
     * @param totalVotingPower The total voting power of the validator set.
     * @param validatorsSszMRoot The validator set SSZ root.
     */
⋮----
/**
     * @notice The extra data.
     * @param key The key to store the extra data with.
     * @param value The value of the extra data.
     * @dev This key-value storage is fully flexible and can be used to store any data (e.g., verification-specific aggregated data).
     */
⋮----
/**
     * @notice Emitted during the Settlement initialization.
     * @param sigVerifier The address of the quorum signature verifier.
     */
event InitSigVerifier(address sigVerifier);
⋮----
/**
     * @notice Emitted when the quorum signature verifier is set.
     * @param sigVerifier The address of the quorum signature verifier.
     * @dev The new verifier will be "committed" only in the next epoch.
     */
event SetSigVerifier(address sigVerifier);
⋮----
/**
     * @notice Emitted when the genesis is set.
     * @param valSetHeader The validator set header.
     * @param extraData The extra data.
     */
event SetGenesis(ValSetHeader valSetHeader, ExtraData[] extraData);
⋮----
/**
     * @notice Emitted when the validator set header is committed.
     * @param valSetHeader The validator set header.
     * @param extraData The extra data.
     */
event CommitValSetHeader(ValSetHeader valSetHeader, ExtraData[] extraData);
⋮----
/**
     * @notice Returns the version of the validator set.
     * @return The version of the validator set.
     */
function VALIDATOR_SET_VERSION() external view returns (uint8);
⋮----
/**
     * @notice Returns the quorum signature verifier at the given epoch.
     * @param epoch The epoch.
     * @param hint The hint for the quorum signature verifier.
     * @return The quorum signature verifier at the given epoch.
     */
function getSigVerifierAt(uint48 epoch, bytes memory hint) external view returns (address);
⋮----
/**
     * @notice Returns the quorum signature verifier.
     * @return The quorum signature verifier.
     */
function getSigVerifier() external view returns (address);
⋮----
/**
     * @notice Returns the epoch of the last committed validator set header.
     * @return The epoch of the last committed validator set header.
     */
function getLastCommittedHeaderEpoch() external view returns (uint48);
⋮----
/**
     * @notice Returns if the validator set header is committed at the given epoch.
     * @param epoch The epoch.
     * @return True if the validator set header is committed at the given epoch.
     */
function isValSetHeaderCommittedAt(uint48 epoch) external view returns (bool);
⋮----
/**
     * @notice Returns the hash of the validator set header at the given epoch.
     * @param epoch The epoch.
     * @return The hash of the validator set header at the given epoch.
     */
function getValSetHeaderHashAt(uint48 epoch) external view returns (bytes32);
⋮----
/**
     * @notice Returns the hash of the last committed validator set header.
     * @return The hash of the last committed validator set header.
     */
function getValSetHeaderHash() external view returns (bytes32);
⋮----
/**
     * @notice Returns the validator set header at the given epoch.
     * @param epoch The epoch.
     * @return The validator set header at the given epoch.
     */
function getValSetHeaderAt(uint48 epoch) external view returns (ValSetHeader memory);
⋮----
/**
     * @notice Returns the last committed validator set header.
     * @return The last committed validator set header.
     */
function getValSetHeader() external view returns (ValSetHeader memory);
⋮----
/**
     * @notice Returns the version of the validator set header at the given epoch.
     * @param epoch The epoch.
     * @return The version of the validator set header at the given epoch.
     */
function getVersionFromValSetHeaderAt(uint48 epoch) external view returns (uint8);
⋮----
/**
     * @notice Returns the version from the last committed validator set header.
     * @return The version from the last committed validator set header.
     */
function getVersionFromValSetHeader() external view returns (uint8);
⋮----
/**
     * @notice Returns the required key tag from the validator set header at the given epoch.
     * @param epoch The epoch.
     * @return The required key tag from the validator set header at the given epoch.
     */
function getRequiredKeyTagFromValSetHeaderAt(uint48 epoch) external view returns (uint8);
⋮----
/**
     * @notice Returns the required key tag from the last committed validator set header.
     * @return The required key tag from the last committed validator set header.
     */
function getRequiredKeyTagFromValSetHeader() external view returns (uint8);
⋮----
/**
     * @notice Returns the capture timestamp from the validator set header at the given epoch.
     * @param epoch The epoch.
     * @return The capture timestamp from the validator set header at the given epoch.
     */
function getCaptureTimestampFromValSetHeaderAt(uint48 epoch) external view returns (uint48);
⋮----
/**
     * @notice Returns the capture timestamp from the last committed validator set header.
     * @return The capture timestamp from the last committed validator set header.
     */
function getCaptureTimestampFromValSetHeader() external view returns (uint48);
⋮----
/**
     * @notice Returns the quorum threshold from the validator set header at the given epoch.
     * @param epoch The epoch.
     * @return The quorum threshold from the validator set header at the given epoch.
     */
function getQuorumThresholdFromValSetHeaderAt(uint48 epoch) external view returns (uint256);
⋮----
/**
     * @notice Returns the quorum threshold from the last committed validator set header.
     * @return The quorum threshold from the last committed validator set header.
     */
function getQuorumThresholdFromValSetHeader() external view returns (uint256);
⋮----
/**
     * @notice Returns the total voting power from the validator set header at the given epoch.
     * @param epoch The epoch.
     * @return The total voting power from the validator set header at the given epoch.
     */
function getTotalVotingPowerFromValSetHeaderAt(uint48 epoch) external view returns (uint256);
⋮----
/**
     * @notice Returns the total voting power from the last committed validator set header.
     * @return The total voting power from the last committed validator set header.
     */
function getTotalVotingPowerFromValSetHeader() external view returns (uint256);
⋮----
/**
     * @notice Returns the validator set SSZ root from the validator set header at the given epoch.
     * @param epoch The epoch.
     * @return The validator set SSZ root from the validator set header at the given epoch.
     */
function getValidatorsSszMRootFromValSetHeaderAt(uint48 epoch) external view returns (bytes32);
⋮----
/**
     * @notice Returns the validator set SSZ root from the last committed validator set header.
     * @return The validator set SSZ root from the last committed validator set header.
     */
function getValidatorsSszMRootFromValSetHeader() external view returns (bytes32);
⋮----
/**
     * @notice Returns the extra data at the given epoch for a certain key.
     * @param epoch The epoch.
     * @param key The key.
     * @return The extra data at the given epoch for a certain key.
     */
function getExtraDataAt(uint48 epoch, bytes32 key) external view returns (bytes32);
⋮----
/**
     * @notice Returns the extra data from the last committed epoch for a certain key.
     * @param key The key.
     * @return The extra data from the last committed epoch for a certain key.
     */
function getExtraData(bytes32 key) external view returns (bytes32);
⋮----
/**
     * @notice Returns the result of the quorum signature verification for the given message at the given epoch.
     * @param message The message to verify.
     * @param keyTag The key tag to use for the quorum signature verification.
     * @param quorumThreshold The quorum threshold to require for the quorum signature verification.
     * @param proof The proof to verify the quorum signature.
     * @param epoch The epoch.
     * @param hint The hint to optimize the signature verifier fetching.
     * @return The result of the quorum signature verification for the given message at the given epoch.
     */
function verifyQuorumSigAt(
⋮----
/**
     * @notice Returns the result of the quorum signature verification for the given message using the last committed validator set header.
     * @param message The message to verify.
     * @param keyTag The key tag to use for the quorum signature verification.
     * @param quorumThreshold The quorum threshold to require for the quorum signature verification.
     * @param proof The proof to verify the quorum signature.
     * @return The result of the quorum signature verification for the given message using the last committed validator set header.
     */
function verifyQuorumSig(bytes memory message, uint8 keyTag, uint256 quorumThreshold, bytes calldata proof)
⋮----
/**
     * @notice Sets the quorum signature verifier.
     * @param sigVerifier The address of the quorum signature verifier.
     * @dev The new verifier will be "committed" only in the next epoch.
     * @dev The caller must have the needed permission.
     */
function setSigVerifier(address sigVerifier) external;
⋮----
/**
     * @notice Sets the genesis validator set header and its extra data.
     * @param valSetHeader The validator set header.
     * @param extraData The extra data.
     * @dev The caller must have the needed permission.
     *      Can be called multiple times.
     */
function setGenesis(ValSetHeader calldata valSetHeader, ExtraData[] calldata extraData) external;
⋮----
/**
     * @notice Commits the validator set header and its extra data.
     * @param header The validator set header.
     * @param extraData The extra data.
     * @param proof The proof to verify the quorum signature.
     * @dev The caller can be anyone, the call is validated by verification of the validator set's attestation.
     */
function commitValSetHeader(ValSetHeader calldata header, ExtraData[] calldata extraData, bytes calldata proof)
```

## File: src/interfaces/modules/valset-driver/IEpochManager.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IPermissionManager} from "../base/IPermissionManager.sol";
⋮----
import {Checkpoints} from "../../../libraries/structs/Checkpoints.sol";
⋮----
/**
 * @title IEpochManager
 * @notice Interface for the EpochManager contract.
 */
interface IEpochManager is IPermissionManager {
/**
     * @notice Reverts when the epoch duration is zero.
     */
⋮----
/**
     * @notice Reverts when the initial epoch duration timestamp is less than the current timestamp.
     */
⋮----
/**
     * @notice Reverts when the timestamp is too old.
     */
⋮----
/**
     * @notice The storage of the EpochManager contract.
     * @param _epochDurationDataByTimestamp The epoch duration data checkpointed by timestamps.
     * @param _epochDurationDataByIndex The epoch duration data checkpointed by epoch indexes.
     * @custom:storage-location erc7201:symbiotic.storage.EpochManager
     */
⋮----
/**
     * @notice The parameters for the initialization of the EpochManager contract.
     * @param epochDuration The epoch duration.
     * @param epochDurationTimestamp The initial epoch duration timestamp.
     */
⋮----
/**
     * @notice Emitted during the initialization of the EpochManager contract.
     * @param epochDuration The epoch duration.
     * @param epochDurationTimestamp The initial epoch duration timestamp.
     */
event InitEpochDuration(uint48 epochDuration, uint48 epochDurationTimestamp);
⋮----
/**
     * @notice Emitted when the epoch duration is set.
     * @param epochDuration The epoch duration.
     * @dev The new duration will be "committed" only in the next epoch.
     */
event SetEpochDuration(uint48 epochDuration);
⋮----
/**
     * @notice Returns the current epoch.
     * @return The current epoch.
     */
function getCurrentEpoch() external view returns (uint48);
⋮----
/**
     * @notice Returns the current epoch duration.
     * @return The current epoch duration.
     */
function getCurrentEpochDuration() external view returns (uint48);
⋮----
/**
     * @notice Returns the current epoch start.
     * @return The current epoch start.
     */
function getCurrentEpochStart() external view returns (uint48);
⋮----
/**
     * @notice Returns the next epoch.
     * @return The next epoch.
     */
function getNextEpoch() external view returns (uint48);
⋮----
/**
     * @notice Returns the next epoch duration.
     * @return The next epoch duration.
     */
function getNextEpochDuration() external view returns (uint48);
⋮----
/**
     * @notice Returns the next epoch start.
     * @return The next epoch start.
     */
function getNextEpochStart() external view returns (uint48);
⋮----
/**
     * @notice Returns the epoch index at the given timestamp.
     * @param timestamp The timestamp.
     * @return The epoch index at the given timestamp.
     */
function getEpochIndex(uint48 timestamp) external view returns (uint48);
⋮----
/**
     * @notice Returns the epoch duration of the given epoch.
     * @param epoch The epoch.
     * @return The epoch duration of the given epoch.
     */
function getEpochDuration(uint48 epoch) external view returns (uint48);
⋮----
/**
     * @notice Returns the epoch start of the given epoch.
     * @param epoch The epoch.
     * @return The epoch start of the given epoch.
     */
function getEpochStart(uint48 epoch) external view returns (uint48);
⋮----
/**
     * @notice Sets the epoch duration.
     * @param epochDuration The epoch duration.
     * @dev The new duration will be "committed" only in the next epoch.
     *      The caller must have the needed permission.
     */
function setEpochDuration(uint48 epochDuration) external;
```

## File: src/interfaces/modules/valset-driver/IValSetDriver.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IEpochManager} from "./IEpochManager.sol";
import {INetworkManager} from "../../modules/base/INetworkManager.sol";
⋮----
import {Checkpoints} from "../../../libraries/structs/Checkpoints.sol";
import {PersistentSet} from "../../../libraries/structs/PersistentSet.sol";
⋮----
/**
 * @title IValSetDriver
 * @notice Interface for the ValSetDriver contract.
 */
interface IValSetDriver is IEpochManager, INetworkManager {
/**
     * @notice Reverts when the cross-chain address with the same chain ID is already added.
     */
⋮----
/**
     * @notice Reverts when the cross-chain address is either zero or has zero chain ID.
     */
⋮----
/**
     * @notice Reverts when the maximum active validators count is zero.
     */
⋮----
/**
     * @notice Reverts when the quorum threshold is greater than the maximum quorum threshold.
     * @dev The maximum quorum threshold is 1e18 = 100%.
     */
⋮----
/**
     * @notice Reverts when the quorum threshold with the same key tag is already added.
     */
⋮----
/**
     * @notice Reverts when the subject is not added but was tried to be removed.
     */
⋮----
/**
     * @notice Reverts when the committer slot duration is zero.
     */
⋮----
/**
     * @notice Reverts when the number of aggregators is zero.
     */
⋮----
/**
     * @notice Reverts when the number of committers is zero.
     */
⋮----
/**
     * @notice The storage of the ValSetDriver contract.
     * @param _numAggregators The checkpoint of the number of aggregators.
     * @param _numCommitters The checkpoint of the number of committers.
     * @param _committerSlotDuration The checkpoint of the committer slot duration.
     * @param _isVotingPowerProviderChainAdded The mapping from the chain ID to the voting power provider chain added status.
     * @param _votingPowerProviders The set of the voting power providers.
     * @param _keysProvider The checkpoint of the keys provider.
     * @param _isSettlementChainAdded The mapping from the chain ID to the settlement chain added status.
     * @param _settlements The set of the settlements.
     * @param _maxVotingPower The checkpoint of the maximum voting power.
     * @param _minInclusionVotingPower The checkpoint of the minimum inclusion voting power.
     * @param _maxValidatorsCount The checkpoint of the maximum active validators count.
     * @param _requiredKeyTags The checkpoint of the required key tags.
     * @param _isQuorumThresholdKeyTagAdded The mapping from the key tag to the quorum threshold key tag added status.
     * @param _quorumThresholds The set of the quorum thresholds.
     * @param _requiredHeaderKeyTag The checkpoint of the required header key tag.
     * @param _verificationType The checkpoint of the verification type.
     * @custom:storage-location ERC-7201 slot: erc7201:symbiotic.storage.ValSetDriver.
     */
⋮----
/**
     * @notice The parameters for the initialization of the ValSetDriver contract.
     * @param networkManagerInitParams The parameters for the initialization of the NetworkManager contract.
     * @param epochManagerInitParams The parameters for the initialization of the EpochManager contract.
     * @param numAggregators The number of aggregators (those who aggregate the validators' signatures
     *         and produce the proof for the verification) at the genesis.
     * @param numCommitters The number of committers (those who commit some data (e.g., ValSetHeader)
     *         to on-chain) at the genesis.
     * @param committerSlotDuration The committer slot duration (determines how often the committers are switched) at the genesis.
     * @param votingPowerProviders The voting power providers (contracts that provide the voting powers of the operators on different chains).
     * @param keysProvider The keys provider (contract that provides the keys of the operators).
     * @param settlements The settlements (contracts that enable a verification of the validator set's attestations on different chains).
     * @param maxVotingPower The maximum voting power for each validator.
     * @param minInclusionVotingPower The minimum inclusion voting power for the operator to be included in the validator set.
     * @param maxValidatorsCount The maximum active validators count in the validator set.
     * @param requiredKeyTags The required key tags to include in the validator set.
     * @param quorumThresholds The quorum thresholds to use for attestations' verification.
     * @param requiredHeaderKeyTag The required header key tag to use to maintain the validator set through epochs.
     * @param verificationType The verification type (e.g., simple on-chain verification, or zk-based one).
     */
⋮----
/**
     * @notice The cross-chain address.
     * @param chainId The chain ID.
     * @param addr The address.
     */
⋮----
/**
     * @notice The quorum threshold.
     * @param keyTag The key tag.
     * @param quorumThreshold The quorum threshold (percentage).
     */
⋮----
/**
     * @notice The configuration.
     * @param numAggregators The number of aggregators (those who aggregate the validators' signatures
     *         and produce the proof for the verification).
     * @param numCommitters The number of committers (those who commit some data (e.g., ValSetHeader)
     *         to on-chain).
     * @param committerSlotDuration The committer slot duration (determines how often the committers are switched).
     * @param votingPowerProviders The voting power providers (contracts that provide the voting powers of the operators on different chains).
     * @param keysProvider The keys provider (contract that provides the keys of the operators).
     * @param settlements The settlements (contracts that enable a verification of the validator set's attestations on different chains).
     * @param maxVotingPower The maximum voting power for each validator.
     * @param minInclusionVotingPower The minimum inclusion voting power for the operator to be included in the validator set.
     * @param maxValidatorsCount The maximum active validators count in the validator set.
     * @param requiredKeyTags The required key tags to include in the validator set.
     * @param quorumThresholds The quorum thresholds to use for attestations' verification.
     * @param requiredHeaderKeyTag The required header key tag to use to maintain the validator set through epochs.
     * @param verificationType The verification type (e.g., simple on-chain verification, or zk-based one).
     */
⋮----
/**
     * @notice Emitted when the number of aggregators is set.
     * @param numAggregators The number of aggregators (those who aggregate the validators' signatures
     *         and produce the proof for the verification).
     */
event SetNumAggregators(uint208 numAggregators);
⋮----
/**
     * @notice Emitted when the number of committers is set.
     * @param numCommitters The number of committers (those who commit some data (e.g., ValSetHeader)
     *         to on-chain).
     */
event SetNumCommitters(uint208 numCommitters);
⋮----
/**
     * @notice Emitted when the committer slot duration is set.
     * @param committerSlotDuration The committer slot duration.
     */
event SetCommitterSlotDuration(uint48 committerSlotDuration);
⋮----
/**
     * @notice Emitted when the voting power provider is added.
     * @param votingPowerProvider The voting power provider (contract that provides the voting powers of the operators on different chains).
     */
event AddVotingPowerProvider(CrossChainAddress votingPowerProvider);
⋮----
/**
     * @notice Emitted when the voting power provider is removed.
     * @param votingPowerProvider The voting power provider (contract that provides the voting powers of the operators on different chains).
     */
event RemoveVotingPowerProvider(CrossChainAddress votingPowerProvider);
⋮----
/**
     * @notice Emitted when the keys provider is set.
     * @param keysProvider The keys provider (contract that provides the keys of the operators).
     */
event SetKeysProvider(CrossChainAddress keysProvider);
⋮----
/**
     * @notice Emitted when the settlement is added.
     * @param settlement The settlement (contract that enable a verification of the validator set's attestations on different chains).
     */
event AddSettlement(CrossChainAddress settlement);
⋮----
/**
     * @notice Emitted when the settlement is removed.
     * @param settlement The settlement (contract that enable a verification of the validator set's attestations on different chains).
     */
event RemoveSettlement(CrossChainAddress settlement);
⋮----
/**
     * @notice Emitted when the maximum voting power is set.
     * @param maxVotingPower The maximum voting power for each validator.
     */
event SetMaxVotingPower(uint256 maxVotingPower);
⋮----
/**
     * @notice Emitted when the minimum inclusion voting power is set.
     * @param minInclusionVotingPower The minimum inclusion voting power for the operator to be included in the validator set.
     */
event SetMinInclusionVotingPower(uint256 minInclusionVotingPower);
⋮----
/**
     * @notice Emitted when the maximum active validators count is set.
     * @param maxValidatorsCount The maximum active validators count in the validator set.
     */
event SetMaxValidatorsCount(uint208 maxValidatorsCount);
⋮----
/**
     * @notice Emitted when the required key tags are set.
     * @param requiredKeyTags The required key tags to include in the validator set.
     */
event SetRequiredKeyTags(uint8[] requiredKeyTags);
⋮----
/**
     * @notice Emitted when the quorum threshold is added.
     * @param quorumThreshold The quorum threshold to use for attestations' verification.
     */
event AddQuorumThreshold(QuorumThreshold quorumThreshold);
⋮----
/**
     * @notice Emitted when the required header key tag is set.
     * @param requiredHeaderKeyTag The required header key tag to use to maintain the validator set through epochs.
     */
event SetRequiredHeaderKeyTag(uint8 requiredHeaderKeyTag);
⋮----
/**
     * @notice Emitted when the quorum threshold is removed.
     * @param quorumThreshold The quorum threshold to use for attestations' verification.
     */
event RemoveQuorumThreshold(QuorumThreshold quorumThreshold);
⋮----
/**
     * @notice Emitted when the verification type is set.
     * @param verificationType The verification type (e.g., simple on-chain verification, or zk-based one).
     */
event SetVerificationType(uint32 verificationType);
⋮----
/**
     * @notice Returns the maximum quorum threshold.
     * @return The maximum quorum threshold.
     * @dev The maximum quorum threshold is 1e18 = 100%.
     */
function MAX_QUORUM_THRESHOLD() external view returns (uint248);
⋮----
/**
     * @notice Returns the configuration at the given timestamp.
     * @param timestamp The timestamp.
     * @return The configuration.
     */
function getConfigAt(uint48 timestamp) external view returns (Config memory);
⋮----
/**
     * @notice Returns the configuration.
     * @return The configuration.
     */
function getConfig() external view returns (Config memory);
⋮----
/**
     * @notice Returns the number of aggregators (those who aggregate the validators' signatures
     *         and produce the proof for the verification) at the given timestamp.
     * @param timestamp The timestamp.
     * @return The number of aggregators.
     */
function getNumAggregatorsAt(uint48 timestamp) external view returns (uint208);
⋮----
/**
     * @notice Returns the number of aggregators (those who aggregate the validators' signatures
     *         and produce the proof for the verification).
     * @return The number of aggregators.
     */
function getNumAggregators() external view returns (uint208);
⋮----
/**
     * @notice Returns the number of committers (those who commit some data (e.g., ValSetHeader)
     *         to on-chain) at the given timestamp.
     * @param timestamp The timestamp.
     * @return The number of committers.
     */
function getNumCommittersAt(uint48 timestamp) external view returns (uint208);
⋮----
/**
     * @notice Returns the number of committers (those who commit some data (e.g., ValSetHeader)
     *         to on-chain).
     * @return The number of committers.
     */
function getNumCommitters() external view returns (uint208);
⋮----
/**
     * @notice Returns the committer slot duration at the given timestamp.
     * @param timestamp The timestamp.
     * @return The committer slot duration.
     */
function getCommitterSlotDurationAt(uint48 timestamp) external view returns (uint48);
⋮----
/**
     * @notice Returns the committer slot duration.
     * @return The committer slot duration.
     */
function getCommitterSlotDuration() external view returns (uint48);
⋮----
/**
     * @notice Returns if the voting power provider is registered at the given timestamp.
     * @param votingPowerProvider The voting power provider.
     * @param timestamp The timestamp.
     * @return If the voting power provider is registered.
     */
function isVotingPowerProviderRegisteredAt(CrossChainAddress memory votingPowerProvider, uint48 timestamp)
⋮----
/**
     * @notice Returns if the voting power provider is registered.
     * @param votingPowerProvider The voting power provider.
     * @return If the voting power provider is registered.
     */
function isVotingPowerProviderRegistered(CrossChainAddress memory votingPowerProvider) external view returns (bool);
⋮----
/**
     * @notice Returns the voting power providers at the given timestamp.
     * @param timestamp The timestamp.
     * @return The voting power providers (contracts that provide the voting powers of the operators on different chains).
     */
function getVotingPowerProvidersAt(uint48 timestamp) external view returns (CrossChainAddress[] memory);
⋮----
/**
     * @notice Returns the voting power providers.
     * @return The voting power providers (contracts that provide the voting powers of the operators on different chains).
     */
function getVotingPowerProviders() external view returns (CrossChainAddress[] memory);
⋮----
/**
     * @notice Returns the keys provider at the given timestamp.
     * @param timestamp The timestamp.
     * @return The keys provider (contract that provides the keys of the operators).
     */
function getKeysProviderAt(uint48 timestamp) external view returns (CrossChainAddress memory);
⋮----
/**
     * @notice Returns the keys provider.
     * @return The keys provider (contract that provides the keys of the operators).
     */
function getKeysProvider() external view returns (CrossChainAddress memory);
⋮----
/**
     * @notice Returns if the settlement is registered at the given timestamp.
     * @param settlement The settlement.
     * @param timestamp The timestamp.
     * @return If the settlement is registered.
     */
function isSettlementRegisteredAt(CrossChainAddress memory settlement, uint48 timestamp)
⋮----
/**
     * @notice Returns if the settlement is registered.
     * @param settlement The settlement.
     * @return If the settlement is registered.
     */
function isSettlementRegistered(CrossChainAddress memory settlement) external view returns (bool);
⋮----
/**
     * @notice Returns the settlements at the given timestamp.
     * @param timestamp The timestamp.
     * @return The settlements (contracts that enable a verification of the validator set's attestations on different chains).
     */
function getSettlementsAt(uint48 timestamp) external view returns (CrossChainAddress[] memory);
⋮----
/**
     * @notice Returns the settlements.
     * @return The settlements (contracts that enable a verification of the validator set's attestations on different chains).
     */
function getSettlements() external view returns (CrossChainAddress[] memory);
⋮----
/**
     * @notice Returns the maximum voting power at the given timestamp.
     * @param timestamp The timestamp.
     * @return The maximum voting power for each validator.
     */
function getMaxVotingPowerAt(uint48 timestamp) external view returns (uint256);
⋮----
/**
     * @notice Returns the maximum voting power.
     * @return The maximum voting power for each validator.
     */
function getMaxVotingPower() external view returns (uint256);
⋮----
/**
     * @notice Returns the minimum inclusion voting power at the given timestamp.
     * @param timestamp The timestamp.
     * @return The minimum inclusion voting power for the operator to be included in the validator set.
     */
function getMinInclusionVotingPowerAt(uint48 timestamp) external view returns (uint256);
⋮----
/**
     * @notice Returns the minimum inclusion voting power.
     * @return The minimum inclusion voting power for the operator to be included in the validator set.
     */
function getMinInclusionVotingPower() external view returns (uint256);
⋮----
/**
     * @notice Returns the maximum active validators count at the given timestamp.
     * @param timestamp The timestamp.
     * @return The maximum active validators count in the validator set.
     */
function getMaxValidatorsCountAt(uint48 timestamp) external view returns (uint208);
⋮----
/**
     * @notice Returns the maximum active validators count.
     * @return The maximum active validators count in the validator set.
     */
function getMaxValidatorsCount() external view returns (uint208);
⋮----
/**
     * @notice Returns the required key tags at the given timestamp.
     * @param timestamp The timestamp.
     * @return The required key tags to include in the validator set.
     */
function getRequiredKeyTagsAt(uint48 timestamp) external view returns (uint8[] memory);
⋮----
/**
     * @notice Returns the required key tags.
     * @return The required key tags to include in the validator set.
     */
function getRequiredKeyTags() external view returns (uint8[] memory);
⋮----
/**
     * @notice Returns if the quorum threshold is registered at the given timestamp.
     * @param quorumThreshold The quorum threshold.
     * @param timestamp The timestamp.
     * @return If the quorum threshold is registered.
     */
function isQuorumThresholdRegisteredAt(QuorumThreshold memory quorumThreshold, uint48 timestamp)
⋮----
/**
     * @notice Returns if the quorum threshold is registered.
     * @param quorumThreshold The quorum threshold.
     * @return If the quorum threshold is registered.
     */
function isQuorumThresholdRegistered(QuorumThreshold memory quorumThreshold) external view returns (bool);
⋮----
/**
     * @notice Returns the quorum thresholds at the given timestamp.
     * @param timestamp The timestamp.
     * @return The quorum thresholds to use for attestations' verification.
     */
function getQuorumThresholdsAt(uint48 timestamp) external view returns (QuorumThreshold[] memory);
⋮----
/**
     * @notice Returns the quorum thresholds.
     * @return The quorum thresholds to use for attestations' verification.
     */
function getQuorumThresholds() external view returns (QuorumThreshold[] memory);
⋮----
/**
     * @notice Returns the required header key tag at the given timestamp.
     * @param timestamp The timestamp.
     * @return The required header key tag to use to maintain the validator set through epochs.
     */
function getRequiredHeaderKeyTagAt(uint48 timestamp) external view returns (uint8);
⋮----
/**
     * @notice Returns the required header key tag.
     * @return The required header key tag to use to maintain the validator set through epochs.
     */
function getRequiredHeaderKeyTag() external view returns (uint8);
⋮----
/**
     * @notice Returns the verification type at the given timestamp.
     * @param timestamp The timestamp.
     * @return The verification type (e.g., simple on-chain verification, or zk-based one).
     */
function getVerificationTypeAt(uint48 timestamp) external view returns (uint32);
⋮----
/**
     * @notice Returns the verification type.
     * @return The verification type (e.g., simple on-chain verification, or zk-based one).
     */
function getVerificationType() external view returns (uint32);
⋮----
/**
     * @notice Sets the number of aggregators (those who aggregate the validators' signatures
     *         and produce the proof for the verification).
     * @param numAggregators The number of aggregators.
     * @dev The caller must have the needed permission.
     */
function setNumAggregators(uint208 numAggregators) external;
⋮----
/**
     * @notice Sets the number of committers (those who commit some data (e.g., ValSetHeader)
     *         to on-chain).
     * @param numCommitters The number of committers.
     * @dev The caller must have the needed permission.
     */
function setNumCommitters(uint208 numCommitters) external;
⋮----
/**
     * @notice Sets the committer slot duration (determines how often the committers are switched).
     * @param slotDuration The committer slot duration.
     * @dev The caller must have the needed permission.
     */
function setCommitterSlotDuration(uint48 slotDuration) external;
⋮----
/**
     * @notice Adds a voting power provider.
     * @param votingPowerProvider The voting power provider (contract that provides the voting powers of the operators on different chains).
     * @dev The caller must have the needed permission.
     */
function addVotingPowerProvider(CrossChainAddress memory votingPowerProvider) external;
⋮----
/**
     * @notice Removes a voting power provider.
     * @param votingPowerProvider The voting power provider (contract that provides the voting powers of the operators on different chains).
     * @dev The caller must have the needed permission.
     */
function removeVotingPowerProvider(CrossChainAddress memory votingPowerProvider) external;
⋮----
/**
     * @notice Sets the keys provider.
     * @param keysProvider The keys provider (contract that provides the keys of the operators).
     * @dev The caller must have the needed permission.
     */
function setKeysProvider(CrossChainAddress memory keysProvider) external;
⋮----
/**
     * @notice Adds a settlement.
     * @param settlement The settlement (contract that enable a verification of the validator set's attestations on different chains).
     * @dev The caller must have the needed permission.
     */
function addSettlement(CrossChainAddress memory settlement) external;
⋮----
/**
     * @notice Removes a settlement.
     * @param settlement The settlement (contract that enable a verification of the validator set's attestations on different chains).
     * @dev The caller must have the needed permission.
     */
function removeSettlement(CrossChainAddress memory settlement) external;
⋮----
/**
     * @notice Sets the maximum voting power.
     * @param maxVotingPower The maximum voting power for each validator.
     * @dev The caller must have the needed permission.
     */
function setMaxVotingPower(uint256 maxVotingPower) external;
⋮----
/**
     * @notice Sets the minimum inclusion voting power.
     * @param minInclusionVotingPower The minimum inclusion voting power for the operator to be included in the validator set.
     * @dev The caller must have the needed permission.
     */
function setMinInclusionVotingPower(uint256 minInclusionVotingPower) external;
⋮----
/**
     * @notice Sets the maximum active validators count.
     * @param maxValidatorsCount The maximum active validators count in the validator set.
     * @dev The caller must have the needed permission.
     */
function setMaxValidatorsCount(uint208 maxValidatorsCount) external;
⋮----
/**
     * @notice Sets the required key tags.
     * @param requiredKeyTags The required key tags to include in the validator set.
     * @dev The caller must have the needed permission.
     */
function setRequiredKeyTags(uint8[] memory requiredKeyTags) external;
⋮----
/**
     * @notice Adds a quorum threshold.
     * @param quorumThreshold The quorum threshold to use for attestations' verification.
     * @dev The caller must have the needed permission.
     */
function addQuorumThreshold(QuorumThreshold memory quorumThreshold) external;
⋮----
/**
     * @notice Removes a quorum threshold.
     * @param quorumThreshold The quorum threshold to use for attestations' verification.
     * @dev The caller must have the needed permission.
     */
function removeQuorumThreshold(QuorumThreshold memory quorumThreshold) external;
⋮----
/**
     * @notice Sets the required header key tag.
     * @param requiredHeaderKeyTag The required header key tag to use to maintain the validator set through epochs.
     * @dev The caller must have the needed permission.
     */
function setRequiredHeaderKeyTag(uint8 requiredHeaderKeyTag) external;
⋮----
/**
     * @notice Sets the verification type.
     * @param verificationType The verification type (e.g., simple on-chain verification, or zk-based one).
     * @dev The caller must have the needed permission.
     */
function setVerificationType(uint32 verificationType) external;
```

## File: src/interfaces/modules/voting-power/base/IVotingPowerCalcManager.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
/**
 * @title IVotingPowerCalcManager
 * @notice Interface for the VotingPowerCalcManager contract.
 */
interface IVotingPowerCalcManager {
/**
     * @notice Returns the voting power given a `stake` amount of `vault`'s collateral at the certain vault at the given timestamp.
     * @param vault The vault.
     * @param stake The stake.
     * @param extraData The extra data.
     * @param timestamp The timestamp.
     * @return The voting power given a `stake` amount of `vault`'s collateral at the certain vault at the given timestamp.
     */
function stakeToVotingPowerAt(address vault, uint256 stake, bytes memory extraData, uint48 timestamp)
⋮----
/**
     * @notice Returns the voting power given a `stake` amount of `vault`'s collateral at the certain vault.
     * @param vault The vault.
     * @param stake The stake.
     * @param extraData The extra data.
     * @return The voting power given a `stake` amount of `vault`'s collateral at the certain vault.
     */
function stakeToVotingPower(address vault, uint256 stake, bytes memory extraData) external view returns (uint256);
```

## File: src/interfaces/modules/voting-power/common/voting-power-calc/libraries/AggregatorV3Interface.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
// solhint-disable-next-line interface-starts-with-i
interface AggregatorV3Interface {
function decimals() external view returns (uint8);
⋮----
function description() external view returns (string memory);
⋮----
function version() external view returns (uint256);
⋮----
function getRoundData(uint80 _roundId)
⋮----
function latestRoundData()
```

## File: src/interfaces/modules/voting-power/common/voting-power-calc/IEqualStakeVPCalc.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IVotingPowerProvider} from "../../IVotingPowerProvider.sol";
⋮----
/**
 * @title IEqualStakeVPCalc
 * @notice Interface for the EqualStakeVPCalc contract.
 */
interface IEqualStakeVPCalc {}
```

## File: src/interfaces/modules/voting-power/common/voting-power-calc/INormalizedTokenDecimalsVPCalc.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IEqualStakeVPCalc} from "./IEqualStakeVPCalc.sol";
⋮----
/**
 * @title INormalizedTokenDecimalsVPCalc
 * @notice Interface for the NormalizedTokenDecimalsVPCalc contract.
 */
interface INormalizedTokenDecimalsVPCalc is IEqualStakeVPCalc {}
```

## File: src/interfaces/modules/voting-power/common/voting-power-calc/IPricedTokensChainlinkVPCalc.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {INormalizedTokenDecimalsVPCalc} from "./INormalizedTokenDecimalsVPCalc.sol";
import {IPermissionManager} from "../../../base/IPermissionManager.sol";
⋮----
import {Checkpoints} from "../../../../../libraries/structs/Checkpoints.sol";
⋮----
/**
 * @title IPricedTokensChainlinkVPCalc
 * @notice Interface for the PricedTokensChainlinkVPCalc contract.
 */
interface IPricedTokensChainlinkVPCalc is INormalizedTokenDecimalsVPCalc, IPermissionManager {
/**
     * @notice Reverts when the aggregator is zero address.
     */
⋮----
/**
     * @notice The storage of the PricedTokensChainlinkVPCalc contract.
     * @param _tokenHops The price conversion hops for each token.
     */
⋮----
/**
     * @notice Emitted when the price conversion hops are set for a token.
     * @param token The token.
     * @param aggregators The price aggregators.
     * @param inverts If to invert the fetched prices.
     * @param stalenessDurations The staleness durations (if too much time passed since the last update).
     */
event SetTokenHops(address indexed token, address[2] aggregators, bool[2] inverts, uint48[2] stalenessDurations);
⋮----
/**
     * @notice Returns the price conversion hops for a token at a given timestamp.
     * @param token The token.
     * @param timestamp The timestamp.
     * @return The price conversion hops (price aggregators, invert flags, staleness durations).
     */
function getTokenHopsAt(address token, uint48 timestamp)
⋮----
/**
     * @notice Returns the price conversion hops for a token.
     * @param token The token.
     * @return The price conversion hops (price aggregators, invert flags, staleness durations).
     */
function getTokenHops(address token) external view returns (address[2] memory, bool[2] memory, uint48[2] memory);
⋮----
/**
     * @notice Returns the price for a token at a given timestamp.
     * @param token The token.
     * @param timestamp The timestamp.
     * @return The price.
     * @dev Returns zero if the data is stale or unavailable.
     *      The price is normalized to the 18 decimals.
     */
function getTokenPriceAt(address token, uint48 timestamp) external view returns (uint256);
⋮----
/**
     * @notice Returns the price for a token.
     * @param token The token.
     * @return The price.
     * @dev Returns zero if the data is stale or unavailable.
     *      The price is normalized to the 18 decimals.
     */
function getTokenPrice(address token) external view returns (uint256);
⋮----
/**
     * @notice Sets the price conversion hops for a token.
     * @param token The token.
     * @param aggregators The price aggregators.
     * @param inverts If to invert the fetched prices.
     * @param stalenessDurations The staleness durations (if too much time passed since the last update).
     */
function setTokenHops(
```

## File: src/interfaces/modules/voting-power/common/voting-power-calc/IWeightedTokensVPCalc.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {INormalizedTokenDecimalsVPCalc} from "./INormalizedTokenDecimalsVPCalc.sol";
import {IPermissionManager} from "../../../base/IPermissionManager.sol";
⋮----
import {Checkpoints} from "../../../../../libraries/structs/Checkpoints.sol";
⋮----
/**
 * @title IWeightedTokensVPCalc
 * @notice Interface for the WeightedTokensVPCalc contract.
 */
interface IWeightedTokensVPCalc is INormalizedTokenDecimalsVPCalc, IPermissionManager {
/**
     * @notice Reverts when the weight is too large.
     */
⋮----
/**
     * @notice The storage of the WeightedTokensVPCalc contract.
     * @param _tokenWeight The weight for each token.
     */
⋮----
/**
     * @notice Emitted when the weight for a token is set.
     * @param token The token.
     * @param weight The weight.
     */
event SetTokenWeight(address indexed token, uint208 weight);
⋮----
/**
     * @notice Returns the weight for a token at a given timestamp.
     * @param token The token.
     * @param timestamp The timestamp.
     * @return The weight.
     * @dev Returns 1e12 if the weight wasn't explicitly set yet.
     *      Can return non-zero weight for unregistered tokens.
     */
function getTokenWeightAt(address token, uint48 timestamp) external view returns (uint208);
⋮----
/**
     * @notice Returns the weight for a token.
     * @param token The token.
     * @return The weight.
     * @dev Returns 1e12 if the weight wasn't explicitly set yet.
     *      Can return non-zero weight for unregistered tokens.
     */
function getTokenWeight(address token) external view returns (uint208);
⋮----
/**
     * @notice Sets the weight for a token.
     * @param token The token.
     * @param weight The weight.
     */
function setTokenWeight(address token, uint208 weight) external;
```

## File: src/interfaces/modules/voting-power/common/voting-power-calc/IWeightedVaultsVPCalc.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IEqualStakeVPCalc} from "./IEqualStakeVPCalc.sol";
import {IPermissionManager} from "../../../base/IPermissionManager.sol";
⋮----
import {Checkpoints} from "../../../../../libraries/structs/Checkpoints.sol";
⋮----
/**
 * @title IWeightedVaultsVPCalc
 * @notice Interface for the WeightedVaultsVPCalc contract.
 */
interface IWeightedVaultsVPCalc is IEqualStakeVPCalc, IPermissionManager {
/**
     * @notice Reverts when the weight is too large.
     */
⋮----
/**
     * @notice The storage of the WeightedVaultsVPCalc contract.
     * @param _vaultWeight The weight for each vault.
     */
⋮----
/**
     * @notice Emitted when the weight for a vault is set.
     * @param vault The vault.
     * @param weight The weight.
     */
event SetVaultWeight(address indexed vault, uint208 weight);
⋮----
/**
     * @notice Returns the weight for a vault at a given timestamp.
     * @param vault The vault.
     * @param timestamp The timestamp.
     * @return The weight.
     * @dev Returns 1e4 if the weight wasn't explicitly set yet.
     *      Can return non-zero weight for unregistered vaults.
     */
function getVaultWeightAt(address vault, uint48 timestamp) external view returns (uint208);
⋮----
/**
     * @notice Returns the weight for a vault.
     * @param vault The vault.
     * @return The weight.
     * @dev Returns 1e4 if the weight wasn't explicitly set yet.
     *      Can return non-zero weight for unregistered vaults.
     */
function getVaultWeight(address vault) external view returns (uint208);
⋮----
/**
     * @notice Sets the weight for a vault.
     * @param vault The vault.
     * @param weight The weight.
     */
function setVaultWeight(address vault, uint208 weight) external;
```

## File: src/interfaces/modules/voting-power/extensions/IBaseRewards.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IVotingPowerProvider} from "../IVotingPowerProvider.sol";
⋮----
/**
 * @title IBaseRewards
 * @notice Interface for the BaseRewards contract.
 */
interface IBaseRewards is IVotingPowerProvider {
/**
     * @notice Reverts when the caller is not the rewarder.
     */
⋮----
/**
     * @notice The storage of the BaseRewards contract.
     * @param _rewarder The address of the rewarder.
     * @custom:storage-location erc7201:symbiotic.storage.BaseRewards
     */
⋮----
/**
     * @notice The parameters for the initialization of the BaseRewards contract.
     * @param rewarder The address of the rewarder.
     */
⋮----
/**
     * @notice Emitted when the rewarder is set.
     * @param rewarder The address of the rewarder.
     */
event SetRewarder(address rewarder);
⋮----
/**
     * @notice Emitted when the staker rewards are distributed.
     * @param stakerRewards The address of the staker rewards.
     * @param token The address of the token.
     * @param amount The amount of the token.
     * @param data The data (depends on the staker rewards implementation).
     */
event DistributeStakerRewards(address indexed stakerRewards, address indexed token, uint256 amount, bytes data);
⋮----
/**
     * @notice Emitted when the operator rewards are distributed.
     * @param operatorRewards The address of the operator rewards.
     * @param token The address of the token.
     * @param amount The amount of the token.
     * @param root The Merkle root of the distribution.
     */
event DistributeOperatorRewards(
⋮----
/**
     * @notice Returns the address of the rewarder.
     * @return The address of the rewarder.
     */
function getRewarder() external view returns (address);
⋮----
/**
     * @notice Sets the rewarder.
     * @param rewarder The address of the rewarder.
     * @dev The caller must have the needed permission.
     */
function setRewarder(address rewarder) external;
⋮----
/**
     * @notice Distributes the staker rewards.
     * @param stakerRewards The address of the staker rewards.
     * @param token The address of the token.
     * @param amount The amount of the token.
     * @param data The data (depends on the staker rewards implementation).
     * @dev Only the rewarder can call this function.
     *      The funds should be transferred to this contract separately before the call.
     */
function distributeStakerRewards(address stakerRewards, address token, uint256 amount, bytes memory data) external;
⋮----
/**
     * @notice Distributes the operator rewards.
     * @param operatorRewards The address of the operator rewards.
     * @param token The address of the token.
     * @param amount The amount of the token.
     * @param root The Merkle root of the distribution.
     * @dev Only the rewarder can call this function.
     *      The funds should be transferred to this contract separately before the call.
     */
function distributeOperatorRewards(address operatorRewards, address token, uint256 amount, bytes32 root) external;
```

## File: src/interfaces/modules/voting-power/extensions/IBaseSlashing.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IVotingPowerProvider} from "../IVotingPowerProvider.sol";
⋮----
/**
 * @title IBaseSlashing
 * @notice Interface for the BaseSlashing contract.
 */
interface IBaseSlashing is IVotingPowerProvider {
/**
     * @notice Reverts when the vault doesn't have a slasher.
     */
⋮----
/**
     * @notice Reverts when the slashing wasn't required at the requested timestamp.
     */
⋮----
/**
     * @notice Reverts when the caller is not the slasher.
     */
⋮----
/**
     * @notice Reverts when the slasher is not a veto slasher.
     */
⋮----
/**
     * @notice Reverts when the slasher type is unsupported.
     */
⋮----
/**
     * @notice The storage of the BaseSlashing contract.
     * @param _slasher The address of the slasher.
     * @custom:storage-location erc7201:symbiotic.storage.BaseSlashing
     */
⋮----
/**
     * @notice The parameters for the initialization of the BaseSlashing contract.
     * @param slasher The address of the slasher.
     */
⋮----
/**
     * @notice The hints to optimize the base slashing.
     * @param slashingDataHint The hint to optimize the slashing data fetching.
     * @param slashCoreHints The hints to optimize the slash core.
     */
⋮----
/**
     * @notice The hints to optimize the execute slash.
     * @param slashingDataHint The hint to optimize the slashing data fetching.
     * @param executeSlashCoreHints The hints to optimize the execute slash core.
     */
⋮----
/**
     * @notice Emitted when the slasher is set.
     * @param slasher The address of the slasher.
     */
event SetSlasher(address slasher);
⋮----
/**
     * @notice Emitted when the instant slash is executed.
     * @param slasher The address of the slasher.
     * @param operator The address of the operator.
     * @param success The success of the slash.
     * @param slashedAmount The amount of the slashed tokens.
     */
event InstantSlash(address indexed slasher, address indexed operator, bool indexed success, uint256 slashedAmount);
⋮----
/**
     * @notice Emitted when the veto slash is executed.
     * @param slasher The address of the slasher.
     * @param operator The address of the operator.
     * @param success The success of the slash.
     * @param slashIndex The index of the slash.
     */
event VetoSlash(address indexed slasher, address indexed operator, bool indexed success, uint256 slashIndex);
⋮----
/**
     * @notice Emitted when the slash is executed.
     * @param slasher The address of the slasher.
     * @param slashIndex The index of the slash.
     * @param success The success of the slash.
     * @param slashedAmount The amount of the slashed tokens.
     */
event ExecuteSlash(
⋮----
/**
     * @notice Returns the address of the slasher.
     * @return The address of the slasher.
     */
function getSlasher() external view returns (address);
⋮----
/**
     * @notice Sets the slasher.
     * @param slasher The address of the slasher.
     * @dev The caller must have the needed permission.
     */
function setSlasher(address slasher) external;
⋮----
/**
     * @notice Slashes the vault.
     * @param timestamp The capture timestamp for the slash.
     * @param vault The address of the vault.
     * @param operator The address of the operator.
     * @param amount The amount of the tokens to be slashed.
     * @param hints The hints to optimize the vault slashing.
     * @return success The success of the slash.
     * @return response The response of the slash.
     * @dev The function doesn't check the registration statuses.
     */
function slashVault(uint48 timestamp, address vault, address operator, uint256 amount, bytes memory hints)
⋮----
/**
     * @notice Executes the slash of the vault.
     * @param vault The address of the vault.
     * @param slashIndex The index of the slash.
     * @param hints The hints to optimize the vault slashing.
     * @return success The success of the slash.
     * @return slashedAmount The amount of the slashed tokens.
     */
function executeSlashVault(address vault, uint256 slashIndex, bytes memory hints)
```

## File: src/interfaces/modules/voting-power/extensions/IMultiToken.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IVotingPowerProvider} from "../IVotingPowerProvider.sol";
⋮----
/**
 * @title IMultiToken
 * @notice Interface for the MultiToken contract.
 */
interface IMultiToken is IVotingPowerProvider {
/**
     * @notice Registers the token.
     * @param token The address of the token.
     * @dev The caller must have the needed permission.
     */
function registerToken(address token) external;
⋮----
/**
     * @notice Unregisters the token.
     * @param token The address of the token.
     * @dev The caller must have the needed permission.
     */
function unregisterToken(address token) external;
```

## File: src/interfaces/modules/voting-power/extensions/IOperatorsBlacklist.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IVotingPowerProvider} from "../IVotingPowerProvider.sol";
⋮----
/**
 * @title IOperatorsBlacklist
 * @notice Interface for the OperatorsBlacklist contract.
 */
interface IOperatorsBlacklist is IVotingPowerProvider {
/**
     * @notice Reverts when the operator is not blacklisted.
     */
⋮----
/**
     * @notice Reverts when the operator is already blacklisted.
     */
⋮----
/**
     * @notice The storage of the OperatorsBlacklist contract.
     * @param _blacklisted The mapping from the operator to the blacklisted operator status.
     * @custom:storage-location erc7201:symbiotic.storage.OperatorsBlacklist
     */
⋮----
/**
     * @notice Emitted when the operator is blacklisted.
     * @param operator The address of the operator.
     */
event BlacklistOperator(address indexed operator);
⋮----
/**
     * @notice Emitted when the operator is unblacklisted.
     * @param operator The address of the operator.
     */
event UnblacklistOperator(address indexed operator);
⋮----
/**
     * @notice Returns the blacklist status of the operator.
     * @param operator The address of the operator.
     * @return The blacklist status of the operator.
     */
function isOperatorBlacklisted(address operator) external view returns (bool);
⋮----
/**
     * @notice Blacklists the operator.
     * @param operator The address of the operator.
     * @dev The caller must have the needed permission.
     *      The operator will be unregistered if currently registered.
     */
function blacklistOperator(address operator) external;
⋮----
/**
     * @notice Unblacklists the operator.
     * @param operator The address of the operator.
     * @dev The caller must have the needed permission.
     */
function unblacklistOperator(address operator) external;
```

## File: src/interfaces/modules/voting-power/extensions/IOperatorsJail.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IVotingPowerProvider} from "../IVotingPowerProvider.sol";
⋮----
/**
 * @title IOperatorsJail
 * @notice Interface for the OperatorsJail contract.
 */
interface IOperatorsJail is IVotingPowerProvider {
/**
     * @notice Reverts when the operator is already jailed.
     */
⋮----
/**
     * @notice Reverts when the duration is invalid.
     */
⋮----
/**
     * @notice Reverts when the operator is jailed.
     */
⋮----
/**
     * @notice Reverts when the operator is not jailed.
     */
⋮----
/**
     * @notice The storage of the OperatorsJail contract.
     * @param _jailedUntil The mapping from the operator to the jailed until timestamp.
     * @custom:storage-location erc7201:symbiotic.storage.OperatorsJail
     */
⋮----
/**
     * @notice Emitted when the operator is jailed.
     * @param operator The address of the operator.
     */
event JailOperator(address indexed operator);
⋮----
/**
     * @notice Emitted when the operator is forcefully unjailed.
     * @param operator The address of the operator.
     */
event UnjailOperator(address indexed operator);
⋮----
/**
     * @notice Returns the jail status of the operator.
     * @param operator The address of the operator.
     * @return The jail status of the operator.
     */
function isOperatorJailed(address operator) external view returns (bool);
⋮----
/**
     * @notice Returns the timestamp the operator is jailed until.
     * @param operator The address of the operator.
     * @return The timestamp the operator is jailed until.
     */
function getOperatorJailedUntil(address operator) external view returns (uint48);
⋮----
/**
     * @notice Jails the operator.
     * @param operator The address of the operator.
     * @param duration The duration of the jail.
     * @dev The caller must have the needed permission.
     *      The operator will be unregistered if currently registered.
     *      It is allowed only to extend the jail duration.
     */
function jailOperator(address operator, uint48 duration) external;
⋮----
/**
     * @notice Unjails the operator.
     * @param operator The address of the operator.
     * @dev The caller must have the needed permission.
     */
function unjailOperator(address operator) external;
```

## File: src/interfaces/modules/voting-power/extensions/IOperatorsWhitelist.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IVotingPowerProvider} from "../IVotingPowerProvider.sol";
⋮----
/**
 * @title IOperatorsWhitelist
 * @notice Interface for the OperatorsWhitelist contract.
 */
interface IOperatorsWhitelist is IVotingPowerProvider {
/**
     * @notice Reverts when the whitelist status is already set.
     */
⋮----
/**
     * @notice Reverts when the operator is not whitelisted.
     */
⋮----
/**
     * @notice Reverts when the operator is already whitelisted.
     */
⋮----
/**
     * @notice The storage of the OperatorsWhitelist contract.
     * @param _whitelisted The mapping from the operator to the whitelisted operator status.
     * @param _isWhitelistEnabled The status of the whitelist.
     * @custom:storage-location erc7201:symbiotic.storage.OperatorsWhitelist
     */
⋮----
/**
     * @notice The parameters for the initialization of the OperatorsWhitelist contract.
     * @param isWhitelistEnabled The status of the whitelist.
     */
⋮----
/**
     * @notice Emitted when the whitelist status is set.
     * @param status The status of the whitelist.
     */
event SetWhitelistStatus(bool status);
⋮----
/**
     * @notice Emitted when the operator is whitelisted.
     * @param operator The address of the operator.
     */
event WhitelistOperator(address indexed operator);
⋮----
/**
     * @notice Emitted when the operator is unwhitelisted.
     * @param operator The address of the operator.
     */
event UnwhitelistOperator(address indexed operator);
⋮----
/**
     * @notice Returns the whitelist status.
     * @return The whitelist status.
     */
function isWhitelistEnabled() external view returns (bool);
⋮----
/**
     * @notice Returns the whitelist status of the operator.
     * @param operator The address of the operator.
     * @return The whitelist status of the operator.
     */
function isOperatorWhitelisted(address operator) external view returns (bool);
⋮----
/**
     * @notice Sets the whitelist status.
     * @param status The status of the whitelist.
     * @dev The caller must have the needed permission.
     */
function setWhitelistStatus(bool status) external;
⋮----
/**
     * @notice Whitelists the operator.
     * @param operator The address of the operator.
     * @dev The caller must have the needed permission.
     */
function whitelistOperator(address operator) external;
⋮----
/**
     * @notice Unwhitelists the operator.
     * @param operator The address of the operator.
     * @dev The caller must have the needed permission.
     *      The operator will be unregistered if currently registered and the whitelist is enabled.
     */
function unwhitelistOperator(address operator) external;
```

## File: src/interfaces/modules/voting-power/extensions/IOperatorVaults.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IVotingPowerProvider} from "../IVotingPowerProvider.sol";
⋮----
/**
 * @title IOperatorVaults
 * @notice Interface for the OperatorVaults contract.
 */
interface IOperatorVaults is IVotingPowerProvider {
/**
     * @notice Registers the operator vault.
     * @param operator The address of the operator.
     * @param vault The address of the vault.
     * @dev The caller must have the needed permission.
     */
function registerOperatorVault(address operator, address vault) external;
⋮----
/**
     * @notice Unregisters the operator vault.
     * @param operator The address of the operator.
     * @param vault The address of the vault.
     * @dev The caller must have the needed permission.
     */
function unregisterOperatorVault(address operator, address vault) external;
⋮----
/**
     * @notice Unregisters the operator vault.
     * @param vault The address of the vault.
     * @dev The caller must be the operator of the vault.
     */
function unregisterOperatorVault(address vault) external;
```

## File: src/interfaces/modules/voting-power/extensions/IOpNetVaultAutoDeploy.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IVotingPowerProvider} from "../IVotingPowerProvider.sol";
⋮----
/**
 * @title IOpNetVaultAutoDeploy
 * @notice Interface for the OpNetVaultAutoDeploy contract.
 */
interface IOpNetVaultAutoDeploy is IVotingPowerProvider {
/**
     * @notice Reverts when the burner hook is enabled but the slasher is not.
     */
⋮----
/**
     * @notice Reverts when the collateral is zero address.
     */
⋮----
/**
     * @notice Reverts when the epoch duration is zero or less than the slashing window.
     */
⋮----
/**
     * @notice Reverts when the with slasher is disabled but the slashing window is not zero.
     */
⋮----
/**
     * @notice The storage of the OpNetVaultAutoDeploy contract.
     * @param _isAutoDeployEnabled The status of the auto deploy.
     * @param _isSetMaxNetworkLimitHookEnabled The status of the set max network limit hook.
     * @param _autoDeployedVault The mapping from the operator to the auto deployed vault.
     * @param _config The configuration of the auto deploy.
     * @custom:storage-location erc7201:symbiotic.storage.OpNetVaultAutoDeploy
     */
⋮----
/**
     * @notice The parameters for the initialization of the OpNetVaultAutoDeploy contract.
     * @param isAutoDeployEnabled The status of the auto deploy.
     * @param config The configuration of the auto deploy.
     * @param isSetMaxNetworkLimitHookEnabled The status of the set max network limit hook.
     */
⋮----
/**
     * @notice The configuration of the auto deploy.
     * @param epochDuration The duration of the epoch.
     * @param collateral The address of the collateral.
     * @param burner The address of the burner.
     * @param withSlasher The status of the with slasher.
     * @param isBurnerHook The status of the burner hook.
     */
⋮----
/**
     * @notice Emitted when the auto deploy status is set.
     * @param status The status of the auto deploy.
     */
event SetAutoDeployStatus(bool status);
⋮----
/**
     * @notice Emitted when the auto deploy config is set.
     */
event SetAutoDeployConfig(AutoDeployConfig config);
⋮----
/**
     * @notice Emitted when the set max network limit hook status is set.
     * @param status The status of the set max network limit hook.
     */
event SetSetMaxNetworkLimitHookStatus(bool status);
⋮----
/**
     * @notice Returns the address of the vault configurator.
     * @return The address of the vault configurator.
     */
function VAULT_CONFIGURATOR() external view returns (address);
⋮----
/**
     * @notice Returns the status of the auto deploy.
     * @return The status of the auto deploy.
     */
function isAutoDeployEnabled() external view returns (bool);
⋮----
/**
     * @notice Returns the address of the auto deployed vault of the operator.
     * @param operator The address of the operator.
     * @return The address of the auto deployed vault of the operator.
     */
function getAutoDeployedVault(address operator) external view returns (address);
⋮----
/**
     * @notice Returns the configuration of the auto deploy.
     * @return The configuration of the auto deploy.
     */
function getAutoDeployConfig() external view returns (AutoDeployConfig memory);
⋮----
/**
     * @notice Returns the status of the set max network limit hook.
     * @return The status of the set max network limit hook.
     */
function isSetMaxNetworkLimitHookEnabled() external view returns (bool);
⋮----
/**
     * @notice Sets the status of the auto deploy.
     * @param status The status of the auto deploy.
     * @dev The caller must have the needed permission.
     */
function setAutoDeployStatus(bool status) external;
⋮----
/**
     * @notice Sets the configuration of the auto deploy.
     * @param config The configuration of the auto deploy.
     * @dev The caller must have the needed permission.
     */
function setAutoDeployConfig(AutoDeployConfig memory config) external;
⋮----
/**
     * @notice Sets the status of the set max network limit hook.
     * @param status The status of the set max network limit hook.
     * @dev The caller must have the needed permission.
     */
function setSetMaxNetworkLimitHookStatus(bool status) external;
```

## File: src/interfaces/modules/voting-power/extensions/ISharedVaults.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IVotingPowerProvider} from "../IVotingPowerProvider.sol";
⋮----
/**
 * @title ISharedVaults
 * @notice Interface for the SharedVaults contract.
 */
interface ISharedVaults is IVotingPowerProvider {
/**
     * @notice Registers the shared vault.
     * @param sharedVault The address of the shared vault.
     * @dev The caller must have the needed permission.
     */
function registerSharedVault(address sharedVault) external;
⋮----
/**
     * @notice Unregisters the shared vault.
     * @param sharedVault The address of the shared vault.
     * @dev The caller must have the needed permission.
     */
function unregisterSharedVault(address sharedVault) external;
```

## File: src/interfaces/modules/voting-power/IVotingPowerProvider.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {INetworkManager} from "../base/INetworkManager.sol";
import {IOzEIP712} from "../base/IOzEIP712.sol";
⋮----
import {Checkpoints} from "../../../libraries/structs/Checkpoints.sol";
import {PersistentSet} from "../../../libraries/structs/PersistentSet.sol";
⋮----
/**
 * @title IVotingPowerProvider
 * @notice Interface for the VotingPowerProvider contract.
 */
interface IVotingPowerProvider {
/**
     * @notice Reverts when the operator is not registered in the OperatorRegistry.
     */
⋮----
/**
     * @notice Reverts when the operator vault is invalid.
     */
⋮----
/**
     * @notice Reverts when the shared vault is invalid.
     */
⋮----
/**
     * @notice Reverts when the signature is invalid.
     */
⋮----
/**
     * @notice Reverts when the token is zero address.
     */
⋮----
/**
     * @notice Reverts when the vault is invalid.
     */
⋮----
/**
     * @notice Reverts when the operator is already registered.
     */
⋮----
/**
     * @notice Reverts when the operator is not registered.
     */
⋮----
/**
     * @notice Reverts when the operator vault is already registered.
     */
⋮----
/**
     * @notice Reverts when the operator vault is not registered.
     */
⋮----
/**
     * @notice Reverts when the shared vault is already registered.
     */
⋮----
/**
     * @notice Reverts when the shared vault is not registered.
     */
⋮----
/**
     * @notice Reverts when the token is already registered.
     */
⋮----
/**
     * @notice Reverts when the token is not registered.
     */
⋮----
/**
     * @notice The types of the delegator.
     */
⋮----
/**
     * @notice The types of the slasher.
     */
⋮----
/**
     * @notice The storage of the VotingPowerProvider contract.
     * @param _tokens The set of the tokens.
     * @param _operators The set of the operators.
     * @param _sharedVaults The set of the shared vaults.
     * @param _allOperatorVaults The set of the all operator vaults.
     * @param _operatorVaults The mapping from the operator to the set of the operator vaults.
     * @param _slashingData The slashing data (if to require slasher, and a minimum epoch duration).
     * @custom:storage-location erc7201:symbiotic.storage.VotingPowerProvider
     */
⋮----
/**
     * @notice The parameters for the initialization of the VotingPowerProvider contract.
     * @param networkManagerInitParams The parameters for the initialization of the NetworkManager contract.
     * @param ozEip712InitParams The parameters for the initialization of the OzEIP712 contract.
     * @param requireSlasher If to require slashers.
     * @param minVaultEpochDuration The minimum epoch duration for the vaults.
     * @param token The acceptable token (zero address if not applicable).
     */
⋮----
/**
     * @notice The value of the vault.
     * @param vault The address of the vault.
     * @param value The value (voting power or stake).
     */
⋮----
/**
     * @notice The voting power of the operator.
     * @param operator The address of the operator.
     * @param vaults The voting power of the operator for each vault.
     */
⋮----
/**
     * @notice The extra data for the voting power of the operator.
     * @param sharedVaultsExtraData The extra data for the shared vaults.
     * @param operatorVaultsExtraData The extra data for the operator vaults.
     */
⋮----
/**
     * @notice Emitted when the slashing data is set.
     * @param requireSlasher If to require slashers.
     * @param minVaultEpochDuration The minimum epoch duration for the vaults.
     * @dev It doesn't force non-suitable vaults to unregister.
     */
event SetSlashingData(bool requireSlasher, uint48 minVaultEpochDuration);
⋮----
/**
     * @notice Emitted when the token is registered.
     */
event RegisterToken(address indexed token);
⋮----
/**
     * @notice Emitted when the token is unregistered.
     * @param token The token.
     */
event UnregisterToken(address indexed token);
⋮----
/**
     * @notice Emitted when the operator is registered.
     * @param operator The operator.
     */
event RegisterOperator(address indexed operator);
⋮----
/**
     * @notice Emitted when the operator is unregistered.
     * @param operator The operator.
     */
event UnregisterOperator(address indexed operator);
⋮----
/**
     * @notice Emitted when the shared vault is registered.
     * @param vault The shared vault.
     */
event RegisterSharedVault(address indexed vault);
⋮----
/**
     * @notice Emitted when the shared vault is unregistered.
     * @param vault The shared vault.
     */
event UnregisterSharedVault(address indexed vault);
⋮----
/**
     * @notice Emitted when the operator vault is registered.
     * @param operator The operator.
     * @param vault The operator vault.
     */
event RegisterOperatorVault(address indexed operator, address indexed vault);
⋮----
/**
     * @notice Emitted when the operator vault is unregistered.
     * @param operator The operator.
     * @param vault The operator vault.
     */
event UnregisterOperatorVault(address indexed operator, address indexed vault);
⋮----
/**
     * @notice Returns the address of the OperatorRegistry contract.
     * @return The address of the OperatorRegistry contract.
     */
function OPERATOR_REGISTRY() external view returns (address);
⋮----
/**
     * @notice Returns the address of the VaultFactory contract.
     * @return The address of the VaultFactory contract.
     */
function VAULT_FACTORY() external view returns (address);
⋮----
/**
     * @notice Returns the slashing data at a specific timestamp.
     * @param timestamp The timestamp.
     * @param hint The hint.
     * @return requireSlasher If to require slashers.
     * @return minVaultEpochDuration The minimum epoch duration for the vaults.
     */
function getSlashingDataAt(uint48 timestamp, bytes memory hint)
⋮----
/**
     * @notice Returns the slashing data.
     * @return requireSlasher If to require slashers.
     * @return minVaultEpochDuration The minimum epoch duration for the vaults.
     */
function getSlashingData() external view returns (bool requireSlasher, uint48 minVaultEpochDuration);
⋮----
/**
     * @notice Returns the status of the token registration at a specific timestamp.
     * @param token The token.
     * @param timestamp The timestamp.
     * @return The status of the token registration.
     */
function isTokenRegisteredAt(address token, uint48 timestamp) external view returns (bool);
⋮----
/**
     * @notice Returns the status of the token registration.
     * @param token The token.
     * @return The status of the token registration.
     */
function isTokenRegistered(address token) external view returns (bool);
⋮----
/**
     * @notice Returns the tokens at a specific timestamp.
     * @param timestamp The timestamp.
     * @return The tokens.
     */
function getTokensAt(uint48 timestamp) external view returns (address[] memory);
⋮----
/**
     * @notice Returns the tokens.
     * @return The tokens.
     */
function getTokens() external view returns (address[] memory);
⋮----
/**
     * @notice Returns the status of the operator registration.
     * @param operator The operator.
     * @return The status of the operator registration.
     */
function isOperatorRegistered(address operator) external view returns (bool);
⋮----
/**
     * @notice Returns the status of the operator registration at a specific timestamp.
     * @param operator The operator.
     * @param timestamp The timestamp.
     * @return The status of the operator registration.
     */
function isOperatorRegisteredAt(address operator, uint48 timestamp) external view returns (bool);
⋮----
/**
     * @notice Returns the operators at a specific timestamp.
     * @param timestamp The timestamp.
     * @return The operators.
     */
function getOperatorsAt(uint48 timestamp) external view returns (address[] memory);
⋮----
/**
     * @notice Returns the operators.
     * @return The operators.
     */
function getOperators() external view returns (address[] memory);
⋮----
/**
     * @notice Returns the status of the shared vault registration.
     * @param vault The shared vault.
     * @return The status of the shared vault registration.
     */
function isSharedVaultRegistered(address vault) external view returns (bool);
⋮----
/**
     * @notice Returns the status of the shared vault registration at a specific timestamp.
     * @param vault The shared vault.
     * @param timestamp The timestamp.
     * @return The status of the shared vault registration.
     */
function isSharedVaultRegisteredAt(address vault, uint48 timestamp) external view returns (bool);
⋮----
/**
     * @notice Returns the shared vaults at a specific timestamp.
     * @param timestamp The timestamp.
     * @return The shared vaults.
     */
function getSharedVaultsAt(uint48 timestamp) external view returns (address[] memory);
⋮----
/**
     * @notice Returns the shared vaults.
     * @return The shared vaults.
     */
function getSharedVaults() external view returns (address[] memory);
⋮----
/**
     * @notice Returns the status of the operator vault registration.
     * @param vault The operator vault.
     * @return The status of the operator vault registration.
     */
function isOperatorVaultRegisteredAt(address vault, uint48 timestamp) external view returns (bool);
⋮----
function isOperatorVaultRegistered(address vault) external view returns (bool);
⋮----
/**
     * @notice Returns the status of the operator vault registration at a specific timestamp.
     * @param operator The operator.
     * @param vault The operator vault.
     * @param timestamp The timestamp.
     * @return The status of the operator vault registration.
     */
function isOperatorVaultRegisteredAt(address operator, address vault, uint48 timestamp) external view returns (bool);
⋮----
/**
     * @notice Returns the status of the operator vault registration.
     * @param operator The operator.
     * @param vault The operator vault.
     * @return The status of the operator vault registration.
     */
function isOperatorVaultRegistered(address operator, address vault) external view returns (bool);
⋮----
/**
     * @notice Returns the operator vaults at a specific timestamp.
     * @param operator The operator.
     * @param timestamp The timestamp.
     * @return The operator vaults.
     */
function getOperatorVaultsAt(address operator, uint48 timestamp) external view returns (address[] memory);
⋮----
/**
     * @notice Returns the operator vaults.
     * @param operator The operator.
     * @return The operator vaults.
     */
function getOperatorVaults(address operator) external view returns (address[] memory);
⋮----
/**
     * @notice Returns the vaults with stakes of the operator at a specific timestamp.
     * @param operator The operator.
     * @param timestamp The timestamp.
     * @return The vaults with stakes of the operator.
     */
function getOperatorStakesAt(address operator, uint48 timestamp) external view returns (VaultValue[] memory);
⋮----
/**
     * @notice Returns the vaults with stakes of the operator.
     * @param operator The operator.
     * @return The vaults with stakes of the operator.
     */
function getOperatorStakes(address operator) external view returns (VaultValue[] memory);
⋮----
/**
     * @notice Returns the vaults with voting powers of the operator at a specific timestamp.
     * @param operator The operator.
     * @param extraData The extra data.
     * @param timestamp The timestamp.
     * @return The vaults with voting powers of the operator.
     */
function getOperatorVotingPowersAt(address operator, bytes memory extraData, uint48 timestamp)
⋮----
/**
     * @notice Returns the vaults with voting powers of the operator.
     * @param operator The operator.
     * @param extraData The extra data.
     * @return The vaults with voting powers of the operator.
     */
function getOperatorVotingPowers(address operator, bytes memory extraData)
⋮----
/**
     * @notice Returns operators and their vaults with voting powers at a specific timestamp.
     * @param extraData The extra data.
     * @param timestamp The timestamp.
     * @return The operators and their vaults with voting powers.
     */
function getVotingPowersAt(bytes[] memory extraData, uint48 timestamp)
⋮----
/**
     * @notice Returns operators and their vaults with voting powers.
     * @param extraData The extra data.
     * @return The operators and their vaults with voting powers.
     */
function getVotingPowers(bytes[] memory extraData) external view returns (OperatorVotingPower[] memory);
⋮----
/**
     * @notice Registers the caller as an operator.
     * @dev The caller can be anyone.
     */
function registerOperator() external;
⋮----
/**
     * @notice Registers the operator with a signature.
     * @param operator The operator.
     * @param signature The signature of the operator.
     * @dev The caller can be anyone.
     */
function registerOperatorWithSignature(address operator, bytes memory signature) external;
⋮----
/**
     * @notice Unregisters the operator.
     * @dev The caller can be anyone.
     */
function unregisterOperator() external;
⋮----
/**
     * @notice Unregisters the operator with a signature.
     * @param operator The operator.
     * @param signature The signature of the operator.
     * @dev The caller can be anyone.
     */
function unregisterOperatorWithSignature(address operator, bytes memory signature) external;
⋮----
/**
     * @notice Invalidates the old signatures of the caller.
     * @dev The caller can be anyone.
     *      Increases the signatures' nonce by one.
     */
function invalidateOldSignatures() external;
```

## File: src/libraries/keys/KeyBlsBls12381.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {BLS12381} from "../utils/BLS12381.sol";
⋮----
/**
 * @title KeyBlsBls12381
 * @notice Library for interacting with BLS public keys on the BLS12381 curve, including validation, serialization, and compression.
 * @dev The keys are represented as G1 points on the BLS12381 curve.
 */
⋮----
/**
     * @notice Reverts when the key bytes are invalid.
     */
⋮----
/**
     * @notice Reverts when the key is invalid.
     */
⋮----
/**
     * @notice The key wrapper.
     * @param value The G1 public key.
     */
⋮----
/**
     * @notice Wraps a G1 public key.
     * @param keyRaw The G1 public key.
     * @return key The wrapped key.
     * @dev Allows to wrap zero G1 point.
     */
function wrap(BLS12381.G1Point memory keyRaw) internal view returns (KEY_BLS_BLS12381 memory key) {
⋮----
/**
     * @notice Unwraps a key.
     * @param key The key.
     * @return keyRaw The G1 public key.
     */
function unwrap(KEY_BLS_BLS12381 memory key) internal view returns (BLS12381.G1Point memory keyRaw) {
⋮----
/**
     * @notice Serializes a key.
     * @param key The key.
     * @return keySerialized The serialized key.
     * @dev Compresses G1 point to 48 bytes (two 32 bytes words).
     */
function serialize(KEY_BLS_BLS12381 memory key) internal view returns (bytes memory keySerialized) {
⋮----
/**
     * @notice Deserializes a serialized key.
     * @param keySerialized The serialized key.
     * @return key The key.
     */
function deserialize(bytes memory keySerialized) internal view returns (KEY_BLS_BLS12381 memory key) {
⋮----
/**
     * @notice Converts a key to bytes.
     * @param key The key.
     * @return keyBytes The bytes representation of the key.
     * @dev It is a bytes representation of the underlying key itself.
     */
function toBytes(KEY_BLS_BLS12381 memory key) internal view returns (bytes memory keyBytes) {
⋮----
/**
     * @notice Converts bytes to a key.
     * @param keyBytes The bytes representation of the key.
     * @return key The key.
     */
function fromBytes(bytes memory keyBytes) internal view returns (KEY_BLS_BLS12381 memory key) {
⋮----
/**
     * @notice Returns a zero key.
     * @return key The zero key.
     */
function zeroKey() internal view returns (KEY_BLS_BLS12381 memory key) {
⋮----
/**
     * @notice Checks if two keys are equal.
     * @param key1 The first key.
     * @param key2 The second key.
     * @return If the keys are equal.
     */
function equal(KEY_BLS_BLS12381 memory key1, KEY_BLS_BLS12381 memory key2) internal view returns (bool) {
```

## File: src/libraries/keys/KeyBlsBn254.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {BN254} from "../utils/BN254.sol";
⋮----
/**
 * @title KeyBlsBn254
 * @notice Library for interacting with BLS public keys on the BN254 curve, including validation, serialization, and compression.
 * @dev The keys are represented as G1 points on the BN254 curve.
 */
⋮----
/**
     * @notice Reverts when the key bytes are invalid.
     */
⋮----
/**
     * @notice Reverts when the key is invalid.
     */
⋮----
/**
     * @notice The key wrapper.
     * @param value The G1 public key.
     */
⋮----
/**
     * @notice Wraps a G1 public key.
     * @param keyRaw The G1 public key.
     * @return key The wrapped key.
     * @dev Allows to wrap zero G1 point.
     */
function wrap(BN254.G1Point memory keyRaw) internal view returns (KEY_BLS_BN254 memory key) {
⋮----
/**
     * @notice Unwraps a key.
     * @param key The key.
     * @return keyRaw The G1 public key.
     */
function unwrap(KEY_BLS_BN254 memory key) internal view returns (BN254.G1Point memory keyRaw) {
⋮----
/**
     * @notice Serializes a key.
     * @param key The key.
     * @return keySerialized The serialized key.
     * @dev Compresses G1 point to 32 bytes (255 bits).
     */
function serialize(KEY_BLS_BN254 memory key) internal view returns (bytes memory keySerialized) {
⋮----
/**
     * @notice Deserializes a serialized key.
     * @param keySerialized The serialized key.
     * @return key The key.
     */
function deserialize(bytes memory keySerialized) internal view returns (KEY_BLS_BN254 memory key) {
⋮----
/**
     * @notice Converts a key to bytes.
     * @param key The key.
     * @return keyBytes The bytes representation of the key.
     * @dev It is a bytes representation of the underlying key itself.
     */
function toBytes(KEY_BLS_BN254 memory key) internal view returns (bytes memory keyBytes) {
⋮----
/**
     * @notice Converts bytes to a key.
     * @param keyBytes The bytes representation of the key.
     * @return key The key.
     */
function fromBytes(bytes memory keyBytes) internal view returns (KEY_BLS_BN254 memory key) {
⋮----
/**
     * @notice Returns a zero key.
     * @return key The zero key.
     */
function zeroKey() internal view returns (KEY_BLS_BN254 memory key) {
⋮----
/**
     * @notice Checks if two keys are equal.
     * @param key1 The first key.
     * @param key2 The second key.
     * @return If the keys are equal.
     */
function equal(KEY_BLS_BN254 memory key1, KEY_BLS_BN254 memory key2) internal view returns (bool) {
```

## File: src/libraries/keys/KeyEcdsaSecp256k1.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
/**
 * @title KeyEcdsaSecp256k1
 * @notice Library for interacting with ECDSA public keys on the secp256k1 curve, including validation and serialization.
 * @dev The keys are represented as addresses.
 */
⋮----
/**
     * @notice Reverts when the key bytes are invalid.
     */
⋮----
/**
     * @notice The key wrapper.
     * @param value The address.
     */
⋮----
/**
     * @notice Wraps an address.
     * @param keyRaw The address.
     * @return key The wrapped key.
     * @dev Allows to wrap zero address.
     */
function wrap(address keyRaw) internal view returns (KEY_ECDSA_SECP256K1 memory key) {
⋮----
/**
     * @notice Unwraps a key.
     * @param key The key.
     * @return keyRaw The address.
     */
function unwrap(KEY_ECDSA_SECP256K1 memory key) internal view returns (address keyRaw) {
⋮----
/**
     * @notice Serializes a key.
     * @param key The key.
     * @return keySerialized The serialized key.
     * @dev Serializes address to 32 bytes.
     */
function serialize(KEY_ECDSA_SECP256K1 memory key) internal view returns (bytes memory keySerialized) {
⋮----
/**
     * @notice Deserializes a serialized key.
     * @param keySerialized The serialized key.
     * @return key The key.
     */
function deserialize(bytes memory keySerialized) internal view returns (KEY_ECDSA_SECP256K1 memory key) {
⋮----
/**
     * @notice Converts a key to bytes.
     * @param key The key.
     * @return keyBytes The bytes representation of the key.
     * @dev It is a bytes representation of the underlying key itself.
     */
function toBytes(KEY_ECDSA_SECP256K1 memory key) internal view returns (bytes memory keyBytes) {
⋮----
/**
     * @notice Converts bytes to a key.
     * @param keyBytes The bytes representation of the key.
     * @return key The key.
     */
function fromBytes(bytes memory keyBytes) internal view returns (KEY_ECDSA_SECP256K1 memory key) {
⋮----
/**
     * @notice Returns a zero key.
     * @return key The zero key.
     */
function zeroKey() internal view returns (KEY_ECDSA_SECP256K1 memory key) {
⋮----
/**
     * @notice Checks if two keys are equal.
     * @param key1 The first key.
     * @param key2 The second key.
     * @return If the keys are equal.
     */
function equal(KEY_ECDSA_SECP256K1 memory key1, KEY_ECDSA_SECP256K1 memory key2) internal view returns (bool) {
```

## File: src/libraries/sigs/SigBlsBls12381.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {BLS12381} from "../utils/BLS12381.sol";
import {KeyBlsBls12381} from "../keys/KeyBlsBls12381.sol";
⋮----
/**
 * @title SigBlsBls12381
 * @notice Library for verifying BLS signatures on the BLS12381 curve.
 */
⋮----
/**
     * @notice Reverts when the message length is invalid.
     */
⋮----
/**
     * @notice Verify a BLS signature.
     * @param keyBytes The encoded G1 public key.
     * @param message The encoded message hash to verify.
     * @param signature The encoded G1 signature.
     * @param extraData The encoded G2 public key.
     * @return If the signature is valid.
     * @dev Burns the whole gas if pairing precompile fails.
     *      Returns false if the key is zero G1 point.
     */
function verify(bytes memory keyBytes, bytes memory message, bytes memory signature, bytes memory extraData)
⋮----
/**
     * @notice Verify a BLS signature.
     * @param keyG1 The G1 public key.
     * @param messageHash The message hash to verify.
     * @param signatureG1 The G1 signature.
     * @param keyG2 The G2 public key.
     * @return If the signature is valid.
     * @dev Burns the whole gas if pairing precompile fails.
     *      Returns false if the key is zero G1 point.
     */
function verify(
```

## File: src/libraries/sigs/SigBlsBn254.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {BN254} from "../utils/BN254.sol";
import {KeyBlsBn254} from "../keys/KeyBlsBn254.sol";
⋮----
/**
 * @title SigBlsBn254
 * @notice Library for verifying BLS signatures on the BN254 curve.
 */
⋮----
/**
     * @notice Reverts when the message length is invalid.
     */
⋮----
/**
     * @notice Verify a BLS signature.
     * @param keyBytes The encoded G1 public key.
     * @param message The encoded message hash to verify.
     * @param signature The encoded G1 signature.
     * @param extraData The encoded G2 public key.
     * @return If the signature is valid.
     * @dev Burns the whole gas if pairing precompile fails.
     *      Returns false if the key is zero G1 point.
     */
function verify(bytes memory keyBytes, bytes memory message, bytes memory signature, bytes memory extraData)
⋮----
/**
     * @notice Verify a BLS signature.
     * @param keyG1 The G1 public key.
     * @param messageHash The message hash to verify.
     * @param signatureG1 The G1 signature.
     * @param keyG2 The G2 public key.
     * @return If the signature is valid.
     * @dev Burns the whole gas if pairing precompile fails.
     *      Returns false if the key is zero G1 point.
     */
function verify(
```

## File: src/libraries/sigs/SigEcdsaSecp256k1.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {KeyEcdsaSecp256k1} from "../keys/KeyEcdsaSecp256k1.sol";
⋮----
import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
⋮----
/**
 * @title SigEcdsaSecp256k1
 * @notice Library for verifying ECDSA signatures on the secp256k1 curve.
 */
⋮----
/**
     * @notice Reverts when the message length is invalid.
     */
⋮----
/**
     * @notice Verify an ECDSA signature.
     * @param keyBytes The encoded signer address.
     * @param message The encoded message hash to verify.
     * @param signature The encoded ECDSA signature.
     * @return If the signature is valid.
     * @dev Returns false if the key is zero address.
     */
function verify(
⋮----
bytes memory /* extraData */
⋮----
/**
     * @notice Verify an ECDSA signature.
     * @param key The signer address.
     * @param message The message hash to verify.
     * @param signature The ECDSA signature.
     * @return If the signature is valid.
     * @dev Returns false if the key is zero address.
     */
function verify(address key, bytes32 message, bytes memory signature) internal view returns (bool) {
```

## File: src/libraries/structs/Checkpoints.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {Checkpoints as OZCheckpoints} from "@openzeppelin/contracts/utils/structs/Checkpoints.sol";
import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
⋮----
/**
 * @title Checkpoints
 * @notice Library implementing a checkpointing mechanism for values as they change at different points in time.
 * @dev This library defines the `Trace*` struct, for checkpointing values as they change at different points in
 * time, and later looking up past values by key.
 */
⋮----
/**
     * @dev Pushes a (`key`, `value`) pair into a Trace208 so that it is stored as the checkpoint.
     *
     * Returns previous value and new value.
     */
function push(Trace208 storage self, uint48 key, uint208 value) internal returns (uint208, uint208) {
⋮----
/**
     * @dev Returns the value in the last (most recent) checkpoint with a key lower or equal than the search key, or zero
     * if there is none.
     */
function upperLookupRecent(Trace208 storage self, uint48 key) internal view returns (uint208) {
⋮----
/**
     * @dev Returns the value in the last (most recent) checkpoint with a key lower or equal than the search key, or zero
     * if there is none.
     *
     * NOTE: This is a variant of {upperLookupRecent} that can be optimized by getting the hint
     * (index of the checkpoint with a key lower or equal than the search key).
     */
function upperLookupRecent(Trace208 storage self, uint48 key, bytes memory hint_) internal view returns (uint208) {
⋮----
/**
     * @dev Returns whether there is a checkpoint with a key lower or equal than the search key in the structure (i.e. it is not empty),
     * and if so the key and value in the checkpoint, and its position in the trace.
     */
function upperLookupRecentCheckpoint(Trace208 storage self, uint48 key)
⋮----
/**
     * @dev Returns whether there is a checkpoint with a key lower or equal than the search key in the structure (i.e. it is not empty),
     * and if so the key and value in the checkpoint, and its position in the trace.
     *
     * NOTE: This is a variant of {upperLookupRecentCheckpoint} that can be optimized by getting the hint
     * (index of the checkpoint with a key lower or equal than the search key).
     */
function upperLookupRecentCheckpoint(Trace208 storage self, uint48 key, bytes memory hint_)
⋮----
/**
     * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.
     */
function latest(Trace208 storage self) internal view returns (uint208) {
⋮----
/**
     * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value
     * in the most recent checkpoint.
     */
function latestCheckpoint(Trace208 storage self) internal view returns (bool, uint48, uint208) {
⋮----
/**
     * @dev Returns a total number of checkpoints.
     */
function length(Trace208 storage self) internal view returns (uint256) {
⋮----
/**
     * @dev Returns checkpoint at a given position.
     */
function at(Trace208 storage self, uint32 pos) internal view returns (Checkpoint208 memory) {
⋮----
/**
     * @dev Pops the last (most recent) checkpoint.
     */
function pop(Trace208 storage self) internal returns (uint208 value) {
⋮----
/**
     * @dev Pushes a (`key`, `value`) pair into a Trace256 so that it is stored as the checkpoint.
     *
     * Returns previous value and new value.
     */
function push(Trace256 storage self, uint48 key, uint256 value) internal returns (uint256, uint256) {
⋮----
function upperLookupRecent(Trace256 storage self, uint48 key) internal view returns (uint256) {
⋮----
function upperLookupRecent(Trace256 storage self, uint48 key, bytes memory hint_) internal view returns (uint256) {
⋮----
function upperLookupRecentCheckpoint(Trace256 storage self, uint48 key)
⋮----
function upperLookupRecentCheckpoint(Trace256 storage self, uint48 key, bytes memory hint_)
⋮----
function latest(Trace256 storage self) internal view returns (uint256) {
⋮----
function latestCheckpoint(Trace256 storage self) internal view returns (bool exists, uint48 _key, uint256 _value) {
⋮----
function length(Trace256 storage self) internal view returns (uint256) {
⋮----
function at(Trace256 storage self, uint32 pos) internal view returns (Checkpoint256 memory) {
⋮----
function pop(Trace256 storage self) internal returns (uint256 value) {
⋮----
/**
     * @dev Pushes a (`key`, `value`) pair into a Trace512 so that it is stored as the checkpoint.
     *
     * Returns previous value and new value.
     */
function push(Trace512 storage self, uint48 key, uint256[2] memory value)
⋮----
function upperLookupRecent(Trace512 storage self, uint48 key) internal view returns (uint256[2] memory) {
⋮----
function upperLookupRecent(Trace512 storage self, uint48 key, bytes memory hint_)
⋮----
function upperLookupRecentCheckpoint(Trace512 storage self, uint48 key)
⋮----
function upperLookupRecentCheckpoint(Trace512 storage self, uint48 key, bytes memory hint_)
⋮----
function latest(Trace512 storage self) internal view returns (uint256[2] memory) {
⋮----
function latestCheckpoint(Trace512 storage self)
⋮----
function length(Trace512 storage self) internal view returns (uint256) {
⋮----
function at(Trace512 storage self, uint32 pos) internal view returns (Checkpoint512 memory) {
⋮----
function pop(Trace512 storage self) internal returns (uint256[2] memory value) {
⋮----
/**
     * @dev Return the index of the last (most recent) checkpoint with a key lower or equal than the search key, or `high`
     * if there is none. `low` and `high` define a section where to do the search, with inclusive `low` and exclusive
     * `high`.
     *
     * WARNING: `high` should not be greater than the array's length.
     */
function _upperBinaryLookup(OZCheckpoints.Checkpoint208[] storage self, uint48 key, uint256 low, uint256 high)
⋮----
/**
     * @dev Access an element of the array without performing a bounds check. The position is assumed to be within bounds.
     */
function _unsafeAccess(OZCheckpoints.Checkpoint208[] storage self, uint256 pos)
```

## File: src/libraries/structs/PersistentSet.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {Checkpoints} from "../structs/Checkpoints.sol";
⋮----
/**
 * @title PersistentSet
 * @notice Library implementing a persistent set using Checkpoints.
 * @dev The library is optimized towards "write" operations, so, in general, "read" batch operations
 *      like `values()` and `valuesAt()` should not be used on-chain.
 */
⋮----
/**
     * @notice Reverts when the key is too old.
     */
⋮----
/**
     * @notice The status of an element.
     * @param isAdded If the element was ever added to the set.
     * @param addedAt The key (e.g., block timestamp or block number) at which the element was firstly added to the set.
     * @param isRemoved The trace of keys at which the element was removed from the set.
     */
⋮----
/**
     * @notice The set.
     * @param _elements The elements of the set which were ever added to the set.
     * @param _statuses The statuses of the elements.
     * @param _length The number of elements which are currently in the set.
     */
⋮----
/**
     * @notice Adds an element to the set.
     * @param set The set.
     * @param key The key to add element at.
     * @param value The element.
     * @return If the element was added to the set.
     * @dev It is possible to add an element only at the same or greater key than the previous one for this value.
     */
function _add(Set storage set, uint48 key, bytes32 value) private returns (bool) {
⋮----
/**
     * @notice Removes an element from the set.
     * @param set The set.
     * @param key The key to remove element at.
     * @param value The element.
     * @return If the element was removed from the set.
     * @dev It is possible to remove an element only at the same or greater key than the previous one for this value.
     */
function _remove(Set storage set, uint48 key, bytes32 value) private returns (bool) {
⋮----
/**
     * @notice Checks if an element is in the set at a given key.
     * @param set The set.
     * @param key The key to check element at.
     * @param value The element.
     * @param hint The hint to use for the lookup.
     * @return If the element is in the set at the given key.
     */
function _containsAt(Set storage set, uint48 key, bytes32 value, bytes memory hint) private view returns (bool) {
⋮----
/**
     * @notice Checks if an element is in the set at a given key.
     * @param set The set.
     * @param key The key to check element at.
     * @param value The element.
     * @return If the element is in the set at the given key.
     */
function _containsAt(Set storage set, uint48 key, bytes32 value) private view returns (bool) {
⋮----
/**
     * @notice Checks if an element is in the set.
     * @param set The set.
     * @param value The element.
     * @return If the element is in the set.
     */
function _contains(Set storage set, bytes32 value) private view returns (bool) {
⋮----
/**
     * @notice Returns the number of elements in the set.
     * @param set The set.
     * @return The number of elements in the set.
     */
function _length(Set storage set) private view returns (uint256) {
⋮----
/**
     * @notice Returns the elements in the set at a given key.
     * @param set The set.
     * @param key The key to get elements at.
     * @return values_ The elements in the set at the given key.
     */
function _valuesAt(Set storage set, uint48 key) private view returns (bytes32[] memory values_) {
⋮----
/**
     * @notice Returns the elements in the set.
     * @param set The set.
     * @return values_ The elements in the set.
     */
function _values(Set storage set) private view returns (bytes32[] memory values_) {
⋮----
// Bytes32Set
⋮----
/**
     * @notice The set of bytes32 values.
     * @param _inner The set.
     */
⋮----
/**
     * @notice Adds an element to the set.
     * @param set The set.
     * @param key The key to add element at.
     * @param value The element.
     * @return If the element was added to the set.
     */
function add(Bytes32Set storage set, uint48 key, bytes32 value) internal returns (bool) {
⋮----
/**
     * @notice Removes an element from the set.
     * @param set The set.
     * @param key The key to remove element at.
     * @param value The element.
     * @return If the element was removed from the set.
     */
function remove(Bytes32Set storage set, uint48 key, bytes32 value) internal returns (bool) {
⋮----
function containsAt(Bytes32Set storage set, uint48 key, bytes32 value, bytes memory hint)
⋮----
function containsAt(Bytes32Set storage set, uint48 key, bytes32 value) internal view returns (bool) {
⋮----
function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {
⋮----
function length(Bytes32Set storage set) internal view returns (uint256) {
⋮----
/**
     * @notice Returns the elements in the set at a given key.
     * @param set The set.
     * @param key The key to get elements at.
     * @return result The elements in the set at the given key.
     */
function valuesAt(Bytes32Set storage set, uint48 key) internal view returns (bytes32[] memory result) {
⋮----
/**
     * @notice Returns the elements in the set.
     * @param set The set.
     * @return result The elements in the set.
     */
function values(Bytes32Set storage set) internal view returns (bytes32[] memory result) {
⋮----
// AddressSet
⋮----
/**
     * @notice The set of address values.
     * @param _inner The set.
     */
⋮----
function add(AddressSet storage set, uint48 key, address value) internal returns (bool) {
⋮----
function remove(AddressSet storage set, uint48 key, address value) internal returns (bool) {
⋮----
function containsAt(AddressSet storage set, uint48 key, address value, bytes memory hint)
⋮----
function containsAt(AddressSet storage set, uint48 key, address value) internal view returns (bool) {
⋮----
function contains(AddressSet storage set, address value) internal view returns (bool) {
⋮----
function length(AddressSet storage set) internal view returns (uint256) {
⋮----
function valuesAt(AddressSet storage set, uint48 key) internal view returns (address[] memory result) {
⋮----
function values(AddressSet storage set) internal view returns (address[] memory result) {
```

## File: src/libraries/utils/BLS12381.sol

```solidity
// SPDX-License-Identifier: MIT
// Original code: https://github.com/Vectorized/solady/blob/main/src/utils/ext/ithaca/BLS.sol
// Original code: https://github.com/randa-mu/bls-solidity/blob/main/src/libraries/BLS2.sol
⋮----
/**
 * @title BLS12381
 * @notice Library for working with BLS12-381 precompiles.
 * @dev Flattened structs to make encoding more efficient.
 *      All structs use Big endian encoding.
 *      See: https://eips.ethereum.org/EIPS/eip-2537
 */
⋮----
/* CUSTOM ERRORS */
⋮----
/**
     * @notice Reverts when G1Add operation failed.
     */
⋮----
/**
     * @notice Reverts when G1MSM operation failed.
     */
⋮----
/**
     * @notice Reverts when pairing operation failed.
     */
⋮----
/**
     * @notice Reverts when MapFpToG1 operation failed.
     */
⋮----
/**
     * @notice Reverts when the DST length is too long.
     */
⋮----
/* STRUCTS */
⋮----
/**
     * @notice A representation of a point on the G1 curve of BLS12-381.
     * @param x_a The most significant 256 bits of the affine x-coordinate (big endian).
     * @param x_b The least significant 256 bits of the affine x-coordinate.
     * @param y_a The most significant 256 bits of the affine y-coordinate (big endian).
     * @param y_b The least significant 256 bits of the affine y-coordinate.
     */
⋮----
/**
     * @notice A representation of a point on the G2 curve of BLS12-381.
     * @param x_c0_a The most significant 256 bits of the x.c0 coordinate.
     * @param x_c0_b The least significant 256 bits of the x.c0 coordinate.
     * @param x_c1_a The most significant 256 bits of the x.c1 coordinate.
     * @param x_c1_b The least significant 256 bits of the x.c1 coordinate.
     * @param y_c0_a The most significant 256 bits of the y.c0 coordinate.
     * @param y_c0_b The least significant 256 bits of the y.c0 coordinate.
     * @param y_c1_a The most significant 256 bits of the y.c1 coordinate.
     * @param y_c1_b The least significant 256 bits of the y.c1 coordinate.
     */
⋮----
/* FIELD ORDER */
⋮----
/**
     * @notice Upper 256 bits of the BLS12-381 base field modulus.
     */
⋮----
/**
     * @notice Lower 256 bits of the BLS12-381 base field modulus.
     */
⋮----
/**
     * @notice High limb of (p + 1) / 4 used when taking modular square roots.
     */
⋮----
/**
     * @notice Low limb of (p + 1) / 4 used when taking modular square roots.
     */
⋮----
/**
     * @notice Order of the prime-order subgroup of G1.
     */
⋮----
/**
     * @notice Scalar field modulus Fr (equal to the G1 subgroup order).
     */
⋮----
/**
     * @notice Returns the canonical G1 generator.
     * @return Generator point encoded with split-limb coordinates.
     */
function generatorG1() internal pure returns (G1Point memory) {
⋮----
/**
     * @notice Returns the negated generator coordinates (y -> -y mod p) using the same encoding as G1.
     * @return Generator with y-coordinate reflected modulo the base field.
     */
function negGeneratorG1() internal pure returns (G1Point memory) {
⋮----
/**
     * @notice Returns the canonical G2 generator.
     * @return Generator point encoded with split-limb Fp2 coordinates.
     */
function generatorG2() internal pure returns (G2Point memory) {
⋮----
/**
     * @notice Returns the negated generator coordinates (y -> -y mod p) using the same encoding as G2.
     * @return Generator with y-coordinate reflected modulo the base field.
     */
function negGeneratorG2() internal pure returns (G2Point memory) {
⋮----
/* PRECOMPILE ADDRESSES */
⋮----
/**
     * @notice For exponentiation modulo a field element.
     */
⋮----
/**
     * @notice For addition of two points on the BLS12-381 G1 curve.
     */
⋮----
/**
     * @notice For multi-scalar multiplication (MSM) on the BLS12-381 G1 curve.
     */
⋮----
/**
     * @notice For performing a pairing check on the BLS12-381 curve.
     */
⋮----
/**
     * @notice For mapping a Fp to a point on the BLS12-381 G1 curve.
     */
⋮----
/* OPERATIONS */
⋮----
/**
     * @notice Returns a sum of two G1 points.
     * @param point0 First addend in affine coordinates (split-limb representation).
     * @param point1 Second addend in affine coordinates (split-limb representation).
     * @return result Sum of point0 and point1 in affine coordinates.
     */
function add(G1Point memory point0, G1Point memory point1) internal view returns (G1Point memory result) {
⋮----
mstore(0x00, 0xd6cc76eb) // `G1AddFailed()`.
⋮----
/**
     * @notice Returns a scalar multiplication of a G1 point and a scalar.
     * @param point Base point in affine coordinates.
     * @param scalar Scalar multiplier in Fr.
     * @return result Point resulting from scalar multiplication in affine coordinates.
     */
function scalar_mul(G1Point memory point, uint256 scalar) internal view returns (G1Point memory result) {
⋮----
mstore(0x00, 0x5f776986) // `G1MSMFailed()`.
⋮----
/**
     * @notice Returns whether the pairing of two G1 and two G2 points is valid.
     * @param a1 First G1 point.
     * @param a2 First G2 point paired with a1.
     * @param b1 Second G1 point.
     * @param b2 Second G2 point paired with b1.
     * @return result True if e(a1, a2) equals e(b1, b2).
     */
function pairing(G1Point memory a1, G2Point memory a2, G1Point memory b1, G2Point memory b2)
⋮----
mstore(0x00, 0x4df45e2f) // `PairingFailed()`.
⋮----
/**
     * @notice Returns a negated G1 point by reflecting it over the x-axis.
     * @param point The G1 point to negate.
     * @return Negated point.
     * @dev Assumes that the Y coordinate is always less than the field modulus.
     *      Returns the point at infinity unchanged.
     */
function negate(G1Point memory point) internal pure returns (G1Point memory) {
⋮----
/**
     * @notice Returns a point in G1 from a message.
     * @param message Message to hash using the RFC 9380 hash_to_curve suite for BLS12-381 G1.
     * @return result Deterministic G1 point corresponding to the message.
     */
function hashToG1(bytes memory message) internal view returns (G1Point memory result) {
⋮----
// inplace mod in uniform_bytes[64*i]
⋮----
mstore(m, 0x40) // length of base
mstore(add(m, 0x20), 0x01) // length of exponent 1
mstore(add(m, 0x40), 0x40) // length of modulus
mcopy(add(m, 0x60), p, 0x40) // copy base
mstore8(add(m, 0xa0), 1) // exponent
⋮----
// EIP-2537 map_fp_to_g1
⋮----
mstore(0x00, 0x24a289fc) // `MapFpToG1Failed()`.
⋮----
/**
     * @notice Returns an expanded arbitrary message to n bytes, as described in rfc9380 section 5.3.1, using H = sha256.
     * @param DST Domain separation tag.
     * @param message The message to expand.
     * @param n_bytes The number of bytes to extend to.
     * @return out Pseudo-random byte string of length n_bytes derived from the message and DST.
     */
function expandMsg(bytes memory DST, bytes memory message, uint8 n_bytes) internal pure returns (bytes memory out) {
⋮----
/**
     * @notice Returns a y-coordinate for the curve point with the provided x value.
     * @param x_a The most significant 256 bits of the affine x-coordinate.
     * @param x_b The least significant 256 bits of the affine x-coordinate.
     * @return y_a The most significant 256 bits of a valid affine y-coordinate.
     * @return y_b The least significant 256 bits of a valid affine y-coordinate.
     */
function findYFromX(uint256 x_a, uint256 x_b) internal view returns (uint256 y_a, uint256 y_b) {
// compute (x**3 + 4) mod p
⋮----
// compute y = sqrt(x**3 + 4) mod p = (x**3 + 4)^(p+1)/4 mod p
⋮----
mstore(add(m, 0x20), 0x40) // length of exponent
⋮----
/**
     * @notice Returns true if the given point satisfies the BLS12-381 G1 curve equation.
     * @param point Point to check for curve membership.
     * @return True if the point lies on the curve.
     */
function isOnCurve(G1Point memory point) internal view returns (bool) {
⋮----
mstore(add(m, 0x20), 0x01) // length of exponent 2
⋮----
mstore8(add(m, 0xa0), 2) // exponent
⋮----
/**
     * @notice Returns true if the given point lies in the prime-order subgroup of G1.
     * @param point Point to check for subgroup membership.
     * @return True if the point is in the correct subgroup.
     */
function isInSubgroup(G1Point memory point) internal view returns (bool) {
⋮----
/**
     * @notice Computes x^3 + 4 modulo the BLS12-381 base field.
     * @param x_a The most significant 256 bits of the x-coordinate.
     * @param x_b The least significant 256 bits of the x-coordinate.
     * @return The most and least significant 256-bit limbs of (x^3 + 4) mod p.
     */
function _xCubePlus4(uint256 x_a, uint256 x_b) internal view returns (uint256, uint256) {
⋮----
mstore(add(m, 0x20), 0x01) // length of exponent 3
⋮----
mstore8(add(m, 0xa0), 3) // exponent
⋮----
// add 4 to x^3 and reduce modulo the field prime
```

## File: src/libraries/utils/BN254.sol

```solidity
// SPDX-License-Identifier: MIT
// Original code: https://github.com/Layr-Labs/eigenlayer-middleware/blob/mainnet/src/libraries/BN254.sol
// Copyright (c) 2024 LayrLabs Inc.
⋮----
// modulus for the underlying field F_p of the elliptic curve
⋮----
// modulus for the underlying field F_r of the elliptic curve
⋮----
// Encoding of field elements is: X[1] * i + X[0]
⋮----
function generatorG1() internal pure returns (G1Point memory) {
⋮----
// generator of group G2
/// @dev Generator point in F_q2 is of the form: (x0 + ix1, y0 + iy1).
⋮----
/// @notice returns the G2 generator
/// @dev mind the ordering of the 1s and 0s!
///      this is because of the (unknown to us) convention used in the bn254 pairing precompile contract
///      "Elements a * i + b of F_p^2 are encoded as two elements of F_p, (a, b)."
///      https://github.com/ethereum/EIPs/blob/master/EIPS/eip-197.md#encoding
function generatorG2() internal pure returns (G2Point memory) {
⋮----
// negation of the generator of group G2
⋮----
function negGeneratorG2() internal pure returns (G2Point memory) {
⋮----
/**
     * @param p Some point in G1.
     * @return The negation of `p`, i.e. p.plus(p.negate()) should be zero.
     */
function negate(G1Point memory p) internal pure returns (G1Point memory) {
// The prime q in the base field F_q for G1
⋮----
/**
     * @return r the sum of two points of G1
     */
function plus(G1Point memory p1, G1Point memory p2) internal view returns (G1Point memory r) {
⋮----
// solium-disable-next-line security/no-inline-assembly
⋮----
// Use "invalid" to make gas estimation work
⋮----
/**
     * @notice an optimized ecMul implementation that takes O(log_2(s)) ecAdds
     * @param p the point to multiply
     * @param s the scalar to multiply by
     * @dev this function is only safe to use if the scalar is 9 bits or less
     */
function scalar_mul_tiny(BN254.G1Point memory p, uint16 s) internal view returns (BN254.G1Point memory) {
⋮----
// if s is 1 return p
⋮----
// the accumulated product to return
⋮----
// the 2^n*p to add to the accumulated product in each iteration
⋮----
// value of most significant bit
⋮----
// index of most significant bit
⋮----
//loop until we reach the most significant bit
⋮----
// if the  current bit is 1, add the 2^n*p to the accumulated product
⋮----
// double the 2^n*p for the next iteration
⋮----
// increment the index and double the value of the most significant bit
⋮----
// return the accumulated product
⋮----
/**
     * @return r the product of a point on G1 and a scalar, i.e.
     *         p == p.scalar_mul(1) and p.plus(p) == p.scalar_mul(2) for all
     *         points p.
     */
function scalar_mul(G1Point memory p, uint256 s) internal view returns (G1Point memory r) {
⋮----
/**
     *  @return The result of computing the pairing check
     *         e(p1[0], p2[0]) *  .... * e(p1[n], p2[n]) == 1
     *         For example,
     *         pairing([P1(), P1().negate()], [P2(), P2()]) should return true.
     */
function pairing(G1Point memory a1, G2Point memory a2, G1Point memory b1, G2Point memory b2)
⋮----
/**
     * @notice This function is functionally the same as pairing(), however it specifies a gas limit
     *         the user can set, as a precompile may use the entire gas budget if it reverts.
     */
function safePairing(G1Point memory a1, G2Point memory a2, G1Point memory b1, G2Point memory b2, uint256 pairingGas)
⋮----
//Out is the output of the pairing precompile, either 0 or 1 based on whether the two pairings are equal.
//Success is true if the precompile actually goes through (aka all inputs are valid)
⋮----
/// @return hashedG1 the keccak256 hash of the G1 Point
/// @dev used for BLS signatures
function hashG1Point(BN254.G1Point memory pk) internal pure returns (bytes32 hashedG1) {
⋮----
/// @return the keccak256 hash of the G2 Point
⋮----
function hashG2Point(BN254.G2Point memory pk) internal pure returns (bytes32) {
⋮----
/**
     * @notice adapted from https://github.com/HarryR/solcrypto/blob/master/altbn128.sol
     */
function hashToG1(bytes32 _x) internal view returns (G1Point memory) {
⋮----
// y^2 == beta
⋮----
/**
     * Given X, find Y
     *
     *   where y = sqrt(x^3 + b)
     *
     * Returns: (x^3 + b), y
     */
function findYFromX(uint256 x) internal view returns (uint256, uint256) {
// beta = (x^3 + b) % p
⋮----
// y^2 = x^3 + b
// this acts like: y = sqrt(beta) = beta^((p+1) / 4)
⋮----
function expMod(uint256 _base, uint256 _exponent, uint256 _modulus) internal view returns (uint256 retval) {
⋮----
input[0] = 0x20; // baseLen = new(big.Int).SetBytes(getData(input, 0, 32))
input[1] = 0x20; // expLen  = new(big.Int).SetBytes(getData(input, 32, 32))
input[2] = 0x20; // modLen  = new(big.Int).SetBytes(getData(input, 64, 32))
```

## File: src/libraries/utils/InputNormalizer.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
/**
 * @title InputNormalizer
 * @notice Library for normalizing input arrays to a given length.
 */
⋮----
/**
     * @notice Reverts when the length of the input is not zero and not equal to the expected length.
     */
⋮----
/**
     * @notice Normalizes an array of bytes to a given length.
     * @param arr The array of bytes.
     * @param length The expected length of the array.
     * @return The normalized array of bytes.
     */
function normalize(bytes[] memory arr, uint256 length) internal pure returns (bytes[] memory) {
⋮----
/**
     * @notice Normalizes an array of arrays of bytes to a given length.
     * @param arr The array of arrays of bytes.
     * @param length The expected length of the array.
     * @return The normalized array of arrays of bytes.
     */
function normalize(bytes[][] memory arr, uint256 length) internal pure returns (bytes[][] memory) {
```

## File: src/libraries/utils/KeyTags.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
/**
 * @title KeyTags
 * @notice Library for working with key tags which represent the keys' types and arbitrary purpose identifiers.
 */
⋮----
/**
     * @notice Reverts when the key tag is duplicated.
     */
⋮----
/**
     * @notice Reverts when the key type is invalid.
     */
⋮----
/**
     * @notice Reverts when the key tag is invalid.
     */
⋮----
/**
     * @notice The total number of key tags.
     * @dev 3 bits for type, 4 bits for tag
     */
⋮----
/**
     * @notice The maximum key type.
     */
⋮----
/**
     * @notice The maximum key tag.
     */
⋮----
/**
     * @notice Validates a key tag.
     * @param keyTag The key tag.
     */
function validateKeyTag(uint8 keyTag) internal pure {
⋮----
/**
     * @notice Validates a key type.
     * @param type_ The key type.
     */
function validateType(uint8 type_) internal pure {
⋮----
/**
     * @notice Validates a key tag identifier.
     * @param tag The key tag identifier.
     */
function validateTag(uint8 tag) internal pure {
⋮----
/**
     * @notice Returns a key tag.
     * @param type_ The key type.
     * @param tag The key tag identifier.
     * @return The key tag.
     */
function getKeyTag(uint8 type_, uint8 tag) internal pure returns (uint8) {
⋮----
/**
     * @notice Returns a key type.
     * @param keyTag The key tag.
     * @return The key type.
     */
function getType(uint8 keyTag) internal pure returns (uint8) {
⋮----
/**
     * @notice Returns a key tag identifier.
     * @param keyTag The key tag.
     * @return The key tag identifier.
     */
function getTag(uint8 keyTag) internal pure returns (uint8) {
⋮----
/**
     * @notice Checks if a key tag is in the serialized key tags.
     * @param keyTagsSerialized The serialized key tags.
     * @param keyTag The key tag.
     * @return If the key tag is in the serialized key tags.
     */
function contains(uint128 keyTagsSerialized, uint8 keyTag) internal pure returns (bool) {
⋮----
/**
     * @notice Adds a key tag to the serialized key tags.
     * @param keyTagsSerialized The serialized key tags.
     * @param keyTag The key tag.
     * @return The serialized key tags with the key tag added.
     * @dev Doesn't revert when the key tag is already in the serialized key tags.
     */
function add(uint128 keyTagsSerialized, uint8 keyTag) internal pure returns (uint128) {
⋮----
/**
     * @notice Removes a key tag from the serialized key tags.
     * @param keyTagsSerialized The serialized key tags.
     * @param keyTag The key tag.
     * @return The serialized key tags with the key tag removed.
     * @dev Doesn't revert when the key tag is not in the serialized key tags.
     */
function remove(uint128 keyTagsSerialized, uint8 keyTag) internal pure returns (uint128) {
⋮----
/**
     * @notice Serializes an array of key tags.
     * @param keyTags The array of key tags.
     * @return keyTagsSerialized The serialized key tags.
     * @dev Reverts when the key tags are duplicated.
     */
function serialize(uint8[] memory keyTags) internal pure returns (uint128 keyTagsSerialized) {
⋮----
/**
     * @notice Deserializes a serialized key tags.
     * @param keyTagsSerialized The serialized key tags.
     * @return keyTags The array of key tags.
     */
function deserialize(uint128 keyTagsSerialized) internal pure returns (uint8[] memory keyTags) {
```

## File: src/libraries/utils/Scaler.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
/**
 * @title Scaler
 * @notice Library for scaling values between different decimals and inverting them.
 */
⋮----
/**
     * @notice Scales a value given its decimals to the target decimals.
     * @param value The value to scale.
     * @param decimals The base decimals of the value.
     * @param targetDecimals The target decimals.
     * @return The scaled value.
     */
function scale(uint256 value, uint8 decimals, uint8 targetDecimals) internal pure returns (uint256) {
⋮----
/**
     * @notice Inverts a value given its decimals.
     * @param value The value to invert.
     * @param decimals The base decimals of the value.
     * @return The inverted value.
     * @dev Reverts if the value is zero.
     */
function invert(uint256 value, uint8 decimals) internal pure returns (uint256) {
```

## File: src/libraries/utils/ValSetVerifier.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
/**
 * @title ValSetVerifier
 * @notice Library for verifying the validity of validator set elements.
 */
⋮----
/**
     * @notice The validator's key.
     * @param tag The key tag.
     * @param payloadHash The hash of the key.
     */
⋮----
/**
     * @notice The validator's vault.
     * @param chainId The chain ID.
     * @param vault The vault address.
     * @param votingPower The voting power.
     */
⋮----
/**
     * @notice The validator.
     * @param operator The operator address.
     * @param votingPower The voting power.
     * @param isActive If the validator is active.
     * @param keys The validator's keys.
     * @param vaults The validator's vaults.
     * @dev The voting power may not be equal to the sum of the voting powers inside the vaults.
     */
⋮----
/**
     * @notice The validator set.
     * @param validators The validators in the validator set.
     */
⋮----
/**
     * @notice The Merkle proof.
     * @param leaf The leaf to prove.
     * @param proof The proof.
     */
⋮----
uint256 internal constant VALIDATOR_SET_TREE_HEIGHT = 0; // 1 element (ceil(log2(1)))
⋮----
uint256 internal constant VALIDATORS_LIST_TREE_HEIGHT = 20; // 1048576 elements (ceil(log2(1048576)))
⋮----
uint256 internal constant VALIDATORS_LIST_MAX_LENGTH = 1_048_576; // 1048576 elements (2 ^ VALIDATORS_LIST_TREE_HEIGHT)
⋮----
uint256 internal constant VALIDATOR_TREE_HEIGHT = 3; // 5 elements (ceil(log2(5)))
⋮----
uint256 internal constant KEY_LIST_TREE_HEIGHT = 7; // 128 elements (ceil(log2(128)))
⋮----
uint256 internal constant KEY_LIST_MAX_LENGTH = 128; // 128 elements (2 ^ KEY_LIST_TREE_HEIGHT)
⋮----
uint256 internal constant VAULT_LIST_TREE_HEIGHT = 10; // 1024 elements (ceil(log2(1024)))
⋮----
uint256 internal constant VAULT_LIST_MAX_LENGTH = 1024; // 1024 elements (2 ^ VAULT_LIST_TREE_HEIGHT)
⋮----
uint256 internal constant KEY_TREE_HEIGHT = 1; // 2 elements (ceil(log2(2)))
⋮----
uint256 internal constant VAULT_TREE_HEIGHT = 2; // 3 elements (ceil(log2(3)))
⋮----
/// @dev The precompile address for SHA-256
⋮----
uint256 internal constant VALIDATORS_LIST_LOCAL_INDEX = VALIDATOR_SET_VALIDATORS_BASE_INDEX; // to element in ValidatorSet
⋮----
VALIDATORS_LIST_LOCAL_INDEX << (1 + VALIDATORS_LIST_TREE_HEIGHT); // to first element (inclusive), "1" is for the length (for a List)
⋮----
VALIDATOR_ROOT_MIN_LOCAL_INDEX + VALIDATORS_LIST_MAX_LENGTH; // to last element (exclusive)
⋮----
VALIDATOR_SET_TREE_HEIGHT + 1 + VALIDATORS_LIST_TREE_HEIGHT; // (to element in ValidatorSet) + (length) + (to element in validators)
⋮----
uint256 internal constant VALIDATOR_OPERATOR_LOCAL_INDEX = VALIDATOR_OPERATOR_BASE_INDEX; // to element in Validator
⋮----
uint256 internal constant VALIDATOR_OPERATOR_PROOF_EXPECTED_HEIGHT = VALIDATOR_TREE_HEIGHT; // (to element in Validator)
⋮----
uint256 internal constant VALIDATOR_VOTING_POWER_LOCAL_INDEX = VALIDATOR_VOTING_POWER_BASE_INDEX; // to element in Validator
⋮----
uint256 internal constant VALIDATOR_VOTING_POWER_PROOF_EXPECTED_HEIGHT = VALIDATOR_TREE_HEIGHT; // (to element in Validator)
⋮----
uint256 internal constant VALIDATOR_IS_ACTIVE_LOCAL_INDEX = VALIDATOR_IS_ACTIVE_BASE_INDEX; // to element in Validator
⋮----
uint256 internal constant VALIDATOR_IS_ACTIVE_PROOF_EXPECTED_HEIGHT = VALIDATOR_TREE_HEIGHT; // (to element in Validator)
⋮----
uint256 internal constant KEYS_LIST_LOCAL_INDEX = VALIDATOR_KEYS_BASE_INDEX; // to element in Validator
⋮----
uint256 internal constant KEY_ROOT_MIN_LOCAL_INDEX = KEYS_LIST_LOCAL_INDEX << (1 + KEY_LIST_TREE_HEIGHT); // to first element (inclusive), "1" is for the length (for a List)
⋮----
uint256 internal constant KEY_ROOT_MAX_LOCAL_INDEX = KEY_ROOT_MIN_LOCAL_INDEX + KEY_LIST_MAX_LENGTH; // to last element (exclusive)
⋮----
uint256 internal constant KEY_ROOT_PROOF_EXPECTED_HEIGHT = VALIDATOR_TREE_HEIGHT + 1 + KEY_LIST_TREE_HEIGHT; // (to element in Validator) + (length) + (to element in keys)
⋮----
uint256 internal constant VAULTS_LIST_LOCAL_INDEX = VALIDATOR_VAULTS_BASE_INDEX; // to element in Validator
⋮----
uint256 internal constant VAULT_ROOT_MIN_LOCAL_INDEX = VAULTS_LIST_LOCAL_INDEX << (1 + VAULT_LIST_TREE_HEIGHT); // to first element (inclusive), "1" is for the length (for a List)
⋮----
uint256 internal constant VAULT_ROOT_MAX_LOCAL_INDEX = VAULT_ROOT_MIN_LOCAL_INDEX + VAULT_LIST_MAX_LENGTH; // to last element (exclusive)
⋮----
uint256 internal constant VAULT_ROOT_PROOF_EXPECTED_HEIGHT = VALIDATOR_TREE_HEIGHT + 1 + VAULT_LIST_TREE_HEIGHT; // (to element in Validator) + (length) + (to element in vaults)
⋮----
uint256 internal constant KEY_TAG_LOCAL_INDEX = KEY_TAG_BASE_INDEX; // to element in Key
⋮----
uint256 internal constant KEY_TAG_PROOF_EXPECTED_HEIGHT = KEY_TREE_HEIGHT; // (to element in Key)
⋮----
uint256 internal constant KEY_PAYLOAD_HASH_LOCAL_INDEX = KEY_PAYLOAD_HASH_BASE_INDEX; // to element in Key
⋮----
uint256 internal constant KEY_PAYLOAD_HASH_PROOF_EXPECTED_HEIGHT = KEY_TREE_HEIGHT; // (to element in Key)
⋮----
uint256 internal constant VAULT_CHAIN_ID_LOCAL_INDEX = VAULT_CHAIN_ID_BASE_INDEX; // to element in Vault
⋮----
uint256 internal constant VAULT_CHAIN_ID_PROOF_EXPECTED_HEIGHT = VAULT_TREE_HEIGHT; // (to element in Vault)
⋮----
uint256 internal constant VAULT_VAULT_LOCAL_INDEX = VAULT_VAULT_BASE_INDEX; // to element in Vault
⋮----
uint256 internal constant VAULT_VAULT_PROOF_EXPECTED_HEIGHT = VAULT_TREE_HEIGHT; // (to element in Vault)
⋮----
uint256 internal constant VAULT_VOTING_POWER_LOCAL_INDEX = VAULT_VOTING_POWER_BASE_INDEX; // to element in Vault
⋮----
uint256 internal constant VAULT_VOTING_POWER_PROOF_EXPECTED_HEIGHT = VAULT_TREE_HEIGHT; // (to element in Vault)
⋮----
/**
     * @notice Verifies that the key is in the validator set.
     * @param validatorRootProof The proof of the validator root.
     * @param validatorRootLocalIndex The local index of the validator root inside the validator set.
     * @param validatorSetRoot The validator set root.
     * @param keyRootProof The proof of the key root.
     * @param keyRootLocalIndex The local index of the key root inside the validator.
     * @param keyTagProof The proof of the key tag.
     * @param keyPayloadHashProof The proof of the key hash.
     * @return isValid If the key is in the validator set.
     */
function verifyKey(
⋮----
/**
     * @notice Verifies that the vault is in the validator set.
     * @param validatorRootProof The proof of the validator root.
     * @param validatorRootLocalIndex The local index of the validator root inside the validator set.
     * @param validatorSetRoot The validator set root.
     * @param vaultRootProof The proof of the vault root.
     * @param vaultRootLocalIndex The local index of the vault root inside the validator.
     * @param vaultChainIdProof The proof of the vault chain ID.
     * @param vaultVaultProof The proof of the vault address.
     * @param vaultVotingPowerProof The proof of the vault voting power.
     * @return isValid If the vault is in the validator set.
     */
function verifyVault(
⋮----
/**
     * @notice Verifies that the operator address is in the validator set.
     * @param validatorRootProof The proof of the validator root.
     * @param validatorRootLocalIndex The local index of the validator root inside the validator set.
     * @param validatorSetRoot The validator set root.
     * @param operatorProof The proof of the operator address.
     * @return isValid If the operator address is in the validator set.
     */
function verifyOperator(
⋮----
/**
     * @notice Verifies that the validator's voting power is in the validator set.
     * @param validatorRootProof The proof of the validator root.
     * @param validatorRootLocalIndex The local index of the validator root inside the validator set.
     * @param validatorSetRoot The validator set root.
     * @param votingPowerProof The proof of the voting power.
     * @return isValid If the validator's voting power is in the validator set.
     */
function verifyVotingPower(
⋮----
/**
     * @notice Verifies that the validator's activity status is in the validator set.
     * @param validatorRootProof The proof of the validator root.
     * @param validatorRootLocalIndex The local index of the validator root inside the validator set.
     * @param validatorSetRoot The validator set root.
     * @param isActiveProof The proof of the validator's is active.
     * @return isValid If the validator is active.
     */
function verifyIsActive(
⋮----
/**
     * @notice Verifies that the validator root is in the validator set.
     * @param validatorRootProof The proof of the validator root.
     * @param validatorRootLocalIndex The local index of the validator root inside the validator set.
     * @param validatorSetRoot The validator set root.
     * @return isValid If the validator root is in the validator set.
     */
function verifyValidatorRootLocal(
⋮----
/**
     * @notice Verifies that the operator address is in the validator.
     * @param validatorOperatorProof The proof of the operator address.
     * @param validatorRoot The validator root.
     * @return isValid If the operator address is in the validator.
     */
function verifyValidatorOperatorLocal(SszProof calldata validatorOperatorProof, bytes32 validatorRoot)
⋮----
/**
     * @notice Verifies that the validator's voting power is in the validator.
     * @param validatorVotingPowerProof The proof of the validator's voting power.
     * @param validatorRoot The validator root.
     * @return isValid If the validator's voting power is in the validator.
     */
function verifyValidatorVotingPowerLocal(SszProof calldata validatorVotingPowerProof, bytes32 validatorRoot)
⋮----
/**
     * @notice Verifies that the validator's activity status is in the validator.
     * @param validatorIsActiveProof The proof of the validator's activity status.
     * @param validatorRoot The validator root.
     * @return isValid If the validator's activity status is in the validator.
     */
function verifyValidatorIsActiveLocal(SszProof calldata validatorIsActiveProof, bytes32 validatorRoot)
⋮----
/**
     * @notice Verifies that the key root is in the validator.
     * @param keyRootProof The proof of the key root.
     * @param keyRootLocalIndex The local index of the key root inside the validator.
     * @param validatorRoot The validator root.
     * @return isValid If the key root is in the validator.
     */
function verifyValidatorKeyRootLocal(
⋮----
/**
     * @notice Verifies that the vault root is in the validator.
     * @param vaultRootProof The proof of the vault root.
     * @param vaultRootLocalIndex The local index of the vault root inside the validator.
     * @param validatorRoot The validator root.
     * @return isValid If the vault root is in the validator.
     */
function verifyValidatorVaultRootLocal(
⋮----
/**
     * @notice Verifies that the key tag is in the key.
     * @param keyTagProof The proof of the key tag.
     * @param keyRoot The key root.
     * @return isValid If the key tag is in the key.
     */
function verifyKeyTagLocal(SszProof calldata keyTagProof, bytes32 keyRoot) internal view returns (bool) {
⋮----
/**
     * @notice Verifies that the key hash is in the key.
     * @param keyPayloadHashProof The proof of the key hash.
     * @param keyRoot The key root.
     * @return isValid If the key hash is in the key.
     */
function verifyKeyPayloadHash(SszProof calldata keyPayloadHashProof, bytes32 keyRoot) internal view returns (bool) {
⋮----
/**
     * @notice Verifies that the vault's chain ID is in the vault.
     * @param vaultChainIdProof The proof of the vault chain ID.
     * @param vaultRoot The vault root.
     * @return isValid If the vault's chain ID is in the vault.
     */
function verifyVaultChainIdLocal(SszProof calldata vaultChainIdProof, bytes32 vaultRoot)
⋮----
/**
     * @notice Verifies that the vault address is in the vault.
     * @param vaultVaultProof The proof of the vault address.
     * @param vaultRoot The vault root.
     * @return isValid If the vault address is in the vault.
     */
function verifyVaultVaultLocal(SszProof calldata vaultVaultProof, bytes32 vaultRoot) internal view returns (bool) {
⋮----
/**
     * @notice Verifies that the vault's voting power is in the vault.
     * @param vaultVotingPowerProof The proof of the vault voting power.
     * @param vaultRoot The vault root.
     * @return isValid If the vault's voting power is in the vault.
     */
function verifyVaultVotingPowerLocal(SszProof calldata vaultVotingPowerProof, bytes32 vaultRoot)
⋮----
/**
     * @notice Processes an inclusion proof with a SHA256 hash.
     * @param proof The inclusion proof.
     * @param leaf The leaf to be proven.
     * @param root The root to reconcile the proof against.
     * @param localIndex The local index of the leaf.
     * @param expectedHeight The height of the tree that the proof is for.
     * @return valid A boolean indicating whether the derived root from the proof matches the `root` provided.
     * @dev In case of an invalid proof length, we return false which is to be handled by the caller.
     *      In case of a failed SHA-256 call, we revert.
     */
function processInclusionProofSha256(
⋮----
/// @solidity memory-safe-assembly
⋮----
// let startOffset := add(proof.offset, 32)
// But we'll initialize directly in the loop
⋮----
// Div by 2
⋮----
// Store returndata at 0x00
⋮----
// Store returndata at 0x20
```

## File: src/modules/base/NetworkManager.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {INetworkManager} from "../../interfaces/modules/base/INetworkManager.sol";
⋮----
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
⋮----
import {StaticDelegateCallable} from "@symbioticfi/core/src/contracts/common/StaticDelegateCallable.sol";
import {Subnetwork} from "@symbioticfi/core/src/contracts/libraries/Subnetwork.sol";
⋮----
/// @title NetworkManager
/// @notice Contract for managing the network and subnetwork getters.
abstract contract NetworkManager is Initializable, StaticDelegateCallable, INetworkManager {
⋮----
// keccak256(abi.encode(uint256(keccak256("symbiotic.storage.NetworkManager")) - 1)) & ~bytes32(uint256(0xff))
⋮----
function _getNetworkManagerStorage() internal pure returns (INetworkManager.NetworkManagerStorage storage $) {
⋮----
function __NetworkManager_init(NetworkManagerInitParams memory initParams) internal virtual onlyInitializing {
⋮----
/// @inheritdoc INetworkManager
function NETWORK() public view virtual returns (address) {
⋮----
function SUBNETWORK_IDENTIFIER() public view virtual returns (uint96) {
⋮----
function SUBNETWORK() public view virtual returns (bytes32) {
```

## File: src/modules/base/OzEIP712.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IOzEIP712} from "../../interfaces/modules/base/IOzEIP712.sol";
⋮----
import {EIP712Upgradeable} from "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol";
import {MessageHashUtils} from "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol";
⋮----
/// @title OzEIP712
/// @notice Contract for EIP712 hashing.
abstract contract OzEIP712 is EIP712Upgradeable, IOzEIP712 {
⋮----
function __OzEIP712_init(OzEIP712InitParams memory initParams) internal virtual onlyInitializing {
⋮----
/// @inheritdoc IOzEIP712
function hashTypedDataV4(bytes32 structHash) public view returns (bytes32) {
⋮----
function hashTypedDataV4CrossChain(bytes32 structHash) public view virtual returns (bytes32) {
```

## File: src/modules/base/PermissionManager.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IPermissionManager} from "../../interfaces/modules/base/IPermissionManager.sol";
⋮----
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
⋮----
/// @title PermissionManager
/// @notice Base contract for managing permissions.
abstract contract PermissionManager is Initializable, IPermissionManager {
modifier checkPermission() {
⋮----
function _checkPermission() internal virtual;
```

## File: src/modules/common/permissions/OzAccessControl.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {PermissionManager} from "../../base/PermissionManager.sol";
⋮----
import {IOzAccessControl} from "../../../interfaces/modules/common/permissions/IOzAccessControl.sol";
⋮----
import {AccessControlUpgradeable} from "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";
⋮----
/// @title OzAccessControl
/// @notice Contract for permission management based on OpenZeppelin's AccessControl.
abstract contract OzAccessControl is PermissionManager, AccessControlUpgradeable, IOzAccessControl {
// keccak256(abi.encode(uint256(keccak256("symbiotic.storage.OzAccessControl")) - 1)) & ~bytes32(uint256(0xff))
⋮----
function _getOzAccessControlStorage() internal pure returns (OzAccessControlStorage storage $) {
⋮----
function __OzAccessControl_init() internal virtual onlyInitializing {
⋮----
/// @inheritdoc IOzAccessControl
function getRole(bytes4 selector) public view virtual returns (bytes32) {
⋮----
/// @inheritdoc PermissionManager
function _checkPermission() internal view virtual override {
⋮----
function _setSelectorRole(bytes4 selector, bytes32 role) internal virtual {
```

## File: src/modules/common/permissions/OzAccessManaged.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {PermissionManager} from "../../base/PermissionManager.sol";
⋮----
import {IOzAccessManaged} from "../../../interfaces/modules/common/permissions/IOzAccessManaged.sol";
⋮----
import {
    AccessManagedUpgradeable
} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
⋮----
/// @title OzAccessManaged
/// @notice Contract for permission management based on OpenZeppelin's AccessManaged.
abstract contract OzAccessManaged is PermissionManager, AccessManagedUpgradeable, IOzAccessManaged {
function __OzAccessManaged_init(OzAccessManagedInitParams memory initParams) internal virtual onlyInitializing {
⋮----
/// @inheritdoc PermissionManager
function _checkPermission() internal virtual override {
```

## File: src/modules/common/permissions/OzOwnable.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {PermissionManager} from "../../base/PermissionManager.sol";
⋮----
import {IOzOwnable} from "../../../interfaces/modules/common/permissions/IOzOwnable.sol";
⋮----
import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
⋮----
/// @title OzOwnable
/// @notice Contract for permission management based on OpenZeppelin's Ownable.
abstract contract OzOwnable is PermissionManager, OwnableUpgradeable, IOzOwnable {
function __OzOwnable_init(OzOwnableInitParams memory initParams) internal virtual onlyInitializing {
⋮----
/// @inheritdoc PermissionManager
function _checkPermission() internal view virtual override {
```

## File: src/modules/key-registry/KeyRegistry.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {OzEIP712} from "../base/OzEIP712.sol";
⋮----
import {Checkpoints} from "../../libraries/structs/Checkpoints.sol";
import {KeyBlsBls12381} from "../../libraries/keys/KeyBlsBls12381.sol";
import {KeyBlsBn254} from "../../libraries/keys/KeyBlsBn254.sol";
import {KeyEcdsaSecp256k1} from "../../libraries/keys/KeyEcdsaSecp256k1.sol";
import {KeyTags} from "../../libraries/utils/KeyTags.sol";
import {PersistentSet} from "../../libraries/structs/PersistentSet.sol";
import {SigBlsBls12381} from "../../libraries/sigs/SigBlsBls12381.sol";
import {SigBlsBn254} from "../../libraries/sigs/SigBlsBn254.sol";
import {SigEcdsaSecp256k1} from "../../libraries/sigs/SigEcdsaSecp256k1.sol";
⋮----
import {
    IKeyRegistry,
    KEY_TYPE_BLS_BN254,
    KEY_TYPE_BLS_BLS12381,
    KEY_TYPE_ECDSA_SECP256K1
} from "../../interfaces/modules/key-registry/IKeyRegistry.sol";
⋮----
import {MulticallUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol";
⋮----
/// @title KeyRegistry
/// @notice Contract for operators' keys management.
/// @dev It supports:
/// - BLS public keys on BN254
/// - ECDSA public keys on secp256k1
/// - BLS public keys on BLS12381
contract KeyRegistry is OzEIP712, MulticallUpgradeable, IKeyRegistry {
⋮----
// keccak256(abi.encode(uint256(keccak256("symbiotic.storage.KeyRegistry")) - 1)) & ~bytes32(uint256(0xff))
⋮----
function _getKeyRegistryStorage() internal pure returns (KeyRegistryStorage storage $) {
⋮----
function __KeyRegistry_init(KeyRegistryInitParams memory keyRegistryInitParams) public virtual onlyInitializing {
⋮----
/// @inheritdoc IKeyRegistry
function getKeyAt(address operator, uint8 tag, uint48 timestamp) public view virtual returns (bytes memory) {
⋮----
function getKey(address operator, uint8 tag) public view virtual returns (bytes memory) {
⋮----
function getOperator(bytes memory key) public view virtual returns (address) {
⋮----
function getKeysAt(address operator, uint48 timestamp) public view virtual returns (Key[] memory keys) {
⋮----
function getKeys(address operator) public view virtual returns (Key[] memory keys) {
⋮----
function getKeysAt(uint48 timestamp) public view virtual returns (OperatorWithKeys[] memory operatorsKeys) {
⋮----
function getKeys() public view virtual returns (OperatorWithKeys[] memory operatorsKeys) {
⋮----
function getKeysOperatorsLength() public view virtual returns (uint256) {
⋮----
function getKeysOperatorsAt(uint48 timestamp) public view virtual returns (address[] memory) {
⋮----
function getKeysOperators() public view virtual returns (address[] memory) {
⋮----
function _getKeyTagsAt(address operator, uint48 timestamp) internal view virtual returns (uint8[] memory) {
⋮----
function _getKeyTags(address operator) internal view virtual returns (uint8[] memory) {
⋮----
function setKey(uint8 tag, bytes memory key, bytes memory signature, bytes memory extraData) public virtual {
⋮----
function _setKey(address operator, uint8 tag, bytes memory key, bytes memory signature, bytes memory extraData)
⋮----
// Disallow usage between different operators
// Disallow usage of the same key on the same type on different tags
// Allow usage of the old key on the same type and tag
⋮----
function _setKey(address operator, uint8 tag, bytes memory key) internal virtual {
⋮----
function _setKey32(address operator, uint8 tag, bytes memory key) internal {
⋮----
function _setKey64(address operator, uint8 tag, bytes memory key) internal {
⋮----
function _verifyKey(
⋮----
function _getKey32At(address operator, uint8 tag, uint48 timestamp) internal view returns (bytes memory) {
⋮----
function _getKey32(address operator, uint8 tag) internal view returns (bytes memory) {
⋮----
function _getKey64At(address operator, uint8 tag, uint48 timestamp) internal view returns (bytes memory) {
⋮----
function _getKey64(address operator, uint8 tag) internal view returns (bytes memory) {
```

## File: src/modules/settlement/sig-verifiers/libraries/ExtraDataStorageHelper.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
/**
 * @title ExtraDataStorageHelper
 * @notice Library for convenient and safe extra data storage slots derivation.
 */
⋮----
/**
     * @notice Derives a key from a name hash.
     * @param nameHash The name hash.
     * @return The key.
     * @dev It can be used, e.g., to store some global data like number of validators.
     */
function getKeyGlobal(bytes32 nameHash) internal pure returns (bytes32) {
⋮----
/**
     * @notice Derives a key from a key tag and a name hash.
     * @param keyTag The key tag.
     * @param nameHash The name hash.
     * @return The key.
     * @dev It can be used, e.g., to store some data dependent on the key tag like quorum threshold.
     */
function getKeyGlobal(uint8 keyTag, bytes32 nameHash) internal pure returns (bytes32) {
⋮----
/**
     * @notice Derives a key from a key tag, a name hash and an index.
     * @param keyTag The key tag.
     * @param nameHash The name hash.
     * @param index The index.
     * @return The key.
     * @dev It can be used, e.g., to store some data dependent on the key tag, which needs more than 1 storage slot (32 bytes),
     *      like aggregated BLS12-381 public key.
     */
function getKeyGlobal(uint8 keyTag, bytes32 nameHash, uint256 index) internal pure returns (bytes32) {
⋮----
/**
     * @notice Derives a key from a verification type and a name hash.
     * @param verificationType The verification type.
     * @param nameHash The name hash.
     * @return The key.
     * @dev It can be used, e.g., to store some data dependent on the verification type like number of validators
     *      with a possibility to have multiple verification types simultaneously without collisions.
     */
function getKey(uint32 verificationType, bytes32 nameHash) internal pure returns (bytes32) {
⋮----
/**
     * @notice Derives a key from a verification type, a key tag and a name hash.
     * @param verificationType The verification type.
     * @param keyTag The key tag.
     * @param nameHash The name hash.
     * @return The key.
     * @dev It can be used, e.g., to store some data dependent on the verification type and the key tag like quorum threshold
     *      with a possibility to have multiple verification types simultaneously without collisions.
     */
function getKey(uint32 verificationType, uint8 keyTag, bytes32 nameHash) internal pure returns (bytes32) {
⋮----
/**
     * @notice Derives a key from a verification type, a key tag, a name hash and an index.
     * @param verificationType The verification type.
     * @param keyTag The key tag.
     * @param nameHash The name hash.
     * @param index The index.
     * @return The key.
     * @dev It can be used, e.g., to store some data dependent on the verification type and the key tag,
     *      which needs more than 1 storage slot (32 bytes), like aggregated BLS12-381 public key
     *      with a possibility to have multiple verification types simultaneously without collisions.
     */
function getKey(uint32 verificationType, uint8 keyTag, bytes32 nameHash, uint256 index)
```

## File: src/modules/settlement/sig-verifiers/SigVerifierBlsBn254Simple.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {BN254} from "../../../libraries/utils/BN254.sol";
import {ExtraDataStorageHelper} from "./libraries/ExtraDataStorageHelper.sol";
import {KeyBlsBn254} from "../../../libraries/keys/KeyBlsBn254.sol";
import {KeyTags} from "../../../libraries/utils/KeyTags.sol";
import {SigBlsBn254} from "../../../libraries/sigs/SigBlsBn254.sol";
⋮----
import {ISettlement} from "../../../interfaces/modules/settlement/ISettlement.sol";
import {
    ISigVerifierBlsBn254Simple
} from "../../../interfaces/modules/settlement/sig-verifiers/ISigVerifierBlsBn254Simple.sol";
import {ISigVerifier} from "../../../interfaces/modules/settlement/sig-verifiers/ISigVerifier.sol";
import {KEY_TYPE_BLS_BN254} from "../../../interfaces/modules/key-registry/IKeyRegistry.sol";
⋮----
/// @title SigVerifierBlsBn254Simple
/// @notice Contract for verifying validator's set attestations based on BLS signatures on the BN254 curve
/// by decompressing the whole validator set on-chain.
contract SigVerifierBlsBn254Simple is ISigVerifierBlsBn254Simple {
⋮----
/// @inheritdoc ISigVerifier
⋮----
/// @inheritdoc ISigVerifierBlsBn254Simple
⋮----
function verifyQuorumSig(
⋮----
// Proof Structure
// 0 : 64 - G1 aggregated signature
// 64 : 192 - G2 aggregated public key
// 192 : 224+validatorsData.length*64 - encoded data of all active validators for a given `keyTag`
//     192 : 224 - number of validators
//     224 : 224+validatorsData.length*64 - (bytes32 keySerialized,uint256 votingPower)[]
// 224+validatorsData.length*64 (nonSignersOffset) : nonSignersOffset+nonSigners.length*2 - encoded array of 2 bytes non-signer indices (from validatorsData)
//     nonSignersOffset : nonSignersOffset+nonSigners.length*2 - uint16[]
⋮----
// assuming that the validator set, and, hence, total voting power, were properly committed,
// so that the sum of the non-signers' voting powers cannot be greater than the total voting power,
// and, hence, cannot overflow
```

## File: src/modules/settlement/sig-verifiers/SigVerifierBlsBn254ZK.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {BN254} from "../../../libraries/utils/BN254.sol";
import {ExtraDataStorageHelper} from "./libraries/ExtraDataStorageHelper.sol";
import {KeyTags} from "../../../libraries/utils/KeyTags.sol";
⋮----
import {ISettlement} from "../../../interfaces/modules/settlement/ISettlement.sol";
import {ISigVerifierBlsBn254ZK} from "../../../interfaces/modules/settlement/sig-verifiers/ISigVerifierBlsBn254ZK.sol";
import {ISigVerifier} from "../../../interfaces/modules/settlement/sig-verifiers/ISigVerifier.sol";
import {IVerifier} from "../../../interfaces/modules/settlement/sig-verifiers/zk/IVerifier.sol";
import {KEY_TYPE_BLS_BN254} from "../../../interfaces/modules/key-registry/IKeyRegistry.sol";
⋮----
/// @title SigVerifierBlsBn254ZK
/// @notice Contract for verifying validator's set attestations based on BLS signatures on the BN254 curve
/// by decompressing the whole validator set using ZK.
contract SigVerifierBlsBn254ZK is ISigVerifierBlsBn254ZK {
⋮----
/// @inheritdoc ISigVerifier
⋮----
/// @inheritdoc ISigVerifierBlsBn254ZK
⋮----
function verifyQuorumSig(
⋮----
// Proof Structure
// 0 : 256 - ZK proof (uint256[8])
// 256 : 320 - commitments (uint256[2])
// 320 : 384 - commitmentPok (uint256[2])
// 384 : 416 - voting power of signers (uint256)
⋮----
function _getVerifier(uint256 totalActiveValidators) internal view returns (address) {
```

## File: src/modules/settlement/Settlement.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {NetworkManager} from "../base/NetworkManager.sol";
import {OzEIP712} from "../base/OzEIP712.sol";
import {PermissionManager} from "../base/PermissionManager.sol";
⋮----
import {Checkpoints} from "../../libraries/structs/Checkpoints.sol";
import {KeyTags} from "../../libraries/utils/KeyTags.sol";
⋮----
import {ISettlement} from "../../interfaces/modules/settlement/ISettlement.sol";
import {ISigVerifier} from "../../interfaces/modules/settlement/sig-verifiers/ISigVerifier.sol";
⋮----
import {MulticallUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol";
⋮----
/// @title Settlement
/// @notice Contract for processing the validator sets through epochs and allowing verifying their attestations on-chain.
abstract contract Settlement is NetworkManager, OzEIP712, PermissionManager, MulticallUpgradeable, ISettlement {
⋮----
/// @inheritdoc ISettlement
⋮----
// keccak256(abi.encode(uint256(keccak256("symbiotic.storage.Settlement")) - 1)) & ~bytes32(uint256(0xff))
⋮----
function _getSettlementStorage() internal pure returns (SettlementStorage storage $) {
⋮----
function __Settlement_init(SettlementInitParams memory settlementInitParams) internal virtual onlyInitializing {
⋮----
function getSigVerifierAt(uint48 epoch, bytes memory hint) public view virtual returns (address) {
⋮----
function getSigVerifier() public view virtual returns (address) {
⋮----
function getLastCommittedHeaderEpoch() public view virtual returns (uint48) {
⋮----
function isValSetHeaderCommittedAt(uint48 epoch) public view virtual returns (bool) {
⋮----
function getValSetHeaderHashAt(uint48 epoch) public view returns (bytes32) {
⋮----
function getValSetHeaderHash() public view returns (bytes32) {
⋮----
function getValSetHeaderAt(uint48 epoch) public view virtual returns (ValSetHeader memory) {
⋮----
function getValSetHeader() public view virtual returns (ValSetHeader memory header) {
⋮----
function getVersionFromValSetHeaderAt(uint48 epoch) public view virtual returns (uint8) {
⋮----
function getVersionFromValSetHeader() public view virtual returns (uint8) {
⋮----
function getRequiredKeyTagFromValSetHeaderAt(uint48 epoch) public view virtual returns (uint8) {
⋮----
function getRequiredKeyTagFromValSetHeader() public view virtual returns (uint8) {
⋮----
function getCaptureTimestampFromValSetHeaderAt(uint48 epoch) public view virtual returns (uint48) {
⋮----
function getCaptureTimestampFromValSetHeader() public view virtual returns (uint48) {
⋮----
function getQuorumThresholdFromValSetHeaderAt(uint48 epoch) public view virtual returns (uint256) {
⋮----
function getQuorumThresholdFromValSetHeader() public view virtual returns (uint256) {
⋮----
function getTotalVotingPowerFromValSetHeaderAt(uint48 epoch) public view virtual returns (uint256) {
⋮----
function getTotalVotingPowerFromValSetHeader() public view virtual returns (uint256) {
⋮----
function getValidatorsSszMRootFromValSetHeaderAt(uint48 epoch) public view virtual returns (bytes32) {
⋮----
function getValidatorsSszMRootFromValSetHeader() public view virtual returns (bytes32) {
⋮----
function getExtraDataAt(uint48 epoch, bytes32 key) public view virtual returns (bytes32) {
⋮----
function getExtraData(bytes32 key) public view virtual returns (bytes32) {
⋮----
function verifyQuorumSigAt(
⋮----
function verifyQuorumSig(bytes memory message, uint8 keyTag, uint256 quorumThreshold, bytes calldata proof)
⋮----
function setSigVerifier(address sigVerifier) public virtual checkPermission {
⋮----
function setGenesis(ValSetHeader calldata valSetHeader, ExtraData[] calldata extraData)
⋮----
function commitValSetHeader(ValSetHeader calldata header, ExtraData[] calldata extraData, bytes calldata proof)
⋮----
function _setValSetHeader(ValSetHeader calldata header, ExtraData[] calldata extraData) internal virtual {
⋮----
function _getCurrentValue(Checkpoints.Trace208 storage trace, uint48 currentTimepoint)
```

## File: src/modules/valset-driver/EpochManager.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {PermissionManager} from "../base/PermissionManager.sol";
⋮----
import {Checkpoints} from "../../libraries/structs/Checkpoints.sol";
⋮----
import {IEpochManager} from "../../interfaces/modules/valset-driver/IEpochManager.sol";
⋮----
/// @title EpochManager
/// @notice Contract for managing the epochs state machine.
abstract contract EpochManager is PermissionManager, IEpochManager {
⋮----
// keccak256(abi.encode(uint256(keccak256("symbiotic.storage.EpochManager")) - 1)) & ~bytes32(uint256(0xff))
⋮----
function _getEpochManagerStorage() internal pure returns (EpochManagerStorage storage $) {
⋮----
function __EpochManager_init(EpochManagerInitParams memory initParams) internal virtual onlyInitializing {
⋮----
/// @inheritdoc IEpochManager
function getCurrentEpoch() public view virtual returns (uint48) {
⋮----
function getCurrentEpochDuration() public view virtual returns (uint48 epochDuration) {
⋮----
function getCurrentEpochStart() public view virtual returns (uint48) {
⋮----
function getNextEpoch() public view virtual returns (uint48) {
⋮----
function getNextEpochDuration() public view virtual returns (uint48) {
⋮----
function getNextEpochStart() public view virtual returns (uint48) {
⋮----
function getEpochIndex(uint48 timestamp) public view virtual returns (uint48) {
⋮----
function getEpochDuration(uint48 epoch) public view virtual returns (uint48 epochDuration) {
⋮----
function getEpochStart(uint48 epoch) public view virtual returns (uint48) {
⋮----
function setEpochDuration(uint48 epochDuration) public virtual checkPermission {
⋮----
function _setEpochDuration(uint48 epochDuration) internal virtual {
⋮----
function _setEpochDuration(uint48 epochDuration, uint48 epochDurationTimestamp, uint48 epochDurationIndex)
⋮----
function _getEpochDurationDataByTimestamp(uint48 timestamp) internal view virtual returns (uint48, uint48, uint48) {
⋮----
function _getEpochDurationDataByIndex(uint48 index) internal view virtual returns (uint48, uint48, uint48) {
⋮----
function _getCurrentEpochDurationData() internal view virtual returns (uint48, uint48, uint48) {
⋮----
function _getFirstEpochDurationData() internal view virtual returns (uint48, uint48, uint48) {
⋮----
function _serializeEpochDurationData(uint48 epochDuration, uint48 epochDurationTimestamp, uint48 epochDurationIndex)
⋮----
function _deserializeEpochDurationData(uint208 epochDurationData)
⋮----
function _getCurrentValue(Checkpoints.Trace208 storage trace, uint48 currentTimepoint)
```

## File: src/modules/valset-driver/ValSetDriver.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {EpochManager} from "./EpochManager.sol";
import {NetworkManager} from "../base/NetworkManager.sol";
⋮----
import {Checkpoints} from "../../libraries/structs/Checkpoints.sol";
import {KeyTags} from "../../libraries/utils/KeyTags.sol";
import {PersistentSet} from "../../libraries/structs/PersistentSet.sol";
⋮----
import {IValSetDriver} from "../../interfaces/modules/valset-driver/IValSetDriver.sol";
⋮----
import {MulticallUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol";
⋮----
/// @title ValSetDriver
/// @notice Contract for providing various configs and driving data for off-chain services.
abstract contract ValSetDriver is EpochManager, NetworkManager, MulticallUpgradeable, IValSetDriver {
⋮----
/// @inheritdoc IValSetDriver
⋮----
// keccak256(abi.encode(uint256(keccak256("symbiotic.storage.ValSetDriver")) - 1)) & ~bytes32(uint256(0xff))
⋮----
function _getValSetDriverStorage() internal pure returns (ValSetDriverStorage storage $) {
⋮----
function __ValSetDriver_init(ValSetDriverInitParams memory valSetDriverInitParams)
⋮----
function getConfigAt(uint48 timestamp) public view virtual returns (Config memory) {
⋮----
function getConfig() public view virtual returns (Config memory) {
⋮----
function getNumAggregatorsAt(uint48 timestamp) public view virtual returns (uint208) {
⋮----
function getNumAggregators() public view virtual returns (uint208) {
⋮----
function getNumCommittersAt(uint48 timestamp) public view virtual returns (uint208) {
⋮----
function getNumCommitters() public view virtual returns (uint208) {
⋮----
function getCommitterSlotDurationAt(uint48 timestamp) public view virtual returns (uint48) {
⋮----
function getCommitterSlotDuration() public view virtual returns (uint48) {
⋮----
function isVotingPowerProviderRegisteredAt(CrossChainAddress memory votingPowerProvider, uint48 timestamp)
⋮----
function isVotingPowerProviderRegistered(CrossChainAddress memory votingPowerProvider)
⋮----
function getVotingPowerProvidersAt(uint48 timestamp)
⋮----
function getVotingPowerProviders() public view virtual returns (CrossChainAddress[] memory votingPowerProviders) {
⋮----
function getKeysProviderAt(uint48 timestamp) public view virtual returns (CrossChainAddress memory) {
⋮----
function getKeysProvider() public view virtual returns (CrossChainAddress memory) {
⋮----
function isSettlementRegisteredAt(CrossChainAddress memory settlement, uint48 timestamp)
⋮----
function isSettlementRegistered(CrossChainAddress memory settlement) public view virtual returns (bool) {
⋮----
function getSettlementsAt(uint48 timestamp) public view virtual returns (CrossChainAddress[] memory settlements) {
⋮----
function getSettlements() public view virtual returns (CrossChainAddress[] memory settlements) {
⋮----
function getMaxVotingPowerAt(uint48 timestamp) public view virtual returns (uint256) {
⋮----
function getMaxVotingPower() public view virtual returns (uint256) {
⋮----
function getMinInclusionVotingPowerAt(uint48 timestamp) public view virtual returns (uint256) {
⋮----
function getMinInclusionVotingPower() public view virtual returns (uint256) {
⋮----
function getMaxValidatorsCountAt(uint48 timestamp) public view virtual returns (uint208) {
⋮----
function getMaxValidatorsCount() public view virtual returns (uint208) {
⋮----
function getRequiredKeyTagsAt(uint48 timestamp) public view virtual returns (uint8[] memory requiredKeyTags) {
⋮----
function getRequiredKeyTags() public view virtual returns (uint8[] memory requiredKeyTags) {
⋮----
function isQuorumThresholdRegisteredAt(QuorumThreshold memory quorumThreshold, uint48 timestamp)
⋮----
function isQuorumThresholdRegistered(QuorumThreshold memory quorumThreshold) public view virtual returns (bool) {
⋮----
function getQuorumThresholdsAt(uint48 timestamp)
⋮----
function getQuorumThresholds() public view virtual returns (QuorumThreshold[] memory quorumThresholds) {
⋮----
function getRequiredHeaderKeyTagAt(uint48 timestamp) public view virtual returns (uint8) {
⋮----
function getRequiredHeaderKeyTag() public view virtual returns (uint8) {
⋮----
function getVerificationTypeAt(uint48 timestamp) public view virtual returns (uint32) {
⋮----
function getVerificationType() public view virtual returns (uint32) {
⋮----
function setNumAggregators(uint208 numAggregators) public virtual checkPermission {
⋮----
function setNumCommitters(uint208 numCommitters) public virtual checkPermission {
⋮----
function setCommitterSlotDuration(uint48 slotDuration) public virtual checkPermission {
⋮----
function addVotingPowerProvider(CrossChainAddress memory votingPowerProvider) public virtual checkPermission {
⋮----
function removeVotingPowerProvider(CrossChainAddress memory votingPowerProvider) public virtual checkPermission {
⋮----
function setKeysProvider(CrossChainAddress memory keysProvider) public virtual checkPermission {
⋮----
function addSettlement(CrossChainAddress memory settlement) public virtual checkPermission {
⋮----
function removeSettlement(CrossChainAddress memory settlement) public virtual checkPermission {
⋮----
function setMaxVotingPower(uint256 maxVotingPower) public virtual checkPermission {
⋮----
function setMinInclusionVotingPower(uint256 minInclusionVotingPower) public virtual checkPermission {
⋮----
function setMaxValidatorsCount(uint208 maxValidatorsCount) public virtual checkPermission {
⋮----
function setRequiredKeyTags(uint8[] memory requiredKeyTags) public virtual checkPermission {
⋮----
function addQuorumThreshold(QuorumThreshold memory quorumThreshold) public virtual checkPermission {
⋮----
function removeQuorumThreshold(QuorumThreshold memory quorumThreshold) public virtual checkPermission {
⋮----
function setRequiredHeaderKeyTag(uint8 requiredHeaderKeyTag) public virtual checkPermission {
⋮----
function setVerificationType(uint32 verificationType) public virtual checkPermission {
⋮----
function _setNumAggregators(uint208 numAggregators) internal virtual {
⋮----
function _setNumCommitters(uint208 numCommitters) internal virtual {
⋮----
function _setCommitterSlotDuration(uint48 slotDuration) internal virtual {
⋮----
function _addVotingPowerProvider(CrossChainAddress memory votingPowerProvider) internal virtual {
⋮----
function _removeVotingPowerProvider(CrossChainAddress memory votingPowerProvider) internal virtual {
⋮----
function _setKeysProvider(CrossChainAddress memory keysProvider) internal virtual {
⋮----
function _addSettlement(CrossChainAddress memory settlement) internal virtual {
⋮----
function _removeSettlement(CrossChainAddress memory settlement) internal virtual {
⋮----
function _setMaxVotingPower(uint256 maxVotingPower) internal virtual {
⋮----
function _setMinInclusionVotingPower(uint256 minInclusionVotingPower) internal virtual {
⋮----
function _setMaxValidatorsCount(uint208 maxValidatorsCount) internal virtual {
⋮----
function _setRequiredKeyTags(uint8[] memory requiredKeyTags) internal virtual {
⋮----
function _addQuorumThreshold(QuorumThreshold memory quorumThreshold) internal virtual {
⋮----
function _removeQuorumThreshold(QuorumThreshold memory quorumThreshold) internal virtual {
⋮----
function _setRequiredHeaderKeyTag(uint8 requiredHeaderKeyTag) internal virtual {
⋮----
function _setVerificationType(uint32 verificationType) internal virtual {
⋮----
function _validateCrossChainAddress(CrossChainAddress memory crossChainAddress) internal pure virtual {
⋮----
function _serializeCrossChainAddress(CrossChainAddress memory crossChainAddress)
⋮----
function _deserializeCrossChainAddress(bytes32 compressedAddress)
⋮----
function _serializeQuorumThreshold(QuorumThreshold memory quorumThreshold) internal pure virtual returns (bytes32) {
⋮----
function _deserializeQuorumThreshold(bytes32 compressedQuorumThreshold)
```

## File: src/modules/voting-power/base/VotingPowerCalcManager.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IVotingPowerCalcManager} from "../../../interfaces/modules/voting-power/base/IVotingPowerCalcManager.sol";
⋮----
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
⋮----
/// @title VotingPowerCalcManager
/// @notice Base contract for voting power calculations.
abstract contract VotingPowerCalcManager is Initializable, IVotingPowerCalcManager {
/// @inheritdoc IVotingPowerCalcManager
function stakeToVotingPowerAt(address vault, uint256 stake, bytes memory extraData, uint48 timestamp)
⋮----
function stakeToVotingPower(address vault, uint256 stake, bytes memory extraData)
```

## File: src/modules/voting-power/common/voting-power-calc/libraries/ChainlinkPriceFeed.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {Scaler} from "../../../../../libraries/utils/Scaler.sol";
⋮----
import {
    AggregatorV3Interface
} from "../../../../../interfaces/modules/voting-power/common/voting-power-calc/libraries/AggregatorV3Interface.sol";
⋮----
import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
⋮----
/**
 * @title ChainlinkPriceFeed
 * @notice Library for fetching prices from Chainlink in a historical manner.
 * @dev It supports arbitrary aggregators' decimals, an arbitrary number of aggregator hops, and a possibility to invert prices.
 *      It supports most of Chainlink's aggregators through the whole history except the oldest ones not supporting `getRoundData()`.
 */
⋮----
/**
     * @notice Reverts when the length is zero.
     */
⋮----
/**
     * @notice Reverts when the lengths are not equal.
     */
⋮----
/**
     * @notice The offset for the phase in the roundId.
     */
⋮----
/**
     * @notice The number of decimals to normalize the price to.
     */
⋮----
/**
     * @notice The data for a round.
     * @param roundId The roundId (a concatenation of the phase and the original id).
     * @param answer The price.
     * @param startedAt The startedAt (deprecated).
     * @param updatedAt The updatedAt (the timestamp when the round was updated).
     * @param answeredInRound The answeredInRound (deprecated).
     */
⋮----
/**
     * @notice Returns the price at a given timestamp using one or two hops.
     * @param aggregators The price aggregators.
     * @param timestamp The timestamp.
     * @param inverts If to invert the fetched prices.
     * @param stalenessDurations The staleness durations (if too much time passed since the last update).
     * @return The price.
     * @dev Returns zero if the data is stale or unavailable.
     *      The price is normalized to the 18 decimals.
     */
function getPriceAt(
⋮----
/**
     * @notice Returns the price at a given timestamp using one or more hops.
     * @param aggregators The price aggregators.
     * @param timestamp The timestamp.
     * @param inverts If to invert the fetched prices.
     * @param stalenessDurations The staleness durations (if too much time passed since the last update).
     * @return The price.
     * @dev Returns zero if the data is stale or unavailable.
     *      The price is normalized to the 18 decimals.
     */
⋮----
/**
     * @notice Returns the price at a given timestamp.
     * @param aggregator The price aggregator.
     * @param timestamp The timestamp.
     * @param invert If to invert the fetched price.
     * @param stalenessDuration The staleness duration (if too much time passed since the last update).
     * @return The price.
     * @dev Returns zero if the data is stale or unavailable.
     *      The price is normalized to the 18 decimals.
     */
function getPriceAt(address aggregator, uint48 timestamp, bool invert, uint48 stalenessDuration)
⋮----
/**
     * @notice Returns the price data at a given timestamp.
     * @param aggregator The price aggregator.
     * @param timestamp The timestamp.
     * @param invert If to invert the fetched price.
     * @param stalenessDuration The staleness duration (if too much time passed since the last update).
     * @return success If the data is available and not stale.
     * @return roundData The round data.
     * @dev The answer is normalized to the 18 decimals.
     */
function getPriceDataAt(address aggregator, uint48 timestamp, bool invert, uint48 stalenessDuration)
⋮----
/**
     * @notice Returns the round data at a given timestamp.
     * @param aggregator The price aggregator.
     * @param timestamp The timestamp.
     * @return success If the data is available.
     * @return roundData The round data.
     */
function getRoundDataAt(address aggregator, uint48 timestamp)
⋮----
// determine the latest phaseId
⋮----
// find a phaseId which contains a needed aggregatorRoundId given the timestamp
⋮----
// find the upper bound for further binary search
⋮----
// find the biggest roundId which which is less than or equal to the timestamp
⋮----
/**
     * @notice Returns the round data at a given roundId.
     * @param aggregator The price aggregator.
     * @param roundId The roundId.
     * @return success If the data is available.
     * @return roundData The round data.
     */
function getRoundData(address aggregator, uint80 roundId) public view returns (bool, RoundData memory roundData) {
⋮----
/**
     * @notice Returns the latest price using one or two hops.
     * @param aggregators The price aggregators.
     * @param inverts If to invert the fetched prices.
     * @param stalenessDurations The staleness durations (if too much time passed since the last update).
     * @return The price.
     * @dev Returns zero if the data is stale or unavailable.
     *      The price is normalized to the 18 decimals.
     */
function getLatestPrice(address[2] memory aggregators, bool[2] memory inverts, uint48[2] memory stalenessDurations)
⋮----
/**
     * @notice Returns the latest price using one or more hops.
     * @param aggregators The price aggregators.
     * @param inverts If to invert the fetched prices.
     * @param stalenessDurations The staleness durations (if too much time passed since the last update).
     * @return The price.
     * @dev Returns zero if the data is stale or unavailable.
     *      The price is normalized to the 18 decimals.
     */
function getLatestPrice(address[] memory aggregators, bool[] memory inverts, uint48[] memory stalenessDurations)
⋮----
/**
     * @notice Returns the latest price.
     * @param aggregator The price aggregator.
     * @param invert If to invert the fetched price.
     * @param stalenessDuration The staleness duration (if too much time passed since the last update).
     * @return The price.
     * @dev Returns zero if the data is stale or unavailable.
     *      The price is normalized to the 18 decimals.
     */
function getLatestPrice(address aggregator, bool invert, uint48 stalenessDuration) public view returns (uint256) {
⋮----
/**
     * @notice Returns the latest price data.
     * @param aggregator The price aggregator.
     * @param invert If to invert the fetched price.
     * @param stalenessDuration The staleness duration (if too much time passed since the last update).
     * @return success If the data is available and not stale.
     * @return roundData The round data.
     * @dev The answer is normalized to the 18 decimals.
     */
function getLatestPriceData(address aggregator, bool invert, uint48 stalenessDuration)
⋮----
/**
     * @notice Returns the latest round data.
     * @param aggregator The price aggregator.
     * @return success If the data is available.
     * @return roundData The round data.
     */
function getLatestRoundData(address aggregator) public view returns (bool, RoundData memory roundData) {
⋮----
/**
     * @notice Returns if the round data is stale.
     * @param timestamp The timestamp.
     * @param roundData The round data.
     * @param stalenessDuration The staleness duration (if too much time passed since the last update).
     * @return If the round data is stale.
     */
function isStale(uint48 timestamp, RoundData memory roundData, uint48 stalenessDuration)
⋮----
function serializeIds(uint16 phase, uint64 originalId) public pure returns (uint80) {
⋮----
function deserializeIds(uint80 roundId) public pure returns (uint16, uint64) {
⋮----
function toDynamicArrays(address[2] memory aggregators, bool[2] memory inverts, uint48[2] memory stalenessDurations)
```

## File: src/modules/voting-power/common/voting-power-calc/EqualStakeVPCalc.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {VotingPowerCalcManager} from "../../base/VotingPowerCalcManager.sol";
⋮----
import {
    IEqualStakeVPCalc
} from "../../../../interfaces/modules/voting-power/common/voting-power-calc/IEqualStakeVPCalc.sol";
import {IVotingPowerCalcManager} from "../../../../interfaces/modules/voting-power/base/IVotingPowerCalcManager.sol";
⋮----
/// @title EqualStakeVPCalc
/// @notice Contract for calculating the voting power, making it equal to the stake.
abstract contract EqualStakeVPCalc is VotingPowerCalcManager, IEqualStakeVPCalc {
function __EqualStakeVPCalc_init() internal virtual onlyInitializing {}
⋮----
/// @inheritdoc IVotingPowerCalcManager
function stakeToVotingPowerAt(
address, /* vault */
⋮----
bytes memory, /* extraData */
uint48 /* timestamp */
⋮----
function stakeToVotingPower(
⋮----
bytes memory /* extraData */
```

## File: src/modules/voting-power/common/voting-power-calc/NormalizedTokenDecimalsVPCalc.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {EqualStakeVPCalc} from "./EqualStakeVPCalc.sol";
⋮----
import {Scaler} from "../../../../libraries/utils/Scaler.sol";
⋮----
import {
    INormalizedTokenDecimalsVPCalc
} from "../../../../interfaces/modules/voting-power/common/voting-power-calc/INormalizedTokenDecimalsVPCalc.sol";
import {IVotingPowerCalcManager} from "../../../../interfaces/modules/voting-power/base/IVotingPowerCalcManager.sol";
⋮----
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
⋮----
import {IVault} from "@symbioticfi/core/src/interfaces/vault/IVault.sol";
⋮----
/// @title NormalizedTokenDecimalsVPCalc
/// @notice Contract for calculating the voting power, normalizing the stakes in different tokens to the same decimals.
abstract contract NormalizedTokenDecimalsVPCalc is EqualStakeVPCalc, INormalizedTokenDecimalsVPCalc {
⋮----
function __NormalizedTokenDecimalsVPCalc_init() internal virtual onlyInitializing {}
⋮----
/// @inheritdoc IVotingPowerCalcManager
function stakeToVotingPowerAt(address vault, uint256 stake, bytes memory extraData, uint48 timestamp)
⋮----
function stakeToVotingPower(address vault, uint256 stake, bytes memory extraData)
⋮----
function _getCollateral(address vault) internal view virtual returns (address) {
⋮----
function _normalizeVaultTokenDecimals(address vault, uint256 votingPower) internal view virtual returns (uint256) {
```

## File: src/modules/voting-power/common/voting-power-calc/PricedTokensChainlinkVPCalc.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {NormalizedTokenDecimalsVPCalc} from "./NormalizedTokenDecimalsVPCalc.sol";
import {PermissionManager} from "../../../base/PermissionManager.sol";
⋮----
import {ChainlinkPriceFeed} from "./libraries/ChainlinkPriceFeed.sol";
import {Checkpoints} from "../../../../libraries/structs/Checkpoints.sol";
⋮----
import {
    IPricedTokensChainlinkVPCalc
} from "../../../../interfaces/modules/voting-power/common/voting-power-calc/IPricedTokensChainlinkVPCalc.sol";
import {IVotingPowerCalcManager} from "../../../../interfaces/modules/voting-power/base/IVotingPowerCalcManager.sol";
⋮----
/// @title PricedTokensChainlinkVPCalc
/// @notice Contract for calculating the voting power, pricing the tokens using Chainlink.
abstract contract PricedTokensChainlinkVPCalc is
⋮----
// keccak256(abi.encode(uint256(keccak256("symbiotic.storage.PricedTokensChainlinkVPCalc")) - 1)) & ~bytes32(uint256(0xff))
⋮----
function _getPricedTokensChainlinkVPCalcStorage()
⋮----
function __PricedTokensChainlinkVPCalc_init() internal virtual onlyInitializing {}
⋮----
/// @inheritdoc IPricedTokensChainlinkVPCalc
function getTokenHopsAt(address token, uint48 timestamp)
⋮----
function getTokenHops(address token)
⋮----
function getTokenPriceAt(address token, uint48 timestamp) public view virtual override returns (uint256) {
⋮----
function getTokenPrice(address token) public view virtual override returns (uint256) {
⋮----
/// @inheritdoc IVotingPowerCalcManager
function stakeToVotingPowerAt(address vault, uint256 stake, bytes memory extraData, uint48 timestamp)
⋮----
function stakeToVotingPower(address vault, uint256 stake, bytes memory extraData)
⋮----
function setTokenHops(
⋮----
function _setTokenHops(
⋮----
function _serializeHop(address aggregator, bool invert, uint48 stalenessDuration)
⋮----
function _serializeHops(address[2] memory aggregators, bool[2] memory inverts, uint48[2] memory stalenessDurations)
⋮----
function _deserializeHop(uint256 hop)
⋮----
function _deserializeHops(uint256[2] memory hops)
```

## File: src/modules/voting-power/common/voting-power-calc/WeightedTokensVPCalc.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {NormalizedTokenDecimalsVPCalc} from "./NormalizedTokenDecimalsVPCalc.sol";
import {PermissionManager} from "../../../base/PermissionManager.sol";
⋮----
import {Checkpoints} from "../../../../libraries/structs/Checkpoints.sol";
⋮----
import {IVotingPowerCalcManager} from "../../../../interfaces/modules/voting-power/base/IVotingPowerCalcManager.sol";
import {
    IWeightedTokensVPCalc
} from "../../../../interfaces/modules/voting-power/common/voting-power-calc/IWeightedTokensVPCalc.sol";
⋮----
/// @title WeightedTokensVPCalc
/// @notice Contract for calculating the voting power, weighting the tokens.
abstract contract WeightedTokensVPCalc is NormalizedTokenDecimalsVPCalc, PermissionManager, IWeightedTokensVPCalc {
⋮----
// keccak256(abi.encode(uint256(keccak256("symbiotic.storage.WeightedTokensVPCalc")) - 1)) & ~bytes32(uint256(0xff))
⋮----
function _getWeightedTokensVPCalcStorage() internal pure returns (WeightedTokensVPCalcStorage storage $) {
⋮----
function __WeightedTokensVPCalc_init() internal virtual onlyInitializing {}
⋮----
/// @inheritdoc IWeightedTokensVPCalc
function getTokenWeightAt(address token, uint48 timestamp) public view virtual returns (uint208) {
⋮----
function getTokenWeight(address token) public view virtual returns (uint208) {
⋮----
/// @inheritdoc IVotingPowerCalcManager
function stakeToVotingPowerAt(address vault, uint256 stake, bytes memory extraData, uint48 timestamp)
⋮----
function stakeToVotingPower(address vault, uint256 stake, bytes memory extraData)
⋮----
function setTokenWeight(address token, uint208 weight) public virtual checkPermission {
⋮----
function _setTokenWeight(address token, uint208 weight) internal virtual {
```

## File: src/modules/voting-power/common/voting-power-calc/WeightedVaultsVPCalc.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {EqualStakeVPCalc} from "./EqualStakeVPCalc.sol";
import {PermissionManager} from "../../../base/PermissionManager.sol";
⋮----
import {Checkpoints} from "../../../../libraries/structs/Checkpoints.sol";
⋮----
import {IVotingPowerCalcManager} from "../../../../interfaces/modules/voting-power/base/IVotingPowerCalcManager.sol";
import {
    IWeightedVaultsVPCalc
} from "../../../../interfaces/modules/voting-power/common/voting-power-calc/IWeightedVaultsVPCalc.sol";
⋮----
/// @title WeightedVaultsVPCalc
/// @notice Contract for calculating the voting power, weighting the vaults.
abstract contract WeightedVaultsVPCalc is EqualStakeVPCalc, PermissionManager, IWeightedVaultsVPCalc {
⋮----
// keccak256(abi.encode(uint256(keccak256("symbiotic.storage.WeightedVaultsVPCalc")) - 1)) & ~bytes32(uint256(0xff))
⋮----
function _getWeightedVaultsVPCalcStorage() internal pure returns (WeightedVaultsVPCalcStorage storage $) {
⋮----
function __WeightedVaultsVPCalc_init() internal virtual onlyInitializing {}
⋮----
/// @inheritdoc IWeightedVaultsVPCalc
function getVaultWeightAt(address vault, uint48 timestamp) public view virtual returns (uint208) {
⋮----
function getVaultWeight(address vault) public view virtual returns (uint208) {
⋮----
/// @inheritdoc IVotingPowerCalcManager
function stakeToVotingPowerAt(address vault, uint256 stake, bytes memory extraData, uint48 timestamp)
⋮----
function stakeToVotingPower(address vault, uint256 stake, bytes memory extraData)
⋮----
function setVaultWeight(address vault, uint208 weight) public virtual checkPermission {
⋮----
function _setVaultWeight(address vault, uint208 weight) internal virtual {
```

## File: src/modules/voting-power/extensions/logic/BaseRewardsLogic.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {IBaseRewards} from "../../../../interfaces/modules/voting-power/extensions/IBaseRewards.sol";
import {INetworkManager} from "../../../../interfaces/modules/base/INetworkManager.sol";
⋮----
import {SafeERC20, IERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
⋮----
import {
    IDefaultOperatorRewards
} from "@symbioticfi/rewards/src/interfaces/defaultOperatorRewards/IDefaultOperatorRewards.sol";
import {IStakerRewards} from "@symbioticfi/rewards/src/interfaces/stakerRewards/IStakerRewards.sol";
⋮----
/**
 * @title BaseRewardsLogic
 * @notice Library with bindings for distributing rewards to stakers and operators.
 */
⋮----
/**
     * @notice Distributes staker rewards.
     * @param stakerRewards The address of the staker rewards contract.
     * @param token The address of the token to distribute.
     * @param amount The amount of the token to distribute.
     * @param data The data to pass to the staker rewards contract.
     * @dev The funds should be transferred to this contract separately before the call.
     */
function distributeStakerRewards(address stakerRewards, address token, uint256 amount, bytes memory data) public {
⋮----
/**
     * @notice Distributes operator rewards.
     * @param operatorRewards The address of the operator rewards contract.
     * @param token The address of the token to distribute.
     * @param amount The amount of the token to distribute.
     * @param root The root of the distribution Merkle tree.
     * @dev The funds should be transferred to this contract separately before the call.
     */
function distributeOperatorRewards(address operatorRewards, address token, uint256 amount, bytes32 root) public {
```

## File: src/modules/voting-power/extensions/logic/BaseSlashingLogic.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {VotingPowerProviderLogic} from "../../logic/VotingPowerProviderLogic.sol";
⋮----
import {IBaseSlashing} from "../../../../interfaces/modules/voting-power/extensions/IBaseSlashing.sol";
import {INetworkManager} from "../../../../interfaces/modules/base/INetworkManager.sol";
import {IVotingPowerProvider} from "../../../../interfaces/modules/voting-power/IVotingPowerProvider.sol";
⋮----
import {IEntity} from "@symbioticfi/core/src/interfaces/common/IEntity.sol";
import {ISlasher as IInstantSlasher} from "@symbioticfi/core/src/interfaces/slasher/ISlasher.sol";
import {IVault} from "@symbioticfi/core/src/interfaces/vault/IVault.sol";
import {IVetoSlasher} from "@symbioticfi/core/src/interfaces/slasher/IVetoSlasher.sol";
⋮----
/**
 * @title BaseSlashingLogic
 * @notice Library with bindings for slashing vaults.
 */
⋮----
/**
     * @notice Slashes a vault.
     * @param timestamp The capture timestamp.
     * @param vault The address of the vault to slash.
     * @param operator The address of the operator to slash.
     * @param amount The amount of the tokens to slash.
     * @param hints The hints to optimize gas usage.
     * @dev It checks if the slashing was required at the given capture timestamp,
     *      and if the slashing request is not stale regarding set `minEpochDuration`.
     */
function slashVault(uint48 timestamp, address vault, address operator, uint256 amount, bytes memory hints)
⋮----
/**
     * @notice Slashes a vault.
     * @param timestamp The capture timestamp.
     * @param slasher The address of the slasher.
     * @param operator The address of the operator to slash.
     * @param amount The amount of the tokens to slash.
     * @param hints The hints to optimize gas usage.
     * @dev It checks if the slashing was required at the given capture timestamp,
     *      and if the slashing request is not stale regarding set `minEpochDuration`.
     */
function slash(uint48 timestamp, address slasher, address operator, uint256 amount, bytes memory hints)
⋮----
/**
     * @notice Slashes a vault.
     * @param timestamp The capture timestamp.
     * @param slasher The address of the slasher.
     * @param operator The address of the operator to slash.
     * @param amount The amount of the tokens to slash.
     * @param hints The hints to optimize gas usage.
     */
function slashUnsafe(uint48 timestamp, address slasher, address operator, uint256 amount, bytes memory hints)
⋮----
/**
     * @notice Executes a slash request.
     * @param vault The address of the vault.
     * @param slashIndex The index of the slash request.
     * @param hints The hints to optimize gas usage.
     * @dev It checks if the slashing request is not stale regarding set `minEpochDuration`.
     */
function executeSlashVault(address vault, uint256 slashIndex, bytes memory hints)
⋮----
/**
     * @notice Executes a slash request.
     * @param slasher The address of the slasher.
     * @param slashIndex The index of the slash request.
     * @param hints The hints to optimize gas usage.
     * @dev It checks if the slashing request is not stale regarding set `minEpochDuration`.
     */
function executeSlash(address slasher, uint256 slashIndex, bytes memory hints)
⋮----
/**
     * @notice Executes a slash request.
     * @param slasher The address of the slasher.
     * @param slashIndex The index of the slash request.
     * @param hints The hints to optimize gas usage.
     */
function executeSlashUnsafe(address slasher, uint256 slashIndex, bytes memory hints)
```

## File: src/modules/voting-power/extensions/logic/OpNetVaultAutoDeployLogic.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {INetworkManager} from "../../../../interfaces/modules/base/INetworkManager.sol";
import {IOpNetVaultAutoDeploy} from "../../../../interfaces/modules/voting-power/extensions/IOpNetVaultAutoDeploy.sol";
import {IVotingPowerProvider} from "../../../../interfaces/modules/voting-power/IVotingPowerProvider.sol";
⋮----
import {IBaseDelegator} from "@symbioticfi/core/src/interfaces/delegator/IBaseDelegator.sol";
import {IBaseSlasher} from "@symbioticfi/core/src/interfaces/slasher/IBaseSlasher.sol";
import {
    IOperatorNetworkSpecificDelegator
} from "@symbioticfi/core/src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol";
import {ISlasher} from "@symbioticfi/core/src/interfaces/slasher/ISlasher.sol";
import {IVaultConfigurator} from "@symbioticfi/core/src/interfaces/IVaultConfigurator.sol";
import {IVaultTokenized} from "@symbioticfi/core/src/interfaces/vault/IVaultTokenized.sol";
import {IVault} from "@symbioticfi/core/src/interfaces/vault/IVault.sol";
import {IVetoSlasher} from "@symbioticfi/core/src/interfaces/slasher/IVetoSlasher.sol";
⋮----
/**
 * @title OpNetVaultAutoDeployLogic
 * @notice Library for auto-deploying vaults.
 */
⋮----
// keccak256(abi.encode(uint256(keccak256("symbiotic.storage.OpNetVaultAutoDeploy")) - 1)) & ~bytes32(uint256(0xff))
⋮----
function _getOpNetVaultAutoDeployStorage()
⋮----
function initialize(IOpNetVaultAutoDeploy.OpNetVaultAutoDeployInitParams memory initParams) public {
⋮----
function isAutoDeployEnabled() public view returns (bool) {
⋮----
function getAutoDeployedVault(address operator) public view returns (address) {
⋮----
function getAutoDeployConfig() public view returns (IOpNetVaultAutoDeploy.AutoDeployConfig memory) {
⋮----
function isSetMaxNetworkLimitHookEnabled() public view returns (bool) {
⋮----
function setAutoDeployStatus(bool status) public {
⋮----
function setAutoDeployConfig(IOpNetVaultAutoDeploy.AutoDeployConfig memory config) public {
⋮----
function setSetMaxNetworkLimitHookStatus(bool status) public {
⋮----
function createVault(address operator) public returns (address vault, address delegator, address slasher) {
⋮----
function setAutoDeployedVault(address operator, address vault) public {
⋮----
function getVaultParams(IOpNetVaultAutoDeploy.AutoDeployConfig memory config)
⋮----
function getDelegatorParams(
IOpNetVaultAutoDeploy.AutoDeployConfig memory, /* config */
⋮----
function getSlasherParams(IOpNetVaultAutoDeploy.AutoDeployConfig memory config)
⋮----
function _validateConfig(IOpNetVaultAutoDeploy.AutoDeployConfig memory config) public view {
⋮----
// ------------------------------------ HELPER FUNCTIONS ------------------------------------
⋮----
/**
     * @notice Gets the encoded base vault params.
     * @param params The vault params.
     * @return version The version of the vault.
     * @return params The encoded base vault params.
     */
function getVaultParams(IVault.InitParams memory params) public view returns (uint64, bytes memory) {
⋮----
/**
     * @notice Gets the encoded tokenized vault params.
     * @param baseParams The base vault params.
     * @param name The name of the tokenized vault.
     * @param symbol The symbol of the tokenized vault.
     * @return version The version of the vault.
     * @return params The encoded tokenized vault params.
     */
function getVaultTokenizedParams(IVault.InitParams memory baseParams, string memory name, string memory symbol)
⋮----
/**
     * @notice Gets the encoded operator-network-specific delegator params.
     * @param operator The operator.
     * @param defaultAdminRoleHolder The default admin role holder.
     * @param hook The hook.
     * @param hookSetRoleHolder The hook set role holder.
     * @return version The version of the delegator.
     * @return params The encoded operator-network-specific delegator params.
     */
function getOperatorNetworkSpecificDelegatorParams(
⋮----
/**
     * @notice Gets the encoded instant slasher params.
     * @param isBurnerHook If the burner needs a hook call.
     * @return version The version of the slasher.
     * @return params The encoded instant slasher params.
     */
function getSlasherParams(bool isBurnerHook) public view returns (uint64, bytes memory) {
⋮----
/**
     * @notice Gets the encoded veto slasher params.
     * @param isBurnerHook If the burner needs a hook call.
     * @param vetoDuration The veto duration.
     * @param resolverSetEpochsDelay The delay in epochs for a resolver to be set.
     * @return version The version of the slasher.
     * @return params The encoded veto slasher params.
     */
function getVetoSlasherParams(bool isBurnerHook, uint48 vetoDuration, uint256 resolverSetEpochsDelay)
⋮----
/**
     * @notice Creates a vault.
     * @param version The version of the vault.
     * @param owner The owner of the vault.
     * @param vaultParams The vault params.
     * @param delegatorIndex The index of the delegator.
     * @param delegatorParams The delegator params.
     * @param withSlasher If the vault should have a slasher.
     * @param slasherIndex The index of the slasher.
     * @param slasherParams The slasher params.
     * @return vault The address of the vault.
     * @return delegator The address of the delegator.
     * @return slasher The address of the slasher.
     */
function createVault(
```

## File: src/modules/voting-power/extensions/BaseRewards.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {VotingPowerProvider} from "../VotingPowerProvider.sol";
⋮----
import {BaseRewardsLogic} from "./logic/BaseRewardsLogic.sol";
⋮----
import {IBaseRewards} from "../../../interfaces/modules/voting-power/extensions/IBaseRewards.sol";
⋮----
/// @title BaseRewards
/// @notice Base contract for distributing rewards to stakers and operators.
abstract contract BaseRewards is VotingPowerProvider, IBaseRewards {
modifier onlyRewarder() {
⋮----
function _checkRewarder() internal view virtual {
⋮----
// keccak256(abi.encode(uint256(keccak256("symbiotic.storage.BaseRewards")) - 1)) & ~bytes32(uint256(0xff))
⋮----
function _getBaseRewardsStorage() internal pure returns (IBaseRewards.BaseRewardsStorage storage $) {
⋮----
function __BaseRewards_init(BaseRewardsInitParams memory initParams) internal virtual onlyInitializing {
⋮----
/// @inheritdoc IBaseRewards
function getRewarder() public view virtual returns (address) {
⋮----
function distributeStakerRewards(address stakerRewards, address token, uint256 amount, bytes memory data)
⋮----
function distributeOperatorRewards(address operatorRewards, address token, uint256 amount, bytes32 root)
⋮----
function setRewarder(address rewarder) public virtual checkPermission {
⋮----
function _setRewarder(address rewarder) internal virtual {
```

## File: src/modules/voting-power/extensions/BaseSlashing.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {VotingPowerProvider} from "../VotingPowerProvider.sol";
⋮----
import {BaseSlashingLogic} from "./logic/BaseSlashingLogic.sol";
⋮----
import {IBaseSlashing} from "../../../interfaces/modules/voting-power/extensions/IBaseSlashing.sol";
⋮----
/// @title BaseSlashing
/// @notice Base contract for slashing vaults.
abstract contract BaseSlashing is VotingPowerProvider, IBaseSlashing {
modifier onlySlasher() {
⋮----
function _checkSlasher() internal view virtual {
⋮----
// keccak256(abi.encode(uint256(keccak256("symbiotic.storage.BaseSlashing")) - 1)) & ~bytes32(uint256(0xff))
⋮----
function _getBaseSlashingStorage() internal pure returns (IBaseSlashing.BaseSlashingStorage storage $) {
⋮----
function __BaseSlashing_init(BaseSlashingInitParams memory initParams) internal virtual onlyInitializing {
⋮----
/// @inheritdoc IBaseSlashing
function getSlasher() public view virtual returns (address) {
⋮----
function slashVault(uint48 timestamp, address vault, address operator, uint256 amount, bytes memory hints)
⋮----
function executeSlashVault(address vault, uint256 slashIndex, bytes memory hints)
⋮----
function setSlasher(address slasher) public virtual checkPermission {
⋮----
function _setSlasher(address slasher) internal virtual {
```

## File: src/modules/voting-power/extensions/MultiToken.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {VotingPowerProvider} from "../VotingPowerProvider.sol";
⋮----
import {IMultiToken} from "../../../interfaces/modules/voting-power/extensions/IMultiToken.sol";
⋮----
/// @title MultiToken
/// @notice Contract for registering and unregistering multiple tokens.
abstract contract MultiToken is VotingPowerProvider, IMultiToken {
function __MultiToken_init() internal virtual onlyInitializing {}
⋮----
/// @inheritdoc IMultiToken
function registerToken(address token) public virtual checkPermission {
⋮----
function unregisterToken(address token) public virtual checkPermission {
```

## File: src/modules/voting-power/extensions/OperatorsBlacklist.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {VotingPowerProvider} from "../VotingPowerProvider.sol";
⋮----
import {IOperatorsBlacklist} from "../../../interfaces/modules/voting-power/extensions/IOperatorsBlacklist.sol";
⋮----
/// @title OperatorsBlacklist
/// @notice Contract for blacklisting operators.
abstract contract OperatorsBlacklist is VotingPowerProvider, IOperatorsBlacklist {
// keccak256(abi.encode(uint256(keccak256("symbiotic.storage.OperatorsBlacklist")) - 1)) & ~bytes32(uint256(0xff))
⋮----
function _getOperatorsBlacklistStorage() internal pure returns (OperatorsBlacklistStorage storage $) {
⋮----
function __OperatorsBlacklist_init() internal virtual onlyInitializing {}
⋮----
/// @inheritdoc IOperatorsBlacklist
function isOperatorBlacklisted(address operator) public view virtual returns (bool) {
⋮----
function blacklistOperator(address operator) public virtual checkPermission {
⋮----
function unblacklistOperator(address operator) public virtual checkPermission {
⋮----
function _registerOperatorImpl(address operator) internal virtual override {
```

## File: src/modules/voting-power/extensions/OperatorsJail.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {VotingPowerProvider} from "../VotingPowerProvider.sol";
⋮----
import {IOperatorsJail} from "../../../interfaces/modules/voting-power/extensions/IOperatorsJail.sol";
⋮----
/// @title OperatorsJail
/// @notice Contract for jailing (unregistering and not allowing to register) operators for a given duration.
abstract contract OperatorsJail is VotingPowerProvider, IOperatorsJail {
// keccak256(abi.encode(uint256(keccak256("symbiotic.storage.OperatorsJail")) - 1)) & ~bytes32(uint256(0xff))
⋮----
function _getOperatorsJailStorage() internal pure returns (OperatorsJailStorage storage $) {
⋮----
function __OperatorsJail_init() internal virtual onlyInitializing {}
⋮----
/// @inheritdoc IOperatorsJail
function isOperatorJailed(address operator) public view virtual returns (bool) {
⋮----
function getOperatorJailedUntil(address operator) public view virtual returns (uint48) {
⋮----
function jailOperator(address operator, uint48 duration) public virtual checkPermission {
⋮----
function unjailOperator(address operator) public virtual checkPermission {
⋮----
function _registerOperatorImpl(address operator) internal virtual override {
```

## File: src/modules/voting-power/extensions/OperatorsWhitelist.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {VotingPowerProvider} from "../VotingPowerProvider.sol";
⋮----
import {IOperatorsWhitelist} from "../../../interfaces/modules/voting-power/extensions/IOperatorsWhitelist.sol";
⋮----
/// @title OperatorsWhitelist
/// @notice Contract for whitelisting operators.
abstract contract OperatorsWhitelist is VotingPowerProvider, IOperatorsWhitelist {
// keccak256(abi.encode(uint256(keccak256("symbiotic.storage.OperatorsWhitelist")) - 1)) & ~bytes32(uint256(0xff))
⋮----
function _getOperatorsWhitelistStorage() internal pure returns (OperatorsWhitelistStorage storage $) {
⋮----
function __OperatorsWhitelist_init(OperatorsWhitelistInitParams memory initParams)
⋮----
/// @inheritdoc IOperatorsWhitelist
function isWhitelistEnabled() public view virtual returns (bool) {
⋮----
function isOperatorWhitelisted(address operator) public view virtual returns (bool) {
⋮----
function setWhitelistStatus(bool status) public virtual checkPermission {
⋮----
function whitelistOperator(address operator) public virtual checkPermission {
⋮----
function unwhitelistOperator(address operator) public virtual checkPermission {
⋮----
function _registerOperatorImpl(address operator) internal virtual override {
⋮----
function _setWhitelistStatus(bool status) internal virtual {
```

## File: src/modules/voting-power/extensions/OperatorVaults.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {VotingPowerProvider} from "../VotingPowerProvider.sol";
⋮----
import {IOperatorVaults} from "../../../interfaces/modules/voting-power/extensions/IOperatorVaults.sol";
⋮----
/// @title OperatorVaults
/// @notice Contract for registering and unregistering operator vaults.
abstract contract OperatorVaults is VotingPowerProvider, IOperatorVaults {
function __OperatorVaults_init() internal virtual onlyInitializing {}
⋮----
/// @inheritdoc IOperatorVaults
function registerOperatorVault(address operator, address vault) public virtual checkPermission {
⋮----
function unregisterOperatorVault(address operator, address vault) public virtual checkPermission {
⋮----
function unregisterOperatorVault(address vault) public virtual {
```

## File: src/modules/voting-power/extensions/OpNetVaultAutoDeploy.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {VotingPowerProvider} from "../VotingPowerProvider.sol";
⋮----
import {OpNetVaultAutoDeployLogic} from "./logic/OpNetVaultAutoDeployLogic.sol";
⋮----
import {IOpNetVaultAutoDeploy} from "../../../interfaces/modules/voting-power/extensions/IOpNetVaultAutoDeploy.sol";
⋮----
import {ISetMaxNetworkLimitHook} from "@symbioticfi/network/src/interfaces/ISetMaxNetworkLimitHook.sol";
⋮----
/// @title OpNetVaultAutoDeploy
/// @notice Contract for auto-deploying vaults for operators on their registration.
abstract contract OpNetVaultAutoDeploy is VotingPowerProvider, IOpNetVaultAutoDeploy {
/// @inheritdoc IOpNetVaultAutoDeploy
⋮----
/// @dev Must be called after __VotingPowerProvider_init().
function __OpNetVaultAutoDeploy_init(OpNetVaultAutoDeployInitParams memory initParams)
⋮----
function isAutoDeployEnabled() public view virtual returns (bool) {
⋮----
function getAutoDeployedVault(address operator) public view virtual returns (address) {
⋮----
function getAutoDeployConfig() public view virtual returns (AutoDeployConfig memory) {
⋮----
function isSetMaxNetworkLimitHookEnabled() public view virtual returns (bool) {
⋮----
function setAutoDeployStatus(bool status) public virtual checkPermission {
⋮----
function setAutoDeployConfig(AutoDeployConfig memory config) public virtual checkPermission {
⋮----
function setSetMaxNetworkLimitHookStatus(bool status) public virtual checkPermission {
⋮----
function _registerOperatorImpl(address operator) internal virtual override {
⋮----
function _unregisterOperatorVaultImpl(address operator, address vault) internal virtual override {
```

## File: src/modules/voting-power/extensions/SharedVaults.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {VotingPowerProvider} from "../VotingPowerProvider.sol";
⋮----
import {ISharedVaults} from "../../../interfaces/modules/voting-power/extensions/ISharedVaults.sol";
⋮----
/// @title SharedVaults
/// @notice Contract for registering and unregistering shared vaults.
abstract contract SharedVaults is VotingPowerProvider, ISharedVaults {
function __SharedVaults_init() internal virtual onlyInitializing {}
⋮----
/// @inheritdoc ISharedVaults
function registerSharedVault(address sharedVault) public virtual checkPermission {
⋮----
function unregisterSharedVault(address sharedVault) public virtual checkPermission {
```

## File: src/modules/voting-power/logic/VotingPowerProviderLogic.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {Checkpoints} from "../../../libraries/structs/Checkpoints.sol";
import {InputNormalizer} from "../../../libraries/utils/InputNormalizer.sol";
import {PersistentSet} from "../../../libraries/structs/PersistentSet.sol";
⋮----
import {INetworkManager} from "../../../interfaces/modules/base/INetworkManager.sol";
import {IVotingPowerCalcManager} from "../../../interfaces/modules/voting-power/base/IVotingPowerCalcManager.sol";
import {IVotingPowerProvider} from "../../../interfaces/modules/voting-power/IVotingPowerProvider.sol";
⋮----
import {IBaseDelegator} from "@symbioticfi/core/src/interfaces/delegator/IBaseDelegator.sol";
import {IEntity} from "@symbioticfi/core/src/interfaces/common/IEntity.sol";
import {
    IOperatorNetworkSpecificDelegator
} from "@symbioticfi/core/src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol";
import {IOperatorSpecificDelegator} from "@symbioticfi/core/src/interfaces/delegator/IOperatorSpecificDelegator.sol";
import {IRegistry} from "@symbioticfi/core/src/interfaces/common/IRegistry.sol";
import {IVault} from "@symbioticfi/core/src/interfaces/vault/IVault.sol";
import {IVetoSlasher} from "@symbioticfi/core/src/interfaces/slasher/IVetoSlasher.sol";
⋮----
/**
 * @title VotingPowerProviderLogic
 * @notice Library-logic of the voting power provider contract.
 */
⋮----
// keccak256(abi.encode(uint256(keccak256("symbiotic.storage.VotingPowerProvider")) - 1)) & ~bytes32(uint256(0xff))
⋮----
function _getVotingPowerProviderStorage()
⋮----
function initialize(IVotingPowerProvider.VotingPowerProviderInitParams memory initParams) public {
⋮----
function getSlashingDataAt(uint48 timestamp, bytes memory hint) public view returns (bool, uint48) {
⋮----
function getSlashingData() public view returns (bool, uint48) {
⋮----
function isTokenRegisteredAt(address token, uint48 timestamp) public view returns (bool) {
⋮----
function isTokenRegistered(address token) public view returns (bool) {
⋮----
function getTokensAt(uint48 timestamp) public view returns (address[] memory) {
⋮----
function getTokens() public view returns (address[] memory) {
⋮----
function getTokensLength() public view returns (uint256) {
⋮----
function isOperatorRegisteredAt(address operator, uint48 timestamp) public view returns (bool) {
⋮----
function isOperatorRegistered(address operator) public view returns (bool) {
⋮----
function getOperatorsAt(uint48 timestamp) public view returns (address[] memory) {
⋮----
function getOperators() public view returns (address[] memory) {
⋮----
function getOperatorsLength() public view returns (uint256) {
⋮----
function isSharedVaultRegisteredAt(address vault, uint48 timestamp) public view returns (bool) {
⋮----
function isSharedVaultRegistered(address vault) public view returns (bool) {
⋮----
function getSharedVaultsAt(uint48 timestamp) public view returns (address[] memory) {
⋮----
function getSharedVaults() public view returns (address[] memory) {
⋮----
function getSharedVaultsLength() public view returns (uint256) {
⋮----
function isOperatorVaultRegisteredAt(address vault, uint48 timestamp) public view returns (bool) {
⋮----
function isOperatorVaultRegistered(address vault) public view returns (bool) {
⋮----
function isOperatorVaultRegisteredAt(address operator, address vault, uint48 timestamp) public view returns (bool) {
⋮----
function isOperatorVaultRegistered(address operator, address vault) public view returns (bool) {
⋮----
function getOperatorVaultsAt(address operator, uint48 timestamp) public view returns (address[] memory) {
⋮----
function getOperatorVaults(address operator) public view returns (address[] memory) {
⋮----
function getOperatorVaultsLength(address operator) public view returns (uint256) {
⋮----
function getOperatorStakeAt(address operator, address vault, uint48 timestamp) public view returns (uint256) {
⋮----
function getOperatorStake(address operator, address vault) public view returns (uint256) {
⋮----
function getOperatorStakesAt(address operator, uint48 timestamp)
⋮----
function getOperatorStakes(address operator)
⋮----
function getOperatorVotingPowerAt(address operator, address vault, bytes memory extraData, uint48 timestamp)
⋮----
function getOperatorVotingPower(address operator, address vault, bytes memory extraData)
⋮----
function getOperatorVotingPowersAt(address operator, bytes memory extraData, uint48 timestamp)
⋮----
function getOperatorVotingPowers(address operator, bytes memory extraData)
⋮----
function getVotingPowersAt(bytes[] memory extraData, uint48 timestamp)
⋮----
function getVotingPowers(bytes[] memory extraData)
⋮----
function setSlashingData(bool requireSlasher, uint48 minVaultEpochDuration) public {
⋮----
function registerToken(address token) public {
⋮----
function unregisterToken(address token) public {
⋮----
function registerOperator(address operator) public {
⋮----
function unregisterOperator(address operator) public {
⋮----
function registerSharedVault(address vault) public {
⋮----
function registerOperatorVault(address operator, address vault) public {
⋮----
function unregisterSharedVault(address vault) public {
⋮----
function unregisterOperatorVault(address operator, address vault) public {
⋮----
function serializeSlashingData(bool requireSlasher, uint48 minVaultEpochDuration) public pure returns (uint208) {
⋮----
function deserializeSlashingData(uint208 slashingData) public pure returns (bool, uint48) {
⋮----
function _validateOperator(address operator) public view returns (bool) {
⋮----
function _validateVault(address vault) public view returns (bool) {
⋮----
function _validateSharedVault(address vault) public view returns (bool) {
⋮----
function _validateOperatorVault(address operator, address vault) public view returns (bool) {
⋮----
function _validateVaultSlashing(address vault) public view returns (bool) {
```

## File: src/modules/voting-power/VotingPowerProvider.sol

```solidity
// SPDX-License-Identifier: MIT
⋮----
import {NetworkManager} from "../base/NetworkManager.sol";
import {OzEIP712} from "../base/OzEIP712.sol";
import {PermissionManager} from "../base/PermissionManager.sol";
import {VotingPowerCalcManager} from "./base/VotingPowerCalcManager.sol";
⋮----
import {VotingPowerProviderLogic} from "./logic/VotingPowerProviderLogic.sol";
⋮----
import {IVotingPowerProvider} from "../../interfaces/modules/voting-power/IVotingPowerProvider.sol";
⋮----
import {MulticallUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol";
import {NoncesUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/NoncesUpgradeable.sol";
import {SignatureChecker} from "@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol";
⋮----
/// @title VotingPowerProvider
/// @notice Contract for managing tokens, operators, vaults, and their voting powers.
abstract contract VotingPowerProvider is
⋮----
/// @inheritdoc IVotingPowerProvider
⋮----
function __VotingPowerProvider_init(VotingPowerProviderInitParams memory votingPowerProviderInitParams)
⋮----
function getSlashingDataAt(uint48 timestamp, bytes memory hint) public view virtual returns (bool, uint48) {
⋮----
function getSlashingData() public view virtual returns (bool, uint48) {
⋮----
function isTokenRegisteredAt(address token, uint48 timestamp) public view virtual returns (bool) {
⋮----
function isTokenRegistered(address token) public view virtual returns (bool) {
⋮----
function getTokensAt(uint48 timestamp) public view virtual returns (address[] memory) {
⋮----
function getTokens() public view virtual returns (address[] memory) {
⋮----
function isOperatorRegisteredAt(address operator, uint48 timestamp) public view virtual returns (bool) {
⋮----
function isOperatorRegistered(address operator) public view virtual returns (bool) {
⋮----
function getOperatorsAt(uint48 timestamp) public view virtual returns (address[] memory) {
⋮----
function getOperators() public view virtual returns (address[] memory) {
⋮----
function isSharedVaultRegisteredAt(address vault, uint48 timestamp) public view virtual returns (bool) {
⋮----
function isSharedVaultRegistered(address vault) public view virtual returns (bool) {
⋮----
function getSharedVaultsAt(uint48 timestamp) public view virtual returns (address[] memory) {
⋮----
function getSharedVaults() public view virtual returns (address[] memory) {
⋮----
function isOperatorVaultRegisteredAt(address vault, uint48 timestamp) public view virtual returns (bool) {
⋮----
function isOperatorVaultRegistered(address vault) public view virtual returns (bool) {
⋮----
function isOperatorVaultRegisteredAt(address operator, address vault, uint48 timestamp)
⋮----
function isOperatorVaultRegistered(address operator, address vault) public view virtual returns (bool) {
⋮----
function getOperatorVaultsAt(address operator, uint48 timestamp) public view virtual returns (address[] memory) {
⋮----
function getOperatorVaults(address operator) public view virtual returns (address[] memory) {
⋮----
function getOperatorStakesAt(address operator, uint48 timestamp) public view virtual returns (VaultValue[] memory) {
⋮----
function getOperatorStakes(address operator) public view virtual returns (VaultValue[] memory) {
⋮----
function getOperatorVotingPowersAt(address operator, bytes memory extraData, uint48 timestamp)
⋮----
function getOperatorVotingPowers(address operator, bytes memory extraData)
⋮----
function getVotingPowersAt(bytes[] memory extraData, uint48 timestamp)
⋮----
function getVotingPowers(bytes[] memory extraData) public view virtual returns (OperatorVotingPower[] memory) {
⋮----
/// @dev Returns the length of the tokens.
function _getTokensLength() internal view virtual returns (uint256) {
⋮----
/// @dev Returns the length of the operators.
function _getOperatorsLength() internal view virtual returns (uint256) {
⋮----
/// @dev Returns the length of the shared vaults.
function _getSharedVaultsLength() internal view virtual returns (uint256) {
⋮----
/// @dev Returns the length of the operator vaults.
function _getOperatorVaultsLength(address operator) internal view virtual returns (uint256) {
⋮----
/// @dev Returns the stake of the operator at a specific timestamp.
function _getOperatorStakeAt(address operator, address vault, uint48 timestamp)
⋮----
/// @dev Returns the stake of the operator.
function _getOperatorStake(address operator, address vault) internal view virtual returns (uint256) {
⋮----
/// @dev Returns the voting power of the operator at a specific timestamp.
function _getOperatorVotingPowerAt(address operator, address vault, bytes memory extraData, uint48 timestamp)
⋮----
/// @dev Returns the voting power of the operator.
function _getOperatorVotingPower(address operator, address vault, bytes memory extraData)
⋮----
function registerOperator() public virtual {
⋮----
function registerOperatorWithSignature(address operator, bytes memory signature) public virtual {
⋮----
function unregisterOperator() public virtual {
⋮----
function unregisterOperatorWithSignature(address operator, bytes memory signature) public virtual {
⋮----
function invalidateOldSignatures() public virtual {
⋮----
function _setSlashingData(bool requireSlasher, uint48 minVaultEpochDuration) internal virtual {
⋮----
function _registerToken(address token) internal virtual {
⋮----
function _unregisterToken(address token) internal virtual {
⋮----
function _registerOperator(address operator) internal virtual {
⋮----
function _unregisterOperator(address operator) internal virtual {
⋮----
function _registerSharedVault(address vault) internal virtual {
⋮----
function _registerOperatorVault(address operator, address vault) internal virtual {
⋮----
function _unregisterSharedVault(address vault) internal virtual {
⋮----
function _unregisterOperatorVault(address operator, address vault) internal virtual {
⋮----
function _registerOperatorImpl(address operator) internal virtual {
⋮----
function _unregisterOperatorImpl(address operator) internal virtual {
⋮----
function _registerOperatorVaultImpl(address operator, address vault) internal virtual {
⋮----
function _unregisterOperatorVaultImpl(address operator, address vault) internal virtual {
⋮----
function _verifyEIP712(address operator, bytes32 structHash, bytes memory signature) internal view {
```

## File: .env.example

```
ETH_RPC_URL=
```

## File: .gitmodules

```
[submodule "lib/forge-std"]
	path = lib/forge-std
	url = https://github.com/foundry-rs/forge-std
[submodule "lib/rewards"]
	path = lib/rewards
	url = https://github.com/symbioticfi/rewards
[submodule "lib/network"]
	path = lib/network
	url = https://github.com/symbioticfi/network
[submodule "lib/core"]
	path = lib/core
	url = https://github.com/symbioticfi/core
[submodule "lib/openzeppelin-contracts"]
	path = lib/openzeppelin-contracts
	url = https://github.com/OpenZeppelin/openzeppelin-contracts
[submodule "lib/openzeppelin-contracts-upgradeable"]
	path = lib/openzeppelin-contracts-upgradeable
	url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable
```

## File: .prettierrc

```
{
  "printWidth": 120,
  "tabWidth": 2,
  "useTabs": false,
  "singleQuote": false,
  "bracketSpacing": true,
  "trailingComma": "all",
  "overrides": [
    {
      "files": "*.sol",
      "options": {
        "printWidth": 120,
        "tabWidth": 4,
        "useTabs": false,
        "singleQuote": false,
        "bracketSpacing": false
      }
    },
    {
      "files": "*.json",
      "options": {
        "tabWidth": 4
      }
    }
  ]
}
```

## File: codecov.yml

```yaml
codecov:
    require_ci_to_pass: true

coverage:
    precision: 2
    round: down
    range: "70...100"
    status:
        project:
            default:
                # basic
                target: auto
                threshold: 0%
                base: auto
                # advanced
                if_no_uploads: error
                if_not_found: success
                if_ci_failed: error
                only_pulls: false
        patch:
            default:
                # basic
                target: auto
                threshold: 0%
                base: auto
                # advanced
                if_no_uploads: error
                if_not_found: success
                if_ci_failed: error
                only_pulls: false

parsers:
    gcov:
        branch_detection:
            conditional: true
            loop: true
            method: false
            macro: false

comment:
    layout: "reach,diff,flags,files,footer"
    behavior: default
    require_changes: false
    require_base: false
    require_head: true

ignore:
    - "script"
    - "test"
    - "src/test"
    - "src/libraries/utils/BN254.sol"
```

## File: CONTRIBUTING.md

````markdown
# Contributing

- [Install](#install)
- [Pre-commit Hooks](#pre-commit-hooks)
- [Requirements for merge](#requirements-for-merge)
- [Branching](#branching)
    - [Main](#main)
    - [Audit](#audit)
- [Code Practices](#code-practices)
    - [Code Style](#code-style)
    - [Solidity Versioning](#solidity-versioning)
    - [Interfaces](#interfaces)
    - [NatSpec \& Comments](#natspec--comments)
- [Testing](#testing)
    - [Best Practices](#best-practices)
    - [IR Compilation](#ir-compilation)
    - [Gas Metering](#gas-metering)
- [Deployment](#deployment)
    - [Bytecode Hash](#bytecode-hash)
- [Dependency Management](#dependency-management)
- [Releases](#releases)

## Install

Follow these steps to set up your local environment for development:

- [Install foundry](https://book.getfoundry.sh/getting-started/installation)
- Install dependencies: `forge install`
- [Install pre-commit](https://pre-commit.com/#installation)
- Install pre commit hooks: `pre-commit install`

## Pre-commit Hooks

Follow the [installation steps](#install) to enable pre-commit hooks. To ensure consistency in our formatting `pre-commit` is used to check whether code was formatted properly and the documentation is up to date. Whenever a commit does not meet the checks implemented by pre-commit, the commit will fail and the pre-commit checks will modify the files to make the commits pass. Include these changes in your commit for the next commit attempt to succeed. On pull requests the CI checks whether all pre-commit hooks were run correctly.
This repo includes the following pre-commit hooks that are defined in the `.pre-commit-config.yaml`:

- `mixed-line-ending`: This hook ensures that all files have the same line endings (LF).
- `trailing-whitespace`: Strips trailing spaces from lines so that diffs remain clean and editors don't introduce noise.
- `end-of-file-fixer`: Ensures every file ends with a single newline and removes extra blank lines at the end of files.
- `check-merge-conflict`: Fails when Git merge conflict markers are present to avoid committing unresolved conflicts.
- `check-json`: Validates JSON files and fails fast on malformed syntax.
- `check-yaml`: Parses YAML files to verify they are syntactically valid.
- `sort-imports`: Normalises and sorts imports according to the rules mentioned in the [Code Style](#code-style) below.
- `sort-errors`: Sorts errors according to the rules mentioned in the [Code Style](#code-style) below.
- `format`: This hook uses `forge fmt` to format all Solidity files.
- `prettier`: All remaining files are formatted using prettier.

## Requirements for merge

In order for a PR to be merged, it must pass the following requirements:

- All commits within the PR must be signed
- CI must pass (tests, linting, etc.)
- New features must be merged with associated tests
- Bug fixes must have a corresponding test that fails without the fix
- The PR must be approved by at least one maintainer

## Branching

This section outlines the branching strategy of this repo.

### Main

The main branch is supposed to reflect the deployed state on all networks, if not indicated otherwise inside the README. Only audited code should be merged into main. Сommits from dev branches should be merged into the main branch using a regular merge strategy. The commit messages should follow [the Conventional Commits specification](https://www.conventionalcommits.org/en/v1.0.0/).

### Audit

Before an audit, the code should be frozen on a branch dedicated to the audit with the naming convention `audit/<provider>`. Each fix in response to an audit finding should be developed as a separate commit. The commit message should look similar to `fix: <provider> - <issue title>`.

## Code Practices

### Code Style

The repo follows the official [Solidity Style Guide](https://docs.soliditylang.org/en/latest/style-guide.html). In addition to that, this repo also borrows the following rules from [OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/GUIDELINES.md#solidity-conventions):

- Internal or private state variables or functions should have an underscore prefix.

    ```solidity
    contract TestContract {
        uint256 private _privateVar;
        uint256 internal _internalVar;
        function _testInternal() internal { ... }
        function _testPrivate() private { ... }
    }
    ```

- Naming collisions should be avoided using a single trailing underscore.

    ```solidity
    contract TestContract {
        uint256 public foo;

        constructor(uint256 foo_) {
          foo = foo_;
        }
    }
    ```

- Interface names should have a capital I prefix.

    ```solidity
    interface IERC777 {
    ```

- Contracts not intended to be used standalone should be marked abstract, so they are required to be inherited by other contracts.

    ```solidity
    abstract contract AccessControl is ..., {
    ```

- Unchecked arithmetic blocks should contain comments explaining why overflow is guaranteed not to happen or is permissible. If the reason is immediately apparent from the line above the unchecked block, the comment may be omitted.

Also, such exceptions/additions exist:

- Functions should be grouped according to their visibility and ordered:
    1. constructor

    2. external

    3. public

    4. internal

    5. private

    6. receive function (if exists)

    7. fallback function (if exists)

- Each contract should be virtually divided into sections by using such separators:
    1. /\* CONSTANTS \*/
    2. /\* IMMUTABLES \*/
    3. /\* STATE VARIABLES \*/
    4. /\* MODIFIERS \*/
    5. /\* CONSTRUCTOR \*/
    6. /\* EXTERNAL FUNCTIONS \*/
    7. /\* PUBLIC FUNCTIONS \*/
    8. /\* INTERNAL FUNCTIONS \*/
    9. /\* PRIVATE FUNCTIONS \*/
    10. /\* RECEIVE FUNCTION \*/
    11. /\* FALLBACK FUNCTION \*/

- Each interface should be virtually divided into sections by using such separators:
    1. /\* ERRORS \*/
    2. /\* STRUCTS \*/
    3. /\* EVENTS \*/
    4. /\* FUNCTIONS \*/

- Do not use external and private visibilities in most cases.

- Events should generally be emitted immediately after the state change that they
  represent, and should be named the same as the function's name. Some exceptions may be made for gas
  efficiency if the result doesn't affect the observable ordering of events.

    ```solidity
    function _burn(address who, uint256 value) internal {
        super._burn(who, value);
        emit Burn(who, value);
    }
    ```

- Custom errors should be used whenever possible. The naming should be concise and easy to read.

- Imports should be divided into separate groups and ordered alphabetically ascending inside each group:
    1. contracts

    2. libraries

    3. interfaces

    4. external files separately

    ```solidity
    import {NetworkManager} from "../base/NetworkManager.sol";
    import {OzEIP712} from "../base/OzEIP712.sol";
    import {PermissionManager} from "../base/PermissionManager.sol";

    import {Checkpoints} from "../../libraries/structs/Checkpoints.sol";
    import {KeyTags} from "../../libraries/utils/KeyTags.sol";

    import {ISettlement} from "../interfaces/modules/settlement/ISettlement.sol";
    import {ISigVerifier} from "../interfaces/modules/settlement/sig-verifiers/ISigVerifier.sol";

    import {StaticDelegateCallable} from "@symbioticfi/core/src/contracts/common/StaticDelegateCallable.sol";
    import {Subnetwork} from "@symbioticfi/core/src/contracts/libraries/Subnetwork.sol";

    import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
    ```

- In case of comparison with `msg.sender` or `tx.origin`, these keywords should be on the right side of the inequality.

    ```solidity
    modifier onlyOwner() internal {
        if (owner != msg.sender) {
          revert NotOwner();
        }
    }
    ```

- Errors should be ordered alphabetically ascending.

    ```solidity
    error InsufficientFunds();
    error NoAccess();
    error NotOwner();
    ```

### Solidity Versioning

Contracts that are meant to be deployed should have an explicit version set in the `pragma` statement.

```solidity
pragma solidity 0.8.X;
```

Abstract contracts, libraries and interfaces should use the caret (`^`) range operator to specify the version range to ensure better compatibility.

```solidity
pragma solidity ^0.X.0;
```

Libraries and abstract contracts using functionality introduced in newer versions of Solidity can use caret range operators with higher path versions (e.g., `^0.8.24` when using transient storage opcodes). For interfaces, it should be considered to use the greater than or equal to (`>=`) range operator to ensure better compatibility with future versions of Solidity.

### Interfaces

Every contract MUST implement its corresponding interface that includes all externally callable functions, errors and events.

### NatSpec & Comments

Interfaces should be the entry point for all contracts. When exploring a contract within the repository, the interface MUST contain all relevant information to understand the functionality of the contract in the form of NatSpec comments. This includes all externally callable functions, structs, errors and events. The NatSpec documentation MUST be added to the functions, structs, errors and events within the interface. This allows a reader to understand the functionality of a function before moving on to the implementation. The implementing functions MUST point to the NatSpec documentation in the interface using `@inheritdoc`. Internal and private functions shouldn't have NatSpec documentation except for `@dev` comments, whenever more context is needed. Additional comments within a function should only be used to give more context to more complex operations; otherwise, the code should be kept readable and self-explanatory. NatSpec comments in contracts should use a triple slash (`///`) to bring less noise to the implementation, while libraries and interfaces should use `/* */` wrappers.

The comments should respect the following rules:

- For read functions: `@notice Returns <...>`
- For write functions: `@notice <What it does, starts with verb>`
- For structs: `@notice <What it is>`
- For errors: `@notice Raised when <...>`
- For events: `@notice Emitted when <...>`

Each contract/library/interface should have a title comment that should follow such a structure:

1. `@title <Name>` (e.g., `Vault`)
2. `@notice Contract/Library/Interface for <...>.` - also, other variations are possible, e.g.:
    - `@notice Interface for the Vault contract.`
    - `@notice Base contract for <...>.`
    - `@notice Library-logic for <...>.`
3. `@dev <...>` (optional)

## Testing

The following testing practices should be followed when writing unit tests for new code. All functions, lines and branches should be tested to result in 100% testing coverage. Fuzz parameters and conditions whenever possible. Extremes should be tested in dedicated edge case and corner case tests. Invariants should be tested in dedicated invariant tests.

Differential testing should be used to compare assembly implementations with implementations in Solidity or testing alternative implementations against existing Solidity or non-Solidity code using ffi.

New features must be merged with associated tests. Bug fixes should have a corresponding test that fails without the bug fix.

### Best Practices

Best practices and naming conventions should be followed as outlined in the [Foundry Book](https://getfoundry.sh/forge/tests/overview).

### IR Compilation

All contracts and tests should be compilable without IR whenever possible.

### Gas Metering

Gas for function calls should be metered using the built-in `vm.snapshotGasLastCall` function in forge. To meter across multiple calls `vm.startSnapshotGas` and `vm.stopSnapshotGas` can be used. Tests that measure gas should be annotated with `/// forge-config: default.isolate = true` and not be fuzzed to ensure that the gas snapshot is accurate and consistent for CI verification. All external functions should have a gas snapshot test, and diverging paths within a function should have appropriate gas snapshot tests.
For more information on gas metering, see the [Forge cheatcodes reference](https://getfoundry.sh/reference/cheatcodes/gas-snapshots/#snapshotgas-cheatcodes).

### Bytecode Hash

Bytecode hash should be set to `none` in the `foundry.toml` file to ensure that the bytecode is consistent.

## Dependency Management

The preferred way to manage dependencies is using [`forge install`](https://book.getfoundry.sh/forge/dependencies). This ensures that your project uses the correct versions and structure for all external libraries. Also, `npm` and `soldeer` packages should be published to increase coverage of different use-cases.

## Releases

Every deployment and change made to contracts after deployment should be accompanied by a tag and release on GitHub.
````

## File: foundry.lock

```
{
  "lib/core": {
    "tag": {
      "name": "v1.0.3",
      "rev": "74c0c6fbd5531a6065cdafdab07840b04a0d2039"
    }
  },
  "lib/forge-std": {
    "tag": {
      "name": "v1.11.0",
      "rev": "8e40513d678f392f398620b3ef2b418648b33e89"
    }
  },
  "lib/network": {
    "rev": "8ee834279cb4fb45adfcb5fee4a405f06b3134ca"
  },
  "lib/openzeppelin-contracts": {
    "tag": {
      "name": "v5.4.0",
      "rev": "c64a1edb67b6e3f4a15cca8909c9482ad33a02b0"
    }
  },
  "lib/openzeppelin-contracts-upgradeable": {
    "tag": {
      "name": "v5.4.0",
      "rev": "e725abddf1e01cf05ace496e950fc8e243cc7cab"
    }
  },
  "lib/rewards": {
    "rev": "b5a1f5b46f33f31938fc0116086b3a75e748c8b1"
  }
}
```

## File: foundry.toml

```toml
[profile.default]
evm_version = "prague"
solc = "0.8.28"
optimizer = true
optimizer_runs = 200
via_ir = false
bytecode_hash = "none"
src = "src"
out = "out"
libs = ["lib"]
fs_permissions = [{ access = "read-write", path = "./"}]
gas_reports = ["*"]
gas_limit = "18446744073709551615"
dynamic_test_linking = true
ignored_warnings_from = ["test/","script/"]
ffi = true

[rpc_endpoints]
mainnet = "${ETH_RPC_URL}"
hoodi = "${ETH_RPC_URL_HOODI}"
holesky = "${ETH_RPC_URL_HOLESKY}"
sepolia = "${ETH_RPC_URL_SEPOLIA}"

[fmt]
bracket_spacing = false
int_types = "long"
line_length = 120
multiline_func_header = "attributes_first"
number_underscore = "thousands"
quote_style = "double"
tab_width = 4
single_line_statement_blocks = "preserve"
sort_imports = false
contract_new_lines = false
override_spacing = false
hex_underscore = "preserve"
wrap_comments = false

[lint]
lint_on_build = false
exclude_lints = ["asm-keccak256","mixed-case-function","mixed-case-variable","pascal-case-struct","screaming-snake-case-const"]
ignore = ["test/**/*.sol","script/**/*.sol","src/interfaces/**/*.sol"]

additional_compiler_profiles = [
  { name = "test", via_ir = false, optimizer = false },
  { name = "via-ir-1", via_ir = true, optimizer = true, optimizer_runs = 1 }
]

compilation_restrictions = [
  { paths = "test/**", via_ir = false, optimizer = false },
  { paths = "{test/mocks/VotingPowerProviderFull.sol}", via_ir = true, optimizer = true, optimizer_runs = 1 }
]

[profile.default.fuzz]
runs = 1000
max_test_rejects = 262144

[profile.pr.fuzz]
runs = 10000
max_test_rejects = 262144

[profile.ci.fuzz]
runs = 10000
max_test_rejects = 262144

[profile.debug]
via_ir = false
optimizer_runs = 200
fuzz.runs = 100

# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options
```

## File: gas.txt

```
Compiling 31 files with Solc 0.8.28
Solc 0.8.28 finished in 28.58s
Compiler run successful with warnings:
Warning (6321): Unnamed return variable can remain unassigned. Add an explicit return with value to all non-reverting code paths or name the variable.
   --> src/modules/voting-power/common/voting-power-calc/libraries/ChainlinkPriceFeed.sol:231:84:
    |
231 |     function getRoundData(address aggregator, uint80 roundId) public view returns (bool, RoundData memory roundData) {
    |                                                                                    ^^^^

Warning (6321): Unnamed return variable can remain unassigned. Add an explicit return with value to all non-reverting code paths or name the variable.
   --> src/modules/voting-power/common/voting-power-calc/libraries/ChainlinkPriceFeed.sol:337:74:
    |
337 |     function getLatestRoundData(address aggregator) public view returns (bool, RoundData memory roundData) {
    |                                                                          ^^^^

Warning (5667): Unused function parameter. Remove or comment out the variable name to silence this warning.
   --> lib/core/test/integration/base/SymbioticCoreBindingsBase.sol:215:18:
    |
215 |         returns (uint256 depositedAmount, uint256 mintedShares)
    |                  ^^^^^^^^^^^^^^^^^^^^^^^

Warning (5667): Unused function parameter. Remove or comment out the variable name to silence this warning.
   --> lib/core/test/integration/base/SymbioticCoreBindingsBase.sol:215:43:
    |
215 |         returns (uint256 depositedAmount, uint256 mintedShares)
    |                                           ^^^^^^^^^^^^^^^^^^^^

Warning (5667): Unused function parameter. Remove or comment out the variable name to silence this warning.
   --> lib/core/test/integration/base/SymbioticCoreBindingsBase.sol:232:18:
    |
232 |         returns (uint256 burnedShares, uint256 mintedShares)
    |                  ^^^^^^^^^^^^^^^^^^^^

Warning (5667): Unused function parameter. Remove or comment out the variable name to silence this warning.
   --> lib/core/test/integration/base/SymbioticCoreBindingsBase.sol:232:40:
    |
232 |         returns (uint256 burnedShares, uint256 mintedShares)
    |                                        ^^^^^^^^^^^^^^^^^^^^

Warning (5667): Unused function parameter. Remove or comment out the variable name to silence this warning.
   --> lib/core/test/integration/base/SymbioticCoreBindingsBase.sol:249:18:
    |
249 |         returns (uint256 withdrawnAssets, uint256 mintedShares)
    |                  ^^^^^^^^^^^^^^^^^^^^^^^

Warning (5667): Unused function parameter. Remove or comment out the variable name to silence this warning.
   --> lib/core/test/integration/base/SymbioticCoreBindingsBase.sol:249:43:
    |
249 |         returns (uint256 withdrawnAssets, uint256 mintedShares)
    |                                           ^^^^^^^^^^^^^^^^^^^^

Warning (5667): Unused function parameter. Remove or comment out the variable name to silence this warning.
   --> lib/core/test/integration/base/SymbioticCoreBindingsBase.sol:263:104:
    |
263 |     function _claim_SymbioticCore(address who, address vault, uint256 epoch) internal virtual returns (uint256 amount) {
    |                                                                                                        ^^^^^^^^^^^^^^

Warning (5667): Unused function parameter. Remove or comment out the variable name to silence this warning.
   --> lib/core/test/integration/base/SymbioticCoreBindingsBase.sol:279:18:
    |
279 |         returns (uint256 amount)
    |                  ^^^^^^^^^^^^^^

Warning (2018): Function state mutability can be restricted to pure
  --> src/libraries/keys/KeyBlsBls12381.sol:67:5:
   |
67 |     function unwrap(KEY_BLS_BLS12381 memory key) internal view returns (BLS12381.G1Point memory keyRaw) {
   |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
   --> src/libraries/keys/KeyBlsBls12381.sol:117:5:
    |
117 |     function toBytes(KEY_BLS_BLS12381 memory key) internal view returns (bytes memory keyBytes) {
    |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
   --> src/libraries/keys/KeyBlsBls12381.sol:137:5:
    |
137 |     function zeroKey() internal view returns (KEY_BLS_BLS12381 memory key) {
    |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
   --> src/libraries/keys/KeyBlsBls12381.sol:147:5:
    |
147 |     function equal(KEY_BLS_BLS12381 memory key1, KEY_BLS_BLS12381 memory key2) internal view returns (bool) {
    |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
  --> src/libraries/keys/KeyBlsBn254.sol:64:5:
   |
64 |     function unwrap(KEY_BLS_BN254 memory key) internal view returns (BN254.G1Point memory keyRaw) {
   |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
   --> src/libraries/keys/KeyBlsBn254.sol:106:5:
    |
106 |     function toBytes(KEY_BLS_BN254 memory key) internal view returns (bytes memory keyBytes) {
    |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
   --> src/libraries/keys/KeyBlsBn254.sol:126:5:
    |
126 |     function zeroKey() internal view returns (KEY_BLS_BN254 memory key) {
    |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
   --> src/libraries/keys/KeyBlsBn254.sol:136:5:
    |
136 |     function equal(KEY_BLS_BN254 memory key1, KEY_BLS_BN254 memory key2) internal view returns (bool) {
    |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
  --> src/libraries/keys/KeyEcdsaSecp256k1.sol:44:5:
   |
44 |     function unwrap(KEY_ECDSA_SECP256K1 memory key) internal view returns (address keyRaw) {
   |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
  --> src/libraries/keys/KeyEcdsaSecp256k1.sol:54:5:
   |
54 |     function serialize(KEY_ECDSA_SECP256K1 memory key) internal view returns (bytes memory keySerialized) {
   |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
  --> src/libraries/keys/KeyEcdsaSecp256k1.sol:63:5:
   |
63 |     function deserialize(bytes memory keySerialized) internal view returns (KEY_ECDSA_SECP256K1 memory key) {
   |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
  --> src/libraries/keys/KeyEcdsaSecp256k1.sol:73:5:
   |
73 |     function toBytes(KEY_ECDSA_SECP256K1 memory key) internal view returns (bytes memory keyBytes) {
   |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
  --> src/libraries/keys/KeyEcdsaSecp256k1.sol:93:5:
   |
93 |     function zeroKey() internal view returns (KEY_ECDSA_SECP256K1 memory key) {
   |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
   --> src/libraries/keys/KeyEcdsaSecp256k1.sol:103:5:
    |
103 |     function equal(KEY_ECDSA_SECP256K1 memory key1, KEY_ECDSA_SECP256K1 memory key2) internal view returns (bool) {
    |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
  --> src/libraries/sigs/SigEcdsaSecp256k1.sol:57:5:
   |
57 |     function verify(address key, bytes32 message, bytes memory signature) internal view returns (bool) {
   |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
   --> lib/core/test/integration/SymbioticCoreConstants.sol:472:5:
    |
472 |     function allTokens() internal view returns (string[] memory result) {
    |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
   --> src/modules/voting-power/extensions/logic/OpNetVaultAutoDeployLogic.sol:174:5:
    |
174 |     function getVaultParams(IVault.InitParams memory params) public view returns (uint64, bytes memory) {
    |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
   --> src/modules/voting-power/extensions/logic/OpNetVaultAutoDeployLogic.sol:186:5:
    |
186 |     function getVaultTokenizedParams(IVault.InitParams memory baseParams, string memory name, string memory symbol)
    |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
   --> src/modules/voting-power/extensions/logic/OpNetVaultAutoDeployLogic.sol:232:5:
    |
232 |     function getSlasherParams(bool isBurnerHook) public view returns (uint64, bytes memory) {
    |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
   --> src/modules/voting-power/extensions/logic/OpNetVaultAutoDeployLogic.sol:247:5:
    |
247 |     function getVetoSlasherParams(bool isBurnerHook, uint48 vetoDuration, uint256 resolverSetEpochsDelay)
    |     ^ (Relevant source part starts here and spans across multiple lines).


Ran 3 tests for test/libraries/utils/BN12381.t.sol:BLS12381UtilsTest
[PASS] test_IsInSubgroup_RevertsForTorsionPoint() (gas: 17874786921033478742)
[PASS] test_XCubePlus4_CarryAndBorrowBranch() (gas: 13408)
[PASS] test_XCubePlus4_NoCarryBorrowZeroBranch() (gas: 13323)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.21ms (430.54µs CPU time)

Ran 5 tests for test/modules/base/OzEIP712.t.sol:OzEIP712Test
[PASS] test_HashTypedDataV4() (gas: 121509)
[PASS] test_InitializeSetsDomain() (gas: 125433)
[PASS] test_Location() (gas: 525)
[PASS] test_ReInitialize() (gas: 133758)
[PASS] test_SignatureRecovery() (gas: 121973)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 1.64ms (1.30ms CPU time)

Ran 4 tests for test/modules/common/permissions/OzOwnable.t.sol:OzOwnableTest
[PASS] testProtectedAction_RevertsForNonOwner() (gas: 34468)
[PASS] testProtectedAction_SucceedsForOwner() (gas: 34042)
[PASS] testReinitializeReverts() (gas: 34167)
[PASS] testTransferOwnership() (gas: 91093)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 285.46µs (67.71µs CPU time)

Ran 2 tests for test/modules/base/PermissionManager.t.sol:PermissionManagerTest
[PASS] test_ProtectedAction_RevertIfNotOwner() (gas: 32486)
[PASS] test_ProtectedAction_SucceedsForOwner() (gas: 28627)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 226.63µs (21.13µs CPU time)

Ran 15 tests for test/modules/valset-driver/ValSetDriver.t.sol:ValSetDriverTest
[PASS] test_AddRemoveQuorumThreshold() (gas: 441299)
[PASS] test_AddRemoveSettlement() (gas: 466350)
[PASS] test_AddRemoveVotingPowerProvider() (gas: 348584)
[PASS] test_GetValSetConfig() (gas: 135827)
[PASS] test_InitialConfig() (gas: 375494)
[PASS] test_Location() (gas: 567)
[PASS] test_PermissionChecks() (gas: 276030)
[PASS] test_SetCommitterSlotDuration() (gas: 607967)
[PASS] test_SetKeysProvider() (gas: 97558)
[PASS] test_SetNumAggregators() (gas: 653960)
[PASS] test_SetNumCommitters() (gas: 654319)
[PASS] test_SetVerificationType() (gas: 75756)
[PASS] test_TimeBasedConfig() (gas: 116564)
[PASS] test_TimeBasedQueries() (gas: 377730)
[PASS] test_UpdateAllConfigs() (gas: 1057367)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 4.78ms (3.57ms CPU time)

Ran 5 tests for test/libraries/utils/ValSetVerifier.t.sol:ValSetVerifierDataTest
[PASS] test_VerifyIsActive() (gas: 425714)
[PASS] test_VerifyKey() (gas: 535277)
[PASS] test_VerifyOperator() (gas: 423626)
[PASS] test_VerifyVault() (gas: 688276)
[PASS] test_VerifyVotingPower() (gas: 423627)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 1.78ms (1.50ms CPU time)

Ran 4 tests for test/modules/base/VotingPowerCalcManager.t.sol:VotingPowerCalcManagerTest
[PASS] testReInitializeReverts() (gas: 31722)
[PASS] testStakeToVotingPower() (gas: 6387)
[PASS] testStakeToVotingPowerAt() (gas: 9400)
[PASS] testWithExtraData() (gas: 6595)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 256.58µs (41.42µs CPU time)

Ran 4 tests for test/libraries/sigs/SigBlsBn254.t.sol:SigBlsBn254Test
[PASS] test_BLSRegisterOperator() (gas: 1121825)
[PASS] test_BLSRegisterOperatorInvalid() (gas: 1121897)
[PASS] test_InvalidMessageLength() (gas: 7664)
[PASS] test_ZeroKey() (gas: 5008)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 8.74ms (8.52ms CPU time)

Ran 4 tests for test/libraries/sigs/SigBlsBn12381.t.sol:SigBlsBls12381Test
[PASS] test_InvalidMessageLength() (gas: 8486)
[PASS] test_VerifyInvalidSignature() (gas: 412149)
[PASS] test_VerifyValidSignature() (gas: 412114)
[PASS] test_VerifyZeroKey() (gas: 25004)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 16.30ms (16.04ms CPU time)

Ran 8 tests for test/libraries/structs/PersistentSet.t.sol:PersistentSetTest
[PASS] test_AddressSetAddRemoveAndContains() (gas: 204274)
[PASS] test_AddressSetAllValues() (gas: 185014)
[PASS] test_AddressSetLengthAndValuesAt() (gas: 239766)
[PASS] test_Bytes32SetAddRemoveAndContains() (gas: 221727)
[PASS] test_Bytes32SetAllValues() (gas: 184889)
[PASS] test_Bytes32SetValuesAt() (gas: 245622)
[PASS] test_LargeAddressSetExceed256Elements() (gas: 16698398)
[PASS] test_RevertPersistentSet_InvalidKey() (gas: 184062)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 16.12ms (15.90ms CPU time)

Ran 7 tests for test/modules/settlement/sig-verifiers/libraries/ExtraDataStorageHelper.t.sol:ExtraDataStorageHelperTest
[PASS] testFuzz_Uniqueness(uint32,uint32,uint8,uint8,bytes32,bytes32,uint256,uint256) (runs: 1000, μ: 6486, ~: 6566)
[PASS] test_BaseKey() (gas: 1081)
[PASS] test_IndexedKey() (gas: 4680)
[PASS] test_IndexedTagOnlyKey() (gas: 4441)
[PASS] test_SimpleKey() (gas: 1018)
[PASS] test_TagOnlyKey() (gas: 1151)
[PASS] test_TaggedKey() (gas: 1572)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 25.86ms (25.64ms CPU time)

Ran 6 tests for test/libraries/utils/InputNormalizer.t.sol:InputNormalizerTest
[PASS] test_normalizeDoubleDimEmpty() (gas: 1701)
[PASS] test_normalizeDoubleDimExact() (gas: 7134)
[PASS] test_normalizeDoubleDimMismatchRevert() (gas: 10039)
[PASS] test_normalizeSingleDimEmpty() (gas: 2037)
[PASS] test_normalizeSingleDimExact() (gas: 6924)
[PASS] test_normalizeSingleDimMismatchRevert() (gas: 9196)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 310.58µs (97.17µs CPU time)

Ran 19 tests for test/libraries/keys/KeyBlsBls12381.t.sol:KeyBlsBls12381Test
[PASS] test_DeserializeRevertsInvalidLength() (gas: 10557)
[PASS] test_DeserializeZeroFromEmpty() (gas: 1816)
[PASS] test_Equal() (gas: 46549)
[PASS] test_EqualFalse() (gas: 46879)
[PASS] test_FromBytesRevertsInvalidBytes() (gas: 44732)
[PASS] test_FromBytesRevertsInvalidLength() (gas: 10538)
[PASS] test_OutOfBounds() (gas: 10679)
[PASS] test_SerializeDeserializeGenerator() (gas: 37753)
[PASS] test_SerializeDeserializeNegated() (gas: 37756)
[PASS] test_SerializeDeserializeZero() (gas: 2681)
[PASS] test_ToBytesFromBytesGenerator() (gas: 33826)
[PASS] test_ToBytesFromBytesZero() (gas: 3197)
[PASS] test_WrapRevertsForTorsionPoint() (gas: 17874786921033479978)
[PASS] test_WrapRevertsInvalidKey() (gas: 13617)
[PASS] test_WrapRevertsNonSubgroupPoint() (gas: 17874786921033479969)
[PASS] test_WrapRevertsWhenSubgroupCheckReturnsNonZero() (gas: 18632)
[PASS] test_WrapUnwrapGenerator() (gas: 17106)
[PASS] test_WrapUnwrapZero() (gas: 1304)
[PASS] test_ZeroKey() (gas: 6816)
Suite result: ok. 19 passed; 0 failed; 0 skipped; finished in 1.98ms (1.70ms CPU time)

Ran 6 tests for test/modules/voting-power/extensions/OperatorsBlacklist.t.sol:OperatorsBlacklistTest
[PASS] test_BasicEnvironment() (gas: 10071)
[PASS] test_BlacklistOperator() (gas: 314932)
[PASS] test_BlacklistOperator_RevertIfAlreadyBlacklisted() (gas: 93498)
[PASS] test_Location() (gas: 504)
[PASS] test_UnblacklistOperator() (gas: 250902)
[PASS] test_UnblacklistOperator_RevertIfNotBlacklisted() (gas: 34324)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 172.72ms (1.36ms CPU time)

Ran 2 tests for test/modules/voting-power/extensions/SharedVaults.t.sol:SharedVaultsTest
[PASS] test_RegisterSharedVault_OnlyOwnerCanCall() (gas: 180177)
[PASS] test_RegisterUnregisterSharedVault_VaultManagerSide() (gas: 277358)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 173.63ms (801.13µs CPU time)

Ran 5 tests for test/libraries/sigs/SigEcdsaSecp256k1.t.sol:SigEcdsaSecp256k1Test
[PASS] test_CorrectSignature() (gas: 13094)
[PASS] test_FuzzVerification(uint256,bytes) (runs: 1000, μ: 16854, ~: 16825)
[PASS] test_IncorrectSignature() (gas: 22938)
[PASS] test_InvalidMessageLength() (gas: 6500)
[PASS] test_ZeroKey() (gas: 2104)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 212.01ms (211.07ms CPU time)

Ran 21 tests for test/libraries/keys/KeyBlsBn254.t.sol:KeyBlsBn254Test
[PASS] test_DeserializeEmptyBytesIsIdentity() (gas: 893)
[PASS] test_DeserializeRevertsInvalidLength() (gas: 10314)
[PASS] test_Equal() (gas: 14779)
[PASS] test_EqualFalse() (gas: 19066)
[PASS] test_FromBytesRevertsInvalidBytes() (gas: 13146)
[PASS] test_FromBytesRevertsInvalidLength() (gas: 10338)
[PASS] test_FuzzSerializeDeserialize(uint256) (runs: 1000, μ: 5496, ~: 8321)
[PASS] test_FuzzSerializeDeserializeNonZeroNegate(uint256) (runs: 1000, μ: 6177, ~: 9120)
[PASS] test_FuzzToBytesFromBytes(uint256) (runs: 1000, μ: 3852, ~: 4987)
[PASS] test_FuzzWrapUnwrap(uint256) (runs: 1000, μ: 3059, ~: 3440)
[PASS] test_OutOfBounds() (gas: 27427)
[PASS] test_SerializeDeserializeIdentity() (gas: 1399)
[PASS] test_SerializeDeserializeNonZero() (gas: 8155)
[PASS] test_SerializeDeserializeNonZeroNegate() (gas: 8997)
[PASS] test_SerializeRevertsInvalidKey() (gas: 12594)
[PASS] test_ToBytesFromBytesIdentity() (gas: 2264)
[PASS] test_ToBytesFromBytesNonZero() (gas: 4799)
[PASS] test_WrapRevertsInvalidKey(uint256) (runs: 1000, μ: 12833, ~: 12833)
[PASS] test_WrapUnwrapIdentity() (gas: 839)
[PASS] test_WrapUnwrapNonZero() (gas: 3231)
[PASS] test_ZeroKey() (gas: 6278)
Suite result: ok. 21 passed; 0 failed; 0 skipped; finished in 234.36ms (233.82ms CPU time)

Ran 12 tests for test/libraries/keys/KeyEcdsaSecp256k1.t.sol:KeyEcdsaSecp256k1Test
[PASS] test_DeserializeRevertsIfNot20Bytes() (gas: 10139)
[PASS] test_Equal() (gas: 20457)
[PASS] test_EqualFalse() (gas: 20456)
[PASS] test_FromBytesRevertsIfNot20Bytes() (gas: 10138)
[PASS] test_FromBytesRevertsInvalidBytes() (gas: 12982)
[PASS] test_FuzzSerializeDeserialize(address) (runs: 1000, μ: 1171, ~: 1171)
[PASS] test_FuzzToBytesFromBytes(address) (runs: 1000, μ: 1513, ~: 1513)
[PASS] test_FuzzWrapUnwrap(address) (runs: 1000, μ: 685, ~: 685)
[PASS] test_SerializeDeserialize() (gas: 4798)
[PASS] test_ToBytesFromBytes() (gas: 5282)
[PASS] test_WrapUnwrap() (gas: 4363)
[PASS] test_ZeroKey() (gas: 5910)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 16.52ms (16.27ms CPU time)

Ran 10 tests for test/modules/voting-power/extensions/BaseSlashing.t.sol:BaseSlashingTest
[PASS] test_ExecuteSlashVaul_NotVetoSlasher() (gas: 489962)
[PASS] test_ExecuteSlashVault_NoSlasher() (gas: 1398945)
[PASS] test_Location() (gas: 569)
[PASS] test_RevertWhen_SlashVault_NoSlashing() (gas: 497850)
[PASS] test_RevertWhen_SlashVault_UnknownSlasherType() (gas: 513933)
[PASS] test_SlashVault() (gas: 918317)
[PASS] test_SlashVaultUnsafe() (gas: 1851089)
[PASS] test_SlashVault_EpochDurationPassed() (gas: 517298)
[PASS] test_SlashVault_VetoSlasher() (gas: 3614815)
[PASS] test_SlashVault_WithHints() (gas: 887970)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 254.00ms (6.56ms CPU time)

Ran 3 tests for test/modules/voting-power/extensions/BaseRewards.t.sol:BaseRewardsTest
[PASS] test_Location() (gas: 569)
[PASS] test_OperatorRewards() (gas: 981074)
[PASS] test_StakerRewards() (gas: 1266470)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 260.24ms (1.88ms CPU time)

Ran 14 tests for test/modules/key-registry/KeyRegistry.t.sol:KeyRegistryTest
[PASS] test_GetKeysAt_TimeCheckpoints() (gas: 835745)
[PASS] test_GetKeysOperators_MultipleOperators() (gas: 1026774)
[PASS] test_GetOperator_UnknownKey() (gas: 8664)
[PASS] test_Location() (gas: 611)
[PASS] test_SetBLSKey() (gas: 856239)
[PASS] test_SetBlsBls12381Key() (gas: 786840)
[PASS] test_SetBlsBls12381Key_RevertInvalidSignature() (gas: 323824)
[PASS] test_SetECDSAKey() (gas: 482924)
[PASS] test_SetECDSAKey_RevertOnInvalidSignature() (gas: 59194)
[PASS] test_SetKey64() (gas: 488831)
[PASS] test_SetKey_AlreadyUsedKeyDifferentOperator() (gas: 395671)
[PASS] test_SetKey_RevertOnInvalidKeyType() (gas: 41048)
[PASS] test_SetKey_SameOperatorDifferentTags() (gas: 616254)
[PASS] test_SetKey_SameOperatorSameTag_Overwrite() (gas: 497232)
Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 9.39ms (8.78ms CPU time)

Ran 12 tests for test/libraries/utils/KeyTag.t.sol:KeyTagTest
[PASS] test_AddMultiple() (gas: 1857)
[PASS] test_ContainsAddRemove() (gas: 1141)
[PASS] test_DeserializeBitmask() (gas: 31921)
[PASS] test_GetKeyTagInvalidIdentifier() (gas: 4264)
[PASS] test_GetKeyTagInvalidType() (gas: 4180)
[PASS] test_GetKeyTagValid() (gas: 453)
[PASS] test_GetTag() (gas: 441)
[PASS] test_GetTagRevertWhenTooLarge() (gas: 4046)
[PASS] test_GetType() (gas: 380)
[PASS] test_GetTypeRevertWhenTooLarge() (gas: 4081)
[PASS] test_SerializeRevertOnDuplicate() (gas: 6095)
[PASS] test_SerializeUniqueKeyTags() (gas: 3469)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 365.13µs (155.38µs CPU time)

Ran 8 tests for test/modules/settlement/Settlement.t.sol:SettlementRawTest
[PASS] testCommitValSetHeader_Basic() (gas: 1082819)
[PASS] testInitParams() (gas: 29336)
[PASS] testSetGenesis_Permission() (gas: 383545)
[PASS] testSetGenesis_Revert_ValSetHeaderAlreadySubmitted() (gas: 240426)
[PASS] testVersion() (gas: 5714)
[PASS] test_commitValSetHeader_VerificationFailed() (gas: 931578)
[PASS] test_setSigVerifier() (gas: 321900)
[PASS] test_setSigVerifier_Revert_InvalidSigVerifier() (gas: 34441)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 1.39ms (929.63µs CPU time)

Ran 18 tests for test/modules/valset-driver/EpochManager.t.sol:EpochManagerTest
[PASS] test_AdvanceTimeAndCheckEpoch() (gas: 207469)
[PASS] test_DirectSetEpochDuration() (gas: 244617)
[PASS] test_GetCurrentEpochDurationData() (gas: 161233)
[PASS] test_GetCurrentValue_MultipleCheckpoints() (gas: 245317)
[PASS] test_GetCurrentValue_NoCheckpoint() (gas: 10727)
[PASS] test_GetCurrentValue_SingleCheckpoint() (gas: 97941)
[PASS] test_GetEpochDurationAndStart() (gas: 421185)
[PASS] test_GetEpochDurationDataByIndex() (gas: 152442)
[PASS] test_GetEpochDurationDataByTimestamp() (gas: 152822)
[PASS] test_GetEpochIndex() (gas: 152449)
[PASS] test_GetEpochIndex_RevertIfTooOldTimestamp() (gas: 165031)
[PASS] test_Initialize_RevertOnPastTimestamp() (gas: 54021)
[PASS] test_Initialize_RevertOnZeroEpochDuration() (gas: 53671)
[PASS] test_Initialize_SetsEpochDuration() (gas: 228758)
[PASS] test_Initialize_SetsEpochDuration_WithZeroTimestamp() (gas: 204726)
[PASS] test_SerializeDeserializeEpochDurationData() (gas: 9810)
[PASS] test_SetEpochDuration_RevertIfIndexLessThanCurrent() (gas: 291563)
[PASS] test_SetEpochDuration_RevertOnZeroDuration() (gas: 180257)
Suite result: ok. 18 passed; 0 failed; 0 skipped; finished in 1.17ms (861.05µs CPU time)

Ran 1 test for test/modules/voting-power/extensions/EqualStakeVPCalc.t.sol:EqualStakeVPCalcTest
[PASS] test_create() (gas: 143)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 191.92µs (3.96µs CPU time)

Ran 6 tests for test/modules/voting-power/extensions/OperatorsJail.t.sol:OperatorsJailTest
[PASS] test_BasicEnvironment() (gas: 10198)
[PASS] test_JailOperator() (gas: 512213)
[PASS] test_JailOperator_RevertIfAlreadyJailed() (gas: 134944)
[PASS] test_Location() (gas: 526)
[PASS] test_UnjailOperator() (gas: 273471)
[PASS] test_UnjailOperator_RevertIfNotJailed() (gas: 34416)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 218.97ms (1.47ms CPU time)

Ran 2 tests for test/modules/voting-power/extensions/MultiToken.t.sol:MultiTokenTest
[PASS] test_RegisterToken_OnlyOwnerCanCall() (gas: 85980)
[PASS] test_RegisterUnregisterToken_VaultManagerSide() (gas: 187414)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 175.09ms (458.71µs CPU time)

Ran 30 tests for test/modules/voting-power/VotingPowerProvider.t.sol:VotingPowerProviderTest
[PASS] testGetOperatorsAt_withTime() (gas: 436503)
[PASS] test_CheckStakes() (gas: 318490684)
[PASS] test_DistributeRewards() (gas: 229)
[PASS] test_IncreaseNonce() (gas: 63999)
[PASS] test_IsOperatorRegisteredAt_withTime() (gas: 168206)
[PASS] test_Location() (gas: 611)
[PASS] test_RegisterOperator() (gas: 1845486)
[PASS] test_RegisterOperatorValid() (gas: 137749)
[PASS] test_RegisterOperatorVault() (gas: 1984637)
[PASS] test_RegisterOperatorVaultExternal() (gas: 1888865)
[PASS] test_RegisterOperatorVault_RevertIfOperatorNotRegistered() (gas: 1453363)
[PASS] test_RegisterOperator_RevertIfAlreadyRegistered() (gas: 169881)
[PASS] test_RegisterOperator_RevertIfNotEntity() (gas: 41446)
[PASS] test_RegisterSharedVault() (gas: 609131)
[PASS] test_RegisterSharedVault_RevertIfInvalidVault() (gas: 41387)
[PASS] test_RegisterSharedVault_RevertIfTokenNotRegistered() (gas: 11634350)
[PASS] test_RegisterToken() (gas: 517267)
[PASS] test_RegisterToken_RevertOnZeroAddress() (gas: 35174)
[PASS] test_SlashVault_InstantSlasher() (gas: 185)
[PASS] test_SlashVault_RevertIfNoSlasher() (gas: 273)
[PASS] test_SlashVault_VetoSlasherFlow() (gas: 277)
[PASS] test_SlashingData() (gas: 120491)
[PASS] test_UnregisterOperator() (gas: 256356)
[PASS] test_UnregisterOperator_RevertIfNotRegistered() (gas: 39873)
[PASS] test_UnregisterToken() (gas: 232892)
[PASS] test_ValidateVault() (gas: 1315114)
[PASS] test_ValidateVaultSlashingFailsIfLessThanMinVaultEpochDuration() (gas: 1306034)
[PASS] test_registerOperatorWithSignature() (gas: 1753924)
[PASS] test_registerOperatorWithSignature_RevertIfInvalidSig() (gas: 1213952)
[PASS] test_unregisterOperatorWithSignature() (gas: 285011)
Suite result: ok. 30 passed; 0 failed; 0 skipped; finished in 484.07ms (313.06ms CPU time)

Ran 11 tests for test/modules/voting-power/extensions/OperatorsWhitelist.t.sol:OperatorsWhitelistTest
[PASS] test_DisableWhitelistAndRegister() (gas: 188486)
[PASS] test_DisableWhitelistAndRegisterOperatorVault() (gas: 468611)
[PASS] test_Location() (gas: 569)
[PASS] test_RegisterOperator_RevertIfNotWhitelisted() (gas: 36811)
[PASS] test_SetWhitelistStatus_RevertIfAlreadySet() (gas: 133365)
[PASS] test_SetWhitelistStatus_RevertIfNotWhitelisted() (gas: 36503)
[PASS] test_UnwhitelistOperator_RegisteredOperatorGetsUnregistered() (gas: 306437)
[PASS] test_UnwhitelistOperator_RevertIfNotWhitelisted() (gas: 34355)
[PASS] test_WhitelistEnabledByDefault() (gas: 7738)
[PASS] test_WhitelistOperatorAndRegister() (gas: 220687)
[PASS] test_WhitelistOperator_RevertIfAlreadyWhitelisted() (gas: 80347)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 197.05ms (2.57ms CPU time)

Ran 6 tests for test/modules/common/permissions/OzAccessControl.t.sol:OzAccessControlTest
[PASS] testChangeRoleForProtectedFunction() (gas: 137387)
[PASS] testGetRoleForFunctionSelector() (gas: 64891)
[PASS] testProtectedFunction_RevertIfCallerDoesNotHaveRole() (gas: 36907)
[PASS] testSetNoRoleForSelector() (gas: 92605)
[PASS] test_Location() (gas: 458)
[PASS] test_ProtectedFunction_DefaultAdminCanCall() (gas: 31147)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 351.08µs (102.58µs CPU time)

Ran 3 tests for test/modules/common/permissions/OzAccessManaged.t.sol:OzAccessManagedTest
[PASS] testCannotChangeAuthority() (gas: 32030)
[PASS] testProtectedAction_RevertsForNonAdmin() (gas: 40731)
[PASS] testProtectedAction_SucceedsForAdmin() (gas: 40292)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 282.29µs (46.33µs CPU time)

Ran 21 tests for test/examples/MyVotingPowerProvider.t.sol:MyVotingPowerProviderTest
[PASS] testGetOperatorsAt_withTime() (gas: 465284)
[PASS] test_CheckStakes() (gas: 101206176)
[PASS] test_DistributeRewards() (gas: 207)
[PASS] test_IncreaseNonce() (gas: 64127)
[PASS] test_IsOperatorRegisteredAt_withTime() (gas: 190985)
[PASS] test_RegisterOperator() (gas: 1730463)
[PASS] test_RegisterOperatorValid() (gas: 162784)
[PASS] test_RegisterOperatorVault() (gas: 1896716)
[PASS] test_RegisterOperatorVaultExternal() (gas: 1776681)
[PASS] test_RegisterOperatorVault_RevertIfOperatorNotRegistered() (gas: 1342433)
[PASS] test_RegisterOperator_RevertIfAlreadyRegistered() (gas: 192924)
[PASS] test_RegisterOperator_RevertIfNotEntity() (gas: 41922)
[PASS] test_SlashVault_InstantSlasher() (gas: 252)
[PASS] test_SlashVault_RevertIfNoSlasher() (gas: 251)
[PASS] test_SlashVault_VetoSlasherFlow() (gas: 188)
[PASS] test_SlashingData() (gas: 45917)
[PASS] test_UnregisterOperator() (gas: 281328)
[PASS] test_UnregisterOperator_RevertIfNotRegistered() (gas: 40281)
[PASS] test_registerOperatorWithSignature() (gas: 1641531)
[PASS] test_registerOperatorWithSignature_RevertIfInvalidSig() (gas: 1214036)
[PASS] test_unregisterOperatorWithSignature() (gas: 284862)
Suite result: ok. 21 passed; 0 failed; 0 skipped; finished in 275.21ms (79.95ms CPU time)

Ran 5 tests for test/modules/base/NetworkManager.t.sol:NetworkManagerTest
[PASS] test_DefaultsBeforeInit() (gas: 18077)
[PASS] test_InitializeAndCheckGetters() (gas: 95114)
[PASS] test_Location() (gas: 522)
[PASS] test_ReinitializeReverts() (gas: 104707)
[PASS] test_RevertNetworkManager_InvalidNetwork() (gas: 123081)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 326.88µs (85.83µs CPU time)

Ran 1 test for test/modules/common/permissions/NoPermissionManager.t.sol:NoPermissionManagerTest
[PASS] test_NoPermissionCheck() (gas: 29615)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 212.13µs (9.21µs CPU time)

Ran 3 tests for test/modules/voting-power/common/voting-power-calc/WeightedTokensVPCalc.t.sol:WeightedTokensVPCalcTest
[PASS] test_CheckStakesTokenWeight() (gas: 89189896)
[PASS] test_SetTokenWeight_RevertIfTooLarge() (gas: 99727)
[PASS] test_StakeToVotingPowerAt_UsesHistoricalTokenWeightAndNormalization() (gas: 8161652)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 241.44ms (66.48ms CPU time)

Ran 3 tests for test/modules/voting-power/common/voting-power-calc/NormalizedTokenDecimalsVPCalc.t.sol:NormalizedTokenDecimalsVPCalcTest
[PASS] test_CheckStakes_18() (gas: 84803926)
[PASS] test_CheckStakes_24() (gas: 84819127)
[PASS] test_CheckStakes_8() (gas: 84819864)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 362.53ms (181.24ms CPU time)

Ran 4 tests for test/modules/voting-power/common/voting-power-calc/WeightedVaultsVPCalc.t.sol:WeightedVaultsVPCalcTest
[PASS] test_CheckStakesVaultWeight() (gas: 85079230)
[PASS] test_GetVaultWeightAt_UsesHistoricalVaultWeight() (gas: 6758546)
[PASS] test_SetVaultWeight_RevertIfTooLarge() (gas: 99612)
[PASS] test_StakeToVotingPowerAt_UsesHistoricalVaultWeight() (gas: 7976122)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 284.76ms (81.99ms CPU time)

Ran 12 tests for test/modules/voting-power/extensions/OpNetVaultAutoDeploy.t.sol:OpNetVaultAutoDeployTest
[PASS] test_AutoDeployOnRegister() (gas: 1755847)
[PASS] test_AutoDeployOnRegister_SetMaxNetworkLimitHook() (gas: 1522149)
[PASS] test_AutoDeployOnRegister_WithoutSlasher() (gas: 1288671)
[PASS] test_BasicFlags() (gas: 33675)
[PASS] test_Location() (gas: 547)
[PASS] test_SetAutoDeployConfig_InvalidBurnerHook() (gas: 83764)
[PASS] test_SetAutoDeployConfig_InvalidBurnerParamsWithSlasher() (gas: 81640)
[PASS] test_SetAutoDeployConfig_InvalidCollateral() (gas: 39635)
[PASS] test_SetAutoDeployConfig_InvalidEpochDurationLessThanMinVaultEpochDuration() (gas: 59745)
[PASS] test_SetAutoDeployConfig_InvalidEpochDurationZero() (gas: 39940)
[PASS] test_SetAutoDeployConfig_InvalidWithSlasher() (gas: 48729)
[PASS] test_SetAutoDeployStatus() (gas: 59408)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 193.37ms (3.78ms CPU time)

Ran 13 tests for test/modules/settlement/sig-verifiers/SigVerifierBlsBn254ZK.t.sol:SigVerifierBlsBn254ZKTest
[PASS] test_Create() (gas: 4410955)
[PASS] test_FalseQuorumThreshold() (gas: 6971559)
[PASS] test_RevertInvalidLength() (gas: 4273)
[PASS] test_RevertInvalidTotalActiveValidators() (gas: 7225027)
[PASS] test_Revert_InvalidMaxValidators() (gas: 4411164)
[PASS] test_Revert_InvalidMaxValidatorsOrder() (gas: 4411206)
[PASS] test_Revert_InvalidMessageLength() (gas: 4428613)
[PASS] test_Revert_InvalidProofLength() (gas: 4434737)
[PASS] test_Revert_InvalidVerifier() (gas: 2943085)
[PASS] test_Revert_UnsupportedKeyTag() (gas: 4428462)
[PASS] test_ZeroValidators() (gas: 7240530)
[PASS] test_verifyQuorumSig() (gas: 7338033)
[PASS] test_verifyQuorumSig_FalseZkProof() (gas: 17595493375392676910)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 205.45ms (47.53ms CPU time)

Ran 1 test for test/modules/voting-power/extensions/OperatorVaults.t.sol:OperatorVaultsTest
[PASS] test_RegisterOperatorVault_OnlyOwnerCanCall() (gas: 1992389)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 223.55ms (796.92µs CPU time)

Ran 10 tests for test/libraries/structs/Checkpoints.t.sol:CheckpointsTrace256Test
[PASS] testAt(uint48[],uint256[],uint32) (runs: 1000, μ: 8514691, ~: 8926836)
[PASS] testLatest(uint48[],uint256[]) (runs: 1000, μ: 8198595, ~: 8521113)
[PASS] testLatestCheckpoint(uint48[],uint256[]) (runs: 1000, μ: 8306169, ~: 8840786)
[PASS] testLength(uint48[],uint256[]) (runs: 1000, μ: 8203980, ~: 8749046)
[PASS] testLookup(uint48[],uint256[],uint48) (runs: 1000, μ: 8159534, ~: 8744648)
[PASS] testPop(uint48[],uint256[]) (runs: 1000, μ: 4159304, ~: 3682768)
[PASS] testPush(uint48[],uint256[],uint48) (runs: 1000, μ: 8622067, ~: 9226284)
[PASS] testUpperLookupRecentCheckpoint(uint48[],uint256[],uint48) (runs: 1000, μ: 8231065, ~: 8776005)
[PASS] testUpperLookupRecentCheckpointWithHint(uint48[],uint256[],uint48,uint32) (runs: 1000, μ: 8024251, ~: 8515518)
[PASS] testUpperLookupRecentWithHint(uint48[],uint256[],uint48,uint32) (runs: 1000, μ: 8185301, ~: 8567134)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 8.78s (28.56s CPU time)

Ran 14 tests for test/modules/settlement/sig-verifiers/SigVerifierBlsBn254Simple.t.sol:SigVerifierBlsBn254SimpleTest
[PASS] test_FalseQuorumThreshold() (gas: 30731605)
[PASS] test_FalseValidatorSet() (gas: 34771549)
[PASS] test_RevertInvalidMessageLength() (gas: 34766028)
[PASS] test_RevertInvalidNonSignerIndex() (gas: 34770513)
[PASS] test_RevertInvalidNonSignersOrder() (gas: 34790079)
[PASS] test_RevertInvalidProofLength() (gas: 34760466)
[PASS] test_RevertInvalidProofOffset() (gas: 34785281)
[PASS] test_RevertTooManyValidators() (gas: 34766010)
[PASS] test_RevertUnsupportedKeyTag() (gas: 34765824)
[PASS] test_Revert_InvalidNonSignersOrder() (gas: 34781415)
[PASS] test_ZeroValidators() (gas: 18160632)
[PASS] test_verifyQuorumSig1() (gas: 35000314)
[PASS] test_verifyQuorumSig2() (gas: 39374545)
[PASS] test_verifyQuorumSig3() (gas: 33359383)
Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 8.57s (1.75s CPU time)

Ran 10 tests for test/libraries/structs/Checkpoints.t.sol:CheckpointsTrace208Test
[PASS] testAt(uint48[],uint208[],uint32) (runs: 1000, μ: 4411099, ~: 4647197)
[PASS] testLatest(uint48[],uint208[]) (runs: 1000, μ: 4388676, ~: 4696363)
[PASS] testLatestCheckpoint(uint48[],uint208[]) (runs: 1000, μ: 4337506, ~: 4605001)
[PASS] testLength(uint48[],uint208[]) (runs: 1000, μ: 4236541, ~: 4498443)
[PASS] testLookup(uint48[],uint208[],uint48) (runs: 1000, μ: 4294783, ~: 4500429)
[PASS] testPop(uint48[],uint208[]) (runs: 1000, μ: 2245128, ~: 1980076)
[PASS] testPush(uint48[],uint208[],uint48) (runs: 1000, μ: 4692595, ~: 5001138)
[PASS] testUpperLookupRecentCheckpoint(uint48[],uint208[],uint48) (runs: 1000, μ: 4541958, ~: 4768931)
[PASS] testUpperLookupRecentCheckpointWithHint(uint48[],uint208[],uint48,uint32) (runs: 1000, μ: 4305239, ~: 4593033)
[PASS] testUpperLookupRecentWithHint(uint48[],uint208[],uint48,uint32) (runs: 1000, μ: 4140060, ~: 4483474)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 9.63s (24.82s CPU time)

Ran 5 tests for test/modules/voting-power/common/voting-power-calc/PricedTokensChainlinkVPCalc.t.sol:PricedTokensChainlinkVPCalcTest
[PASS] test_ChainlinkCalcTracksRealPrice() (gas: 426391775)
[PASS] test_ChainlinkCalcTracksRealPriceHistorical() (gas: 168691650)
[PASS] test_ChainlinkCalcTracksRealPriceHistoricalZero() (gas: 144631144)
[PASS] test_ChainlinkCalcTracksRealPriceStale() (gas: 424570642)
[PASS] test_ChainlinkCalcTracksRealPriceWithInvert() (gas: 425866484)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 9.62s (18.38s CPU time)

Ran 10 tests for test/libraries/structs/Checkpoints.t.sol:CheckpointsTrace512Test
[PASS] testAt(uint48[],uint256[],uint32) (runs: 1000, μ: 12481346, ~: 13216627)
[PASS] testLatest(uint48[],uint256[]) (runs: 1000, μ: 11885609, ~: 12602335)
[PASS] testLatestCheckpoint(uint48[],uint256[]) (runs: 1000, μ: 12060946, ~: 12819677)
[PASS] testLength(uint48[],uint256[]) (runs: 1000, μ: 11950450, ~: 12851021)
[PASS] testLookup(uint48[],uint256[],uint48) (runs: 1000, μ: 11846751, ~: 12532512)
[PASS] testPop(uint48[],uint256[]) (runs: 1000, μ: 5881210, ~: 5329184)
[PASS] testPush(uint48[],uint256[],uint48) (runs: 1000, μ: 12859148, ~: 13571100)
[PASS] testUpperLookupRecentCheckpoint(uint48[],uint256[],uint48) (runs: 1000, μ: 11837557, ~: 12553767)
[PASS] testUpperLookupRecentCheckpointWithHint(uint48[],uint256[],uint48,uint32) (runs: 1000, μ: 11873427, ~: 12540829)
[PASS] testUpperLookupRecentWithHint(uint48[],uint256[],uint48,uint32) (runs: 1000, μ: 11710391, ~: 12258288)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 9.63s (36.63s CPU time)

╭---------------------------------------------------+-----------------+--------+--------+--------+---------╮
| examples/MyKeyRegistry.sol:MyKeyRegistry Contract |                 |        |        |        |         |
+==========================================================================================================+
| Deployment Cost                                   | Deployment Size |        |        |        |         |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
| 4913944                                           | 22503           |        |        |        |         |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                   |                 |        |        |        |         |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                     | Min             | Avg    | Median | Max    | # Calls |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
| hashTypedDataV4                                   | 6730            | 6730   | 6730   | 6730   | 4588    |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                        | 100690          | 100690 | 100690 | 100690 | 149     |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
| setKey                                            | 414935          | 418347 | 417209 | 453694 | 4588    |
╰---------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-------------------------------------------------+-----------------+--------+--------+--------+---------╮
| examples/MySettlement.sol:MySettlement Contract |                 |        |        |        |         |
+========================================================================================================+
| Deployment Cost                                 | Deployment Size |        |        |        |         |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| 2660648                                         | 12086           |        |        |        |         |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                 |                 |        |        |        |         |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                   | Min             | Avg    | Median | Max    | # Calls |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| SET_GENESIS_ROLE                                | 316             | 316    | 316    | 316    | 40      |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| VALIDATOR_SET_VERSION                           | 293             | 293    | 293    | 293    | 13      |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| getExtraDataAt                                  | 2699            | 2699   | 2699   | 2699   | 29      |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| getLastCommittedHeaderEpoch                     | 2417            | 2417   | 2417   | 2417   | 16      |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| getSigVerifier                                  | 7624            | 7624   | 7624   | 7624   | 31      |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| getTotalVotingPowerFromValSetHeaderAt           | 2666            | 2666   | 2666   | 2666   | 5       |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| grantRole                                       | 51664           | 51664  | 51664  | 51664  | 40      |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                      | 244584          | 244584 | 244584 | 244584 | 40      |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| setGenesis                                      | 156404          | 173786 | 174424 | 174436 | 28      |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| verifyQuorumSig                                 | 15379           | 43893  | 15918  | 218376 | 9       |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| verifyQuorumSigAt                               | 217091          | 232502 | 236873 | 243542 | 3       |
╰-------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-----------------------------------------------------+-----------------+---------+---------+---------+---------╮
| examples/MyValSetDriver.sol:MyValSetDriver Contract |                 |         |         |         |         |
+===============================================================================================================+
| Deployment Cost                                     | Deployment Size |         |         |         |         |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
| 3832343                                             | 19168           |         |         |         |         |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
|                                                     |                 |         |         |         |         |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name                                       | Min             | Avg     | Median  | Max     | # Calls |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
| MAX_QUORUM_THRESHOLD                                | 306             | 306     | 306     | 306     | 13      |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
| getCurrentEpoch                                     | 5840            | 5840    | 5840    | 5840    | 13      |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
| getCurrentEpochStart                                | 7527            | 7527    | 7527    | 7527    | 13      |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
| getEpochStart                                       | 6143            | 6143    | 6143    | 6143    | 43      |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
| getQuorumThresholds                                 | 10901           | 10901   | 10901   | 10901   | 13      |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
| getRequiredHeaderKeyTag                             | 4845            | 4845    | 4845    | 4845    | 13      |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
| initialize                                          | 1378650         | 1378658 | 1378662 | 1378662 | 40      |
╰-----------------------------------------------------+-----------------+---------+---------+---------+---------╯

╭-------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
| examples/MyVotingPowerProvider.sol:MyVotingPowerProvider Contract |                 |         |         |         |         |
+=============================================================================================================================+
| Deployment Cost                                                   | Deployment Size |         |         |         |         |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| 2857916                                                           | 13188           |         |         |         |         |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|                                                                   |                 |         |         |         |         |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name                                                     | Min             | Avg     | Median  | Max     | # Calls |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| NETWORK                                                           | 2449            | 2449    | 2449    | 2449    | 32      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| OPERATOR_REGISTRY                                                 | 261             | 261     | 261     | 261     | 45      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| SUBNETWORK                                                        | 661             | 2230    | 2661    | 2661    | 288     |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| SUBNETWORK_IDENTIFIER                                             | 2436            | 2436    | 2436    | 2436    | 32      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| VAULT_FACTORY                                                     | 306             | 306     | 306     | 306     | 38      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorStakes                                                 | 78880           | 78880   | 78880   | 78880   | 32      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorStakesAt                                               | 85178           | 85178   | 85178   | 85178   | 32      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVaults                                                 | 14584           | 15370   | 15370   | 16157   | 2       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVaultsAt                                               | 15293           | 15293   | 15293   | 15293   | 1       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPowers                                           | 91190           | 91845   | 91845   | 92501   | 64      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPowersAt                                         | 98147           | 98803   | 98803   | 99459   | 64      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperators                                                      | 14012           | 16294   | 14798   | 21567   | 4       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorsAt                                                    | 19709           | 21300   | 21300   | 22891   | 2       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSlashingData                                                   | 8251            | 8251    | 8251    | 8251    | 8       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSlashingDataAt                                                 | 10150           | 10328   | 10328   | 10507   | 2       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVotingPowers                                                   | 2485344         | 2485344 | 2485344 | 2485344 | 1       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVotingPowersAt                                                 | 2719064         | 2719064 | 2719064 | 2719064 | 1       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| hashTypedDataV4                                                   | 6786            | 6786    | 6786    | 6786    | 3       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| initialize                                                        | 293992          | 293992  | 293992  | 293992  | 22      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| invalidateOldSignatures                                           | 43532           | 43532   | 43532   | 43532   | 1       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorRegistered                                              | 8422            | 9187    | 8422    | 10718   | 9       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorRegisteredAt                                            | 6709            | 8348    | 9168    | 9168    | 3       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegistered(address)                                | 8435            | 8894    | 8435    | 10731   | 5       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegistered(address,address)                        | 8756            | 9138    | 8756    | 11052   | 6       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegisteredAt(address,address,uint48)               | 9558            | 9558    | 9558    | 9558    | 1       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegisteredAt(address,uint48)                       | 9120            | 9120    | 9120    | 9120    | 1       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| nonces                                                            | 2662            | 2662    | 2662    | 2662    | 5       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerOperator                                                  | 30726           | 113167  | 108840  | 143040  | 44      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerOperatorVault                                             | 86465           | 233307  | 236467  | 270667  | 38      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerOperatorWithSignature                                     | 39115           | 98985   | 98985   | 158856  | 2       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| stakeToVotingPower                                                | 870             | 870     | 870     | 870     | 96      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| stakeToVotingPowerAt                                              | 961             | 961     | 961     | 961     | 96      |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterOperator                                                | 27152           | 61651   | 78901   | 78901   | 3       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterOperatorVault                                           | 125247          | 125355  | 125355  | 125463  | 2       |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterOperatorWithSignature                                   | 94671           | 94671   | 94671   | 94671   | 1       |
╰-------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯

╭----------------------------------------------+-----------------+-------+--------+-------+---------╮
| lib/core/test/mocks/Token.sol:Token Contract |                 |       |        |       |         |
+===================================================================================================+
| Deployment Cost                              | Deployment Size |       |        |       |         |
|----------------------------------------------+-----------------+-------+--------+-------+---------|
| 519682                                       | 3161            |       |        |       |         |
|----------------------------------------------+-----------------+-------+--------+-------+---------|
|                                              |                 |       |        |       |         |
|----------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                | Min             | Avg   | Median | Max   | # Calls |
|----------------------------------------------+-----------------+-------+--------+-------+---------|
| approve                                      | 46306           | 46356 | 46366  | 46366 | 512     |
|----------------------------------------------+-----------------+-------+--------+-------+---------|
| balanceOf                                    | 559             | 1982  | 2559   | 2559  | 1783    |
|----------------------------------------------+-----------------+-------+--------+-------+---------|
| decimals                                     | 176             | 176   | 176    | 176   | 724     |
|----------------------------------------------+-----------------+-------+--------+-------+---------|
| totalSupply                                  | 2325            | 2325  | 2325   | 2325  | 749     |
|----------------------------------------------+-----------------+-------+--------+-------+---------|
| transfer                                     | 51553           | 51553 | 51553  | 51553 | 2       |
╰----------------------------------------------+-----------------+-------+--------+-------+---------╯

╭----------------------------------------------+-----------------+--------+--------+--------+---------╮
| lib/network/src/Network.sol:Network Contract |                 |        |        |        |         |
+=====================================================================================================+
| Deployment Cost                              | Deployment Size |        |        |        |         |
|----------------------------------------------+-----------------+--------+--------+--------+---------|
| 2726533                                      | 12607           |        |        |        |         |
|----------------------------------------------+-----------------+--------+--------+--------+---------|
|                                              |                 |        |        |        |         |
|----------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                | Min             | Avg    | Median | Max    | # Calls |
|----------------------------------------------+-----------------+--------+--------+--------+---------|
| execute                                      | 70058           | 70058  | 70058  | 70058  | 12      |
|----------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                   | 312525          | 312525 | 312525 | 312525 | 12      |
|----------------------------------------------+-----------------+--------+--------+--------+---------|
| schedule                                     | 64876           | 64876  | 64876  | 64876  | 12      |
╰----------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-------------------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------╮
| src/modules/settlement/sig-verifiers/SigVerifierBlsBn254Simple.sol:SigVerifierBlsBn254Simple Contract |                 |       |        |        |         |
+=============================================================================================================================================================+
| Deployment Cost                                                                                       | Deployment Size |       |        |        |         |
|-------------------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------|
| 0                                                                                                     | 4974            |       |        |        |         |
|-------------------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------|
|                                                                                                       |                 |       |        |        |         |
|-------------------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------|
| Function Name                                                                                         | Min             | Avg   | Median | Max    | # Calls |
|-------------------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------|
| AGGREGATED_PUBLIC_KEY_G1_HASH                                                                         | 161             | 161   | 161    | 161    | 15      |
|-------------------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------|
| VALIDATOR_SET_HASH_KECCAK256_HASH                                                                     | 183             | 183   | 183    | 183    | 15      |
|-------------------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------|
| verifyQuorumSig                                                                                       | 1265            | 52186 | 8494   | 181913 | 15      |
╰-------------------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------╯

╭-----------------------------------------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------╮
| src/modules/settlement/sig-verifiers/SigVerifierBlsBn254ZK.sol:SigVerifierBlsBn254ZK Contract |                 |                     |        |                      |         |
+=================================================================================================================================================================================+
| Deployment Cost                                                                               | Deployment Size |                     |        |                      |         |
|-----------------------------------------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| 0                                                                                             | 4094            |                     |        |                      |         |
|-----------------------------------------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
|                                                                                               |                 |                     |        |                      |         |
|-----------------------------------------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| Function Name                                                                                 | Min             | Avg                 | Median | Max                  | # Calls |
|-----------------------------------------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| TOTAL_ACTIVE_VALIDATORS_HASH                                                                  | 205             | 205                 | 205    | 205                  | 15      |
|-----------------------------------------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| VALIDATOR_SET_HASH_MIMC_HASH                                                                  | 227             | 227                 | 227    | 227                  | 13      |
|-----------------------------------------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| verifyQuorumSig                                                                               | 1281            | 2199436671923268638 | 15113  | 17595493375385706077 | 8       |
╰-----------------------------------------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------╯

╭----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| src/modules/voting-power/common/voting-power-calc/libraries/ChainlinkPriceFeed.sol:ChainlinkPriceFeed Contract |                 |        |        |        |         |
+=======================================================================================================================================================================+
| Deployment Cost                                                                                                | Deployment Size |        |        |        |         |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 1215688                                                                                                        | 6124            |        |        |        |         |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                                                |                 |        |        |        |         |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                                                  | Min             | Avg    | Median | Max    | # Calls |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getLatestPrice                                                                                                 | 45205           | 48236  | 49303  | 49770  | 217     |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getPriceAt(address,uint48,bool,uint48)                                                                         | 82942           | 82942  | 82942  | 82942  | 1       |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getPriceAt(address[2],uint48,bool[2],uint48[2])                                                                | 6905            | 373440 | 384696 | 398612 | 47      |
╰----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| src/modules/voting-power/extensions/logic/BaseRewardsLogic.sol:BaseRewardsLogic Contract |                 |        |        |        |         |
+=================================================================================================================================================+
| Deployment Cost                                                                          | Deployment Size |        |        |        |         |
|------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 321585                                                                                   | 1658            |        |        |        |         |
|------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                          |                 |        |        |        |         |
|------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                            | Min             | Avg    | Median | Max    | # Calls |
|------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| distributeOperatorRewards                                                                | 147122          | 147122 | 147122 | 147122 | 1       |
|------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| distributeStakerRewards                                                                  | 215666          | 215666 | 215666 | 215666 | 1       |
╰------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭--------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| src/modules/voting-power/extensions/logic/BaseSlashingLogic.sol:BaseSlashingLogic Contract |                 |        |        |        |         |
+===================================================================================================================================================+
| Deployment Cost                                                                            | Deployment Size |        |        |        |         |
|--------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 878339                                                                                     | 4439            |        |        |        |         |
|--------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                            |                 |        |        |        |         |
|--------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                              | Min             | Avg    | Median | Max    | # Calls |
|--------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| executeSlashVault                                                                          | 12081           | 115521 | 29372  | 391259 | 4       |
|--------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| slashVault                                                                                 | 12235           | 171484 | 79920  | 373690 | 9       |
╰--------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| src/modules/voting-power/extensions/logic/OpNetVaultAutoDeployLogic.sol:OpNetVaultAutoDeployLogic Contract |                 |       |        |       |         |
+=================================================================================================================================================================+
| Deployment Cost                                                                                            | Deployment Size |       |        |       |         |
|------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 1139807                                                                                                    | 5745            |       |        |       |         |
|------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                                                            |                 |       |        |       |         |
|------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                                                              | Min             | Avg   | Median | Max   | # Calls |
|------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| getAutoDeployConfig                                                                                        | 5052            | 5052  | 5052   | 5052  | 1       |
|------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| getAutoDeployedVault                                                                                       | 2588            | 2588  | 2588   | 2588  | 10      |
|------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| isAutoDeployEnabled                                                                                        | 2393            | 2393  | 2393   | 2393  | 6       |
|------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| isSetMaxNetworkLimitHookEnabled                                                                            | 437             | 937   | 437    | 2437  | 4       |
|------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| setAutoDeployStatus                                                                                        | 6508            | 19333 | 23608  | 23608 | 4       |
|------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| setSetMaxNetworkLimitHookStatus                                                                            | 23613           | 23613 | 23613  | 23613 | 1       |
╰------------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
| src/modules/voting-power/logic/VotingPowerProviderLogic.sol:VotingPowerProviderLogic Contract |                 |         |         |         |         |
+=========================================================================================================================================================+
| Deployment Cost                                                                               | Deployment Size |         |         |         |         |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| 3129075                                                                                       | 15680           |         |         |         |         |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|                                                                                               |                 |         |         |         |         |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name                                                                                 | Min             | Avg     | Median  | Max     | # Calls |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| _validateVault                                                                                | 35606           | 40104   | 40104   | 44603   | 2       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorStake                                                                              | 77113           | 77113   | 77113   | 77113   | 96      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorStakeAt                                                                            | 84068           | 84068   | 84068   | 84068   | 96      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorStakes                                                                             | 74403           | 178283  | 178283  | 282163  | 64      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorStakesAt                                                                           | 80612           | 195639  | 195639  | 310667  | 64      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVaults                                                                             | 10435           | 10447   | 10435   | 12266   | 433     |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVaultsAt                                                                           | 10968           | 10968   | 10968   | 10968   | 2       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVaultsLength                                                                       | 2694            | 2694    | 2694    | 2694    | 1       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPower                                                                        | 14717           | 93648   | 88025   | 146332  | 596     |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPowerAt                                                                      | 15017           | 119032  | 95724   | 488341  | 338     |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPowers                                                                       | 86090           | 249173  | 252252  | 315078  | 2148    |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPowersAt                                                                     | 92953           | 219506  | 219506  | 346060  | 128     |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperators                                                                                  | 10120           | 12402   | 11035   | 17417   | 8       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorsAt                                                                                | 15619           | 17081   | 17081   | 18543   | 4       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorsLength                                                                            | 2424            | 2424    | 2424    | 2424    | 3       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSharedVaults                                                                               | 10097           | 21955   | 24691   | 24691   | 10      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSharedVaultsAt                                                                             | 10793           | 10793   | 10793   | 10793   | 1       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSharedVaultsLength                                                                         | 2448            | 2448    | 2448    | 2448    | 1       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSlashingData                                                                               | 925             | 4819    | 4925    | 4925    | 454     |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSlashingDataAt                                                                             | 5974            | 6455    | 6331    | 8786    | 14      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getTokens                                                                                     | 19264           | 19264   | 19264   | 19264   | 1       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getTokensAt                                                                                   | 7797            | 14473   | 14618   | 20862   | 4       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getTokensLength                                                                               | 2484            | 2484    | 2484    | 2484    | 3       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVotingPowers                                                                               | 2398854         | 3265574 | 3750354 | 5646383 | 49      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVotingPowersAt                                                                             | 2660793         | 4658079 | 4658079 | 6655366 | 2       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorRegistered                                                                          | 2810            | 5309    | 5046    | 7342    | 36      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorRegisteredAt                                                                        | 3142            | 4781    | 5601    | 5601    | 6       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegistered(address)                                                            | 5069            | 5834    | 5069    | 7365    | 15      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegistered(address,address)                                                    | 5199            | 5552    | 5199    | 7495    | 13      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegisteredAt(address,address,uint48)                                           | 5878            | 5878    | 5878    | 5878    | 2       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegisteredAt(address,uint48)                                                   | 5599            | 5599    | 5599    | 5599    | 2       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isSharedVaultRegistered                                                                       | 5090            | 5855    | 5090    | 7386    | 3       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isSharedVaultRegisteredAt                                                                     | 5622            | 5622    | 5622    | 5622    | 1       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isTokenRegistered                                                                             | 4996            | 5761    | 4996    | 7292    | 3       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isTokenRegisteredAt                                                                           | 8429            | 8429    | 8429    | 8429    | 1       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerOperator                                                                              | 6552            | 64252   | 62495   | 96695   | 1624    |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerOperatorVault                                                                         | 17136           | 208023  | 208990  | 243212  | 483     |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerSharedVault                                                                           | 6648            | 118148  | 111583  | 145827  | 135     |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerToken                                                                                 | 426             | 73088   | 90466   | 90466   | 16      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setSlashingData                                                                               | 9808            | 15374   | 9808    | 32074   | 4       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterOperator                                                                            | 2924            | 44748   | 54313   | 54313   | 12      |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterOperatorVault                                                                       | 34188           | 97072   | 107553  | 107553  | 7       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterSharedVault                                                                         | 7390            | 38628   | 54247   | 54247   | 3       |
|-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterToken                                                                               | 7405            | 42547   | 54262   | 54262   | 4       |
╰-----------------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯

╭-------------------------------------------------+-----------------+---------------------+---------------------+----------------------+---------╮
| test/data/zk/Verifier_100.sol:Verifier Contract |                 |                     |                     |                      |         |
+================================================================================================================================================+
| Deployment Cost                                 | Deployment Size |                     |                     |                      |         |
|-------------------------------------------------+-----------------+---------------------+---------------------+----------------------+---------|
| 1435489                                         | 6421            |                     |                     |                      |         |
|-------------------------------------------------+-----------------+---------------------+---------------------+----------------------+---------|
|                                                 |                 |                     |                     |                      |         |
|-------------------------------------------------+-----------------+---------------------+---------------------+----------------------+---------|
| Function Name                                   | Min             | Avg                 | Median              | Max                  | # Calls |
|-------------------------------------------------+-----------------+---------------------+---------------------+----------------------+---------|
| verifyProof                                     | 309915          | 8797746687692979367 | 8797746687692979367 | 17595493375385648819 | 2       |
╰-------------------------------------------------+-----------------+---------------------+---------------------+----------------------+---------╯

╭---------------------------------------------------------------------+-----------------+------+--------+------+---------╮
| test/libraries/sigs/SigBlsBn12381.t.sol:SigBlsBls12381Test Contract |                 |      |        |      |         |
+========================================================================================================================+
| Deployment Cost                                                     | Deployment Size |      |        |      |         |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
| 2386969                                                             | 11758           |      |        |      |         |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
|                                                                     |                 |      |        |      |         |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name                                                       | Min             | Avg  | Median | Max  | # Calls |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
| verify                                                              | 1870            | 1870 | 1870   | 1870 | 1       |
╰---------------------------------------------------------------------+-----------------+------+--------+------+---------╯

╭----------------------------------------------------------------+-----------------+------+--------+------+---------╮
| test/libraries/sigs/SigBlsBn254.t.sol:SigBlsBn254Test Contract |                 |      |        |      |         |
+===================================================================================================================+
| Deployment Cost                                                | Deployment Size |      |        |      |         |
|----------------------------------------------------------------+-----------------+------+--------+------+---------|
| 2386169                                                        | 11754           |      |        |      |         |
|----------------------------------------------------------------+-----------------+------+--------+------+---------|
|                                                                |                 |      |        |      |         |
|----------------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name                                                  | Min             | Avg  | Median | Max  | # Calls |
|----------------------------------------------------------------+-----------------+------+--------+------+---------|
| verify                                                         | 1799            | 1799 | 1799   | 1799 | 1       |
╰----------------------------------------------------------------+-----------------+------+--------+------+---------╯

╭----------------------------------------------------------------------------+-----------------+------+--------+------+---------╮
| test/libraries/sigs/SigEcdsaSecp256k1.t.sol:SigEcdsaSecp256k1Test Contract |                 |      |        |      |         |
+===============================================================================================================================+
| Deployment Cost                                                            | Deployment Size |      |        |      |         |
|----------------------------------------------------------------------------+-----------------+------+--------+------+---------|
| 1610499                                                                    | 7880            |      |        |      |         |
|----------------------------------------------------------------------------+-----------------+------+--------+------+---------|
|                                                                            |                 |      |        |      |         |
|----------------------------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name                                                              | Min             | Avg  | Median | Max  | # Calls |
|----------------------------------------------------------------------------+-----------------+------+--------+------+---------|
| verify                                                                     | 1775            | 1775 | 1775   | 1775 | 1       |
╰----------------------------------------------------------------------------+-----------------+------+--------+------+---------╯

╭---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/libraries/structs/Checkpoints.t.sol:CheckpointsTrace208Test Contract |                 |       |        |       |         |
+================================================================================================================================+
| Deployment Cost                                                           | Deployment Size |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 2713553                                                                   | 13389           |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                           |                 |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                             | Min             | Avg   | Median | Max   | # Calls |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| pop                                                                       | 23586           | 23586 | 23586  | 23586 | 2       |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| push                                                                      | 26424           | 26518 | 26466  | 26736 | 256     |
╰---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/libraries/structs/Checkpoints.t.sol:CheckpointsTrace256Test Contract |                 |       |        |       |         |
+================================================================================================================================+
| Deployment Cost                                                           | Deployment Size |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 2738984                                                                   | 13516           |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                           |                 |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                             | Min             | Avg   | Median | Max   | # Calls |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| push                                                                      | 29721           | 29877 | 29805  | 30129 | 256     |
╰---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/libraries/structs/Checkpoints.t.sol:CheckpointsTrace512Test Contract |                 |       |        |       |         |
+================================================================================================================================+
| Deployment Cost                                                           | Deployment Size |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 3141073                                                                   | 15524           |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                           |                 |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                             | Min             | Avg   | Median | Max   | # Calls |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| push                                                                      | 32861           | 32882 | 32885  | 32885 | 256     |
╰---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭-----------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/libraries/structs/PersistentSet.t.sol:PersistentSetTest Contract |                 |       |        |       |         |
+============================================================================================================================+
| Deployment Cost                                                       | Deployment Size |       |        |       |         |
|-----------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 2778830                                                               | 13715           |       |        |       |         |
|-----------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                       |                 |       |        |       |         |
|-----------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                         | Min             | Avg   | Median | Max   | # Calls |
|-----------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| remove                                                                | 26607           | 48119 | 48119  | 69632 | 2       |
╰-----------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭-------------------------------------------------------------+----------------------+----------------------+----------------------+----------------------+---------╮
| test/libraries/utils/BN12381.t.sol:BLS12381Harness Contract |                      |                      |                      |                      |         |
+===================================================================================================================================================================+
| Deployment Cost                                             | Deployment Size      |                      |                      |                      |         |
|-------------------------------------------------------------+----------------------+----------------------+----------------------+----------------------+---------|
| 313737                                                      | 1233                 |                      |                      |                      |         |
|-------------------------------------------------------------+----------------------+----------------------+----------------------+----------------------+---------|
|                                                             |                      |                      |                      |                      |         |
|-------------------------------------------------------------+----------------------+----------------------+----------------------+----------------------+---------|
| Function Name                                               | Min                  | Avg                  | Median               | Max                  | # Calls |
|-------------------------------------------------------------+----------------------+----------------------+----------------------+----------------------+---------|
| isInSubgroup                                                | 17874786921033470516 | 17874786921033470516 | 17874786921033470516 | 17874786921033470516 | 1       |
|-------------------------------------------------------------+----------------------+----------------------+----------------------+----------------------+---------|
| xCubePlus4                                                  | 1058                 | 1077                 | 1077                 | 1097                 | 2       |
╰-------------------------------------------------------------+----------------------+----------------------+----------------------+----------------------+---------╯

╭-------------------------------------------------------------------------+-----------------+------+--------+------+---------╮
| test/libraries/utils/InputNormalizer.t.sol:InputNormalizerTest Contract |                 |      |        |      |         |
+============================================================================================================================+
| Deployment Cost                                                         | Deployment Size |      |        |      |         |
|-------------------------------------------------------------------------+-----------------+------+--------+------+---------|
| 1602692                                                                 | 7841            |      |        |      |         |
|-------------------------------------------------------------------------+-----------------+------+--------+------+---------|
|                                                                         |                 |      |        |      |         |
|-------------------------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name                                                           | Min             | Avg  | Median | Max  | # Calls |
|-------------------------------------------------------------------------+-----------------+------+--------+------+---------|
| normalizeDoubleDim                                                      | 2940            | 2940 | 2940   | 2940 | 1       |
|-------------------------------------------------------------------------+-----------------+------+--------+------+---------|
| normalizeSingleDim                                                      | 2361            | 2361 | 2361   | 2361 | 1       |
╰-------------------------------------------------------------------------+-----------------+------+--------+------+---------╯

╭-------------------------------------------------------+-----------------+------+--------+------+---------╮
| test/libraries/utils/KeyTag.t.sol:KeyTagTest Contract |                 |      |        |      |         |
+==========================================================================================================+
| Deployment Cost                                       | Deployment Size |      |        |      |         |
|-------------------------------------------------------+-----------------+------+--------+------+---------|
| 1494374                                               | 7300            |      |        |      |         |
|-------------------------------------------------------+-----------------+------+--------+------+---------|
|                                                       |                 |      |        |      |         |
|-------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name                                         | Min             | Avg  | Median | Max  | # Calls |
|-------------------------------------------------------+-----------------+------+--------+------+---------|
| getKeyTag                                             | 552             | 582  | 582    | 613  | 2       |
|-------------------------------------------------------+-----------------+------+--------+------+---------|
| getTag                                                | 482             | 482  | 482    | 482  | 1       |
|-------------------------------------------------------+-----------------+------+--------+------+---------|
| getType                                               | 483             | 483  | 483    | 483  | 1       |
|-------------------------------------------------------+-----------------+------+--------+------+---------|
| serialize                                             | 1787            | 1787 | 1787   | 1787 | 1       |
╰-------------------------------------------------------+-----------------+------+--------+------+---------╯

╭---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/libraries/utils/ValSetVerifier.t.sol:ValSetVerifierContract Contract |                 |       |        |       |         |
+================================================================================================================================+
| Deployment Cost                                                           | Deployment Size |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 539296                                                                    | 2276            |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                           |                 |       |        |       |         |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                             | Min             | Avg   | Median | Max   | # Calls |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| verifyIsActive                                                            | 56160           | 56301 | 56160  | 57120 | 7       |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| verifyKey                                                                 | 70130           | 70404 | 70130  | 71090 | 7       |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| verifyOperator                                                            | 55860           | 56005 | 55860  | 56820 | 7       |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| verifyVault                                                               | 78930           | 79177 | 78960  | 79890 | 8       |
|---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| verifyVotingPower                                                         | 55860           | 56005 | 55860  | 56820 | 7       |
╰---------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭---------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------╮
| test/mocks/KeyBlsBls12381Mock.sol:KeyBlsBls12381Mock Contract |                 |                     |        |                      |         |
+=================================================================================================================================================+
| Deployment Cost                                               | Deployment Size |                     |        |                      |         |
|---------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| 977358                                                        | 4302            |                     |        |                      |         |
|---------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
|                                                               |                 |                     |        |                      |         |
|---------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| Function Name                                                 | Min             | Avg                 | Median | Max                  | # Calls |
|---------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| deserialize                                                   | 1010            | 1010                | 1010   | 1010                 | 1       |
|---------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| equal                                                         | 1423            | 1436                | 1436   | 1450                 | 2       |
|---------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| fromBytes                                                     | 945             | 9055                | 9055   | 17165                | 2       |
|---------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| wrap                                                          | 1026            | 3972174871340779258 | 16229  | 17874786921033470377 | 9       |
|---------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------|
| zeroKey                                                       | 804             | 804                 | 804    | 804                  | 1       |
╰---------------------------------------------------------------+-----------------+---------------------+--------+----------------------+---------╯

╭---------------------------------------------------------+-----------------+------+--------+------+---------╮
| test/mocks/KeyBlsBn254Mock.sol:KeyBlsBn254Mock Contract |                 |      |        |      |         |
+============================================================================================================+
| Deployment Cost                                         | Deployment Size |      |        |      |         |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| 628154                                                  | 2687            |      |        |      |         |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
|                                                         |                 |      |        |      |         |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name                                           | Min             | Avg  | Median | Max  | # Calls |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| deserialize                                             | 828             | 828  | 828    | 828  | 1       |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| equal                                                   | 1180            | 1193 | 1193   | 1207 | 2       |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| fromBytes                                               | 807             | 1379 | 1379   | 1952 | 2       |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| wrap                                                    | 788             | 1022 | 1021   | 1182 | 264     |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| zeroKey                                                 | 562             | 562  | 562    | 562  | 1       |
╰---------------------------------------------------------+-----------------+------+--------+------+---------╯

╭---------------------------------------------------------------------+-----------------+------+--------+------+---------╮
| test/mocks/KeyEcdsaSecp256k1Mock.sol:KeyEcdsaSecp256k1Mock Contract |                 |      |        |      |         |
+========================================================================================================================+
| Deployment Cost                                                     | Deployment Size |      |        |      |         |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
| 347774                                                              | 1390            |      |        |      |         |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
|                                                                     |                 |      |        |      |         |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name                                                       | Min             | Avg  | Median | Max  | # Calls |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
| deserialize                                                         | 755             | 755  | 755    | 755  | 1       |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
| equal                                                               | 837             | 837  | 837    | 837  | 2       |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
| fromBytes                                                           | 776             | 1087 | 1087   | 1399 | 2       |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
| wrap                                                                | 575             | 575  | 575    | 575  | 4       |
|---------------------------------------------------------------------+-----------------+------+--------+------+---------|
| zeroKey                                                             | 374             | 374  | 374    | 374  | 1       |
╰---------------------------------------------------------------------+-----------------+------+--------+------+---------╯

╭---------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/mocks/RewarderMock.sol:RewarderMock Contract |                 |        |        |        |         |
+==========================================================================================================+
| Deployment Cost                                   | Deployment Size |        |        |        |         |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
| 211160                                            | 758             |        |        |        |         |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                   |                 |        |        |        |         |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                     | Min             | Avg    | Median | Max    | # Calls |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
| distributeOperatorRewards                         | 154018          | 154018 | 154018 | 154018 | 1       |
|---------------------------------------------------+-----------------+--------+--------+--------+---------|
| distributeStakerRewards                           | 222446          | 222446 | 222446 | 222446 | 1       |
╰---------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-------------------------------------------------------------------+-----------------+------+--------+------+---------╮
| test/mocks/SigVerifierFalseMock.sol:SigVerifierFalseMock Contract |                 |      |        |      |         |
+======================================================================================================================+
| Deployment Cost                                                   | Deployment Size |      |        |      |         |
|-------------------------------------------------------------------+-----------------+------+--------+------+---------|
| 179999                                                            | 614             |      |        |      |         |
|-------------------------------------------------------------------+-----------------+------+--------+------+---------|
|                                                                   |                 |      |        |      |         |
|-------------------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name                                                     | Min             | Avg  | Median | Max  | # Calls |
|-------------------------------------------------------------------+-----------------+------+--------+------+---------|
| verifyQuorumSig                                                   | 1093            | 1093 | 1093   | 1093 | 1       |
╰-------------------------------------------------------------------+-----------------+------+--------+------+---------╯

╭---------------------------------------------------------+-----------------+------+--------+------+---------╮
| test/mocks/SigVerifierMock.sol:SigVerifierMock Contract |                 |      |        |      |         |
+============================================================================================================+
| Deployment Cost                                         | Deployment Size |      |        |      |         |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| 180215                                                  | 615             |      |        |      |         |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
|                                                         |                 |      |        |      |         |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name                                           | Min             | Avg  | Median | Max  | # Calls |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| verifyQuorumSig                                         | 1094            | 1094 | 1094   | 1094 | 10      |
╰---------------------------------------------------------+-----------------+------+--------+------+---------╯

╭-------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/mocks/SlasherMock.sol:SlasherMock Contract |                 |        |        |        |         |
+========================================================================================================+
| Deployment Cost                                 | Deployment Size |        |        |        |         |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| 326654                                          | 1292            |        |        |        |         |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                 |                 |        |        |        |         |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                   | Min             | Avg    | Median | Max    | # Calls |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| executeSlashVault                               | 44234           | 146097 | 61846  | 416462 | 4       |
|-------------------------------------------------+-----------------+--------+--------+--------+---------|
| slashVault                                      | 45374           | 202802 | 114874 | 400244 | 9       |
╰-------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
| test/mocks/VotingPowerProviderSemiFull.sol:VotingPowerProviderSemiFull Contract |                 |         |         |         |         |
+===========================================================================================================================================+
| Deployment Cost                                                                 | Deployment Size |         |         |         |         |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| 3709156                                                                         | 17124           |         |         |         |         |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|                                                                                 |                 |         |         |         |         |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name                                                                   | Min             | Avg     | Median  | Max     | # Calls |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| NETWORK                                                                         | 2443            | 2443    | 2443    | 2443    | 6       |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| OPERATOR_REGISTRY                                                               | 350             | 350     | 350     | 350     | 1124    |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| SUBNETWORK                                                                      | 719             | 1136    | 719     | 2719    | 9931    |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| VAULT_FACTORY                                                                   | 284             | 284     | 284     | 284     | 121     |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| distributeOperatorRewards                                                       | 24854           | 24854   | 24854   | 24854   | 1       |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| distributeStakerRewards                                                         | 27110           | 27110   | 27110   | 27110   | 1       |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPowers                                                         | 258357          | 258357  | 258357  | 258357  | 2020    |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getRewarder                                                                     | 2432            | 2432    | 2432    | 2432    | 4       |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSharedVaults                                                                 | 29142           | 29142   | 29142   | 29142   | 8       |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSlasher                                                                      | 2519            | 2519    | 2519    | 2519    | 4       |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSlashingData                                                                 | 8273            | 8273    | 8273    | 8273    | 3       |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVotingPowers                                                                 | 2456108         | 3310040 | 3840067 | 3840067 | 47      |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| initialize                                                                      | 345805          | 345805  | 345805  | 345805  | 40      |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerOperator                                                                | 113472          | 114689  | 113472  | 147672  | 1124    |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerSharedVault                                                             | 138549          | 149883  | 138549  | 172749  | 121     |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setRewarder                                                                     | 25218           | 36288   | 36288   | 47358   | 4       |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setSlasher                                                                      | 25228           | 32460   | 30268   | 47368   | 11      |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| slashVault                                                                      | 25676           | 25676   | 25676   | 25676   | 1       |
|---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| stakeToVotingPower                                                              | 915             | 915     | 915     | 915     | 9924    |
╰---------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯

╭--------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/modules/base/NetworkManager.t.sol:TestNetworkManager Contract |                 |       |        |       |         |
+=========================================================================================================================+
| Deployment Cost                                                    | Deployment Size |       |        |       |         |
|--------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 346454                                                             | 1384            |       |        |       |         |
|--------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                    |                 |       |        |       |         |
|--------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                      | Min             | Avg   | Median | Max   | # Calls |
|--------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| NETWORK                                                            | 2329            | 2329  | 2329   | 2329  | 2       |
|--------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| SUBNETWORK                                                         | 2572            | 2572  | 2572   | 2572  | 2       |
|--------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| SUBNETWORK_IDENTIFIER                                              | 2435            | 2435  | 2435   | 2435  | 2       |
|--------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| initialize                                                         | 24220           | 55579 | 69627  | 69639 | 5       |
╰--------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭--------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/modules/base/OzEIP712.t.sol:TestOzEIP712 Contract |                 |       |        |       |         |
+=============================================================================================================+
| Deployment Cost                                        | Deployment Size |       |        |       |         |
|--------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 607189                                                 | 2590            |       |        |       |         |
|--------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                        |                 |       |        |       |         |
|--------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                          | Min             | Avg   | Median | Max   | # Calls |
|--------------------------------------------------------+-----------------+-------+--------+-------+---------|
| eip712Domain                                           | 10880           | 10880 | 10880  | 10880 | 1       |
|--------------------------------------------------------+-----------------+-------+--------+-------+---------|
| hashTypedDataV4                                        | 6652            | 6652  | 6652   | 6652  | 2       |
|--------------------------------------------------------+-----------------+-------+--------+-------+---------|
| hashTypedDataV4CrossChain                              | 6543            | 6543  | 6543   | 6543  | 1       |
|--------------------------------------------------------+-----------------+-------+--------+-------+---------|
| initialize                                             | 25314           | 84794 | 99667  | 99667 | 5       |
╰--------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭--------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/modules/base/PermissionManager.t.sol:TestPermissionManager Contract |                 |       |        |       |         |
+===============================================================================================================================+
| Deployment Cost                                                          | Deployment Size |       |        |       |         |
|--------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 177603                                                                   | 603             |       |        |       |         |
|--------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                          |                 |       |        |       |         |
|--------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                            | Min             | Avg   | Median | Max   | # Calls |
|--------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| initialize                                                               | 67820           | 67820 | 67820  | 67820 | 2       |
|--------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| protectedAction                                                          | 23348           | 23394 | 23394  | 23440 | 2       |
╰--------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/modules/base/VotingPowerCalcManager.t.sol:TestVotingPowerCalcManager Contract |                 |       |        |       |         |
+=========================================================================================================================================+
| Deployment Cost                                                                    | Deployment Size |       |        |       |         |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 250232                                                                             | 939             |       |        |       |         |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                                    |                 |       |        |       |         |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                                      | Min             | Avg   | Median | Max   | # Calls |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| initialize                                                                         | 23666           | 58589 | 67320  | 67320 | 5       |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| stakeToVotingPower                                                                 | 774             | 786   | 786    | 798   | 2       |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| stakeToVotingPowerAt                                                               | 880             | 880   | 880    | 880   | 1       |
╰------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭--------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/modules/common/permissions/NoPermissionManager.t.sol:TestNoPermissionManager Contract |                 |       |        |       |         |
+=================================================================================================================================================+
| Deployment Cost                                                                            | Deployment Size |       |        |       |         |
|--------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 125551                                                                                     | 362             |       |        |       |         |
|--------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                                            |                 |       |        |       |         |
|--------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                                              | Min             | Avg   | Median | Max   | # Calls |
|--------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| actionRequiringNoPermission                                                                | 21161           | 21161 | 21161  | 21161 | 1       |
|--------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| initialize                                                                                 | 45141           | 45141 | 45141  | 45141 | 1       |
╰--------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/modules/common/permissions/OzAccessControl.t.sol:TestOzAccessControl Contract |                 |       |        |       |         |
+=========================================================================================================================================+
| Deployment Cost                                                                    | Deployment Size |       |        |       |         |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 428368                                                                             | 1763            |       |        |       |         |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                                    |                 |       |        |       |         |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                                      | Min             | Avg   | Median | Max   | # Calls |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| ADMIN_ROLE                                                                         | 304             | 304   | 304    | 304   | 1       |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| getRole                                                                            | 2640            | 2640  | 2640   | 2640  | 2       |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| grantRole                                                                          | 51417           | 51417 | 51417  | 51417 | 1       |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| initialize                                                                         | 73689           | 73689 | 73689  | 73689 | 6       |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| protectedFunction                                                                  | 25889           | 25915 | 25889  | 25954 | 5       |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| setSelectorRole                                                                    | 27977           | 41499 | 48261  | 48261 | 3       |
╰------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭------------------------------------------------------------------------------+-----------------+------+--------+------+---------╮
| test/modules/common/permissions/OzAccessManaged.t.sol:MockAuthority Contract |                 |      |        |      |         |
+=================================================================================================================================+
| Deployment Cost                                                              | Deployment Size |      |        |      |         |
|------------------------------------------------------------------------------+-----------------+------+--------+------+---------|
| 133454                                                                       | 424             |      |        |      |         |
|------------------------------------------------------------------------------+-----------------+------+--------+------+---------|
|                                                                              |                 |      |        |      |         |
|------------------------------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name                                                                | Min             | Avg  | Median | Max  | # Calls |
|------------------------------------------------------------------------------+-----------------+------+--------+------+---------|
| canCall                                                                      | 2629            | 2629 | 2629   | 2629 | 2       |
╰------------------------------------------------------------------------------+-----------------+------+--------+------+---------╯

╭------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/modules/common/permissions/OzAccessManaged.t.sol:TestOzAccessManaged Contract |                 |       |        |       |         |
+=========================================================================================================================================+
| Deployment Cost                                                                    | Deployment Size |       |        |       |         |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 453845                                                                             | 1881            |       |        |       |         |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                                    |                 |       |        |       |         |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                                      | Min             | Avg   | Median | Max   | # Calls |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| initialize                                                                         | 23962           | 58212 | 69629  | 69629 | 4       |
|------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| protectedAction                                                                    | 29746           | 29784 | 29784  | 29822 | 2       |
╰------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/modules/common/permissions/OzOwnable.t.sol:TestOzOwnable Contract |                 |       |        |       |         |
+=============================================================================================================================+
| Deployment Cost                                                        | Deployment Size |       |        |       |         |
|------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 263112                                                                 | 999             |       |        |       |         |
|------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                        |                 |       |        |       |         |
|------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                          | Min             | Avg   | Median | Max   | # Calls |
|------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| initialize                                                             | 23940           | 60684 | 69871  | 69871 | 5       |
|------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| protectedAction                                                        | 23395           | 23421 | 23421  | 23447 | 4       |
|------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| transferOwnership                                                      | 28412           | 28412 | 28412  | 28412 | 1       |
╰------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭----------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/key-registry/KeyRegistry.t.sol:TestKeyRegistry Contract |                 |        |        |        |         |
+=============================================================================================================================+
| Deployment Cost                                                      | Deployment Size |        |        |        |         |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 5065945                                                              | 23206           |        |        |        |         |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                      |                 |        |        |        |         |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                        | Min             | Avg    | Median | Max    | # Calls |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKey                                                               | 813             | 7924   | 8559   | 21289  | 10      |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKeyAt                                                             | 988             | 8205   | 9401   | 22128  | 7       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKeyTags                                                           | 35892           | 35892  | 35892  | 35892  | 4       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKeyTagsAt                                                         | 36726           | 37166  | 36726  | 39181  | 6       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKeys()                                                            | 107285          | 107285 | 107285 | 107285 | 1       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKeys(address)                                                     | 44674           | 47588  | 44674  | 53418  | 3       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKeysAt(address,uint48)                                            | 48594           | 52075  | 52075  | 55556  | 2       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKeysAt(uint48)                                                    | 111136          | 111136 | 111136 | 111136 | 1       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKeysOperators                                                     | 17334           | 17334  | 17334  | 17334  | 1       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKeysOperatorsAt                                                   | 18549           | 18549  | 18549  | 18549  | 1       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getKeysOperatorsLength                                               | 2439            | 2439   | 2439   | 2439   | 1       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperator                                                          | 2989            | 3001   | 3001   | 3025   | 5       |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| hashTypedDataV4                                                      | 6752            | 6752   | 6752   | 6752   | 15      |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                           | 100160          | 100160 | 100160 | 100160 | 14      |
|----------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setKey                                                               | 31243           | 241235 | 293623 | 532805 | 18      |
╰----------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/settlement/Settlement.t.sol:TestSettlement Contract |                 |        |        |        |         |
+=========================================================================================================================+
| Deployment Cost                                                  | Deployment Size |        |        |        |         |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 2401040                                                          | 10886           |        |        |        |         |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                  |                 |        |        |        |         |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                    | Min             | Avg    | Median | Max    | # Calls |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| VALIDATOR_SET_VERSION                                            | 249             | 249    | 249    | 249    | 9       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| commitValSetHeader                                               | 26385           | 94056  | 54835  | 193392 | 14      |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getCaptureTimestampFromValSetHeader                              | 4728            | 4728   | 4728   | 4728   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getCaptureTimestampFromValSetHeaderAt                            | 2676            | 2676   | 2676   | 2676   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getExtraData                                                     | 4768            | 4768   | 4768   | 4768   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getExtraDataAt                                                   | 2655            | 2655   | 2655   | 2655   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getLastCommittedHeaderEpoch                                      | 2417            | 2417   | 2417   | 2417   | 2       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getQuorumThresholdFromValSetHeader                               | 4699            | 4699   | 4699   | 4699   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getQuorumThresholdFromValSetHeaderAt                             | 2603            | 2603   | 2603   | 2603   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getRequiredKeyTagFromValSetHeader                                | 4730            | 4730   | 4730   | 4730   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getRequiredKeyTagFromValSetHeaderAt                              | 2654            | 2654   | 2654   | 2654   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getSigVerifier                                                   | 4700            | 5553   | 4700   | 10354  | 10      |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getSigVerifierAt                                                 | 6140            | 6958   | 6140   | 8595   | 3       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getTotalVotingPowerFromValSetHeader                              | 4633            | 4633   | 4633   | 4633   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getTotalVotingPowerFromValSetHeaderAt                            | 2644            | 2644   | 2644   | 2644   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getValSetHeader                                                  | 11830           | 11830  | 11830  | 11830  | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getValSetHeaderAt                                                | 9633            | 9633   | 9633   | 9633   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getValSetHeaderHash                                              | 11842           | 11842  | 11842  | 11842  | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getValSetHeaderHashAt                                            | 9786            | 9786   | 9786   | 9786   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getValidatorsSszMRootFromValSetHeader                            | 4635            | 4635   | 4635   | 4635   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getValidatorsSszMRootFromValSetHeaderAt                          | 2647            | 2647   | 2647   | 2647   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getVersionFromValSetHeader                                       | 4675            | 4675   | 4675   | 4675   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getVersionFromValSetHeaderAt                                     | 2622            | 2622   | 2622   | 2622   | 1       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                       | 124545          | 159328 | 159328 | 194112 | 16      |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isValSetHeaderCommittedAt                                        | 2614            | 2614   | 2614   | 2614   | 3       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setGenesis                                                       | 25641           | 107018 | 147068 | 147068 | 6       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setSigVerifier                                                   | 23864           | 46268  | 57470  | 57470  | 3       |
|------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| verifyQuorumSigAt                                                | 3887            | 3887   | 3887   | 3887   | 1       |
╰------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/valset-driver/EpochManager.t.sol:TestEpochManager Contract |                 |        |        |        |         |
+================================================================================================================================+
| Deployment Cost                                                         | Deployment Size |        |        |        |         |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 988967                                                                  | 4355            |        |        |        |         |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                         |                 |        |        |        |         |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                           | Min             | Avg    | Median | Max    | # Calls |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| deserializeEpochDurationData                                            | 632             | 632    | 632    | 632    | 1       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getCurrentEpoch                                                         | 2597            | 5167   | 5863   | 5863   | 10      |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getCurrentEpochDuration                                                 | 5544            | 5544   | 5544   | 5544   | 1       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getCurrentEpochDurationData                                             | 2529            | 4055   | 4055   | 5581   | 2       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getCurrentEpochStart                                                    | 7409            | 7409   | 7409   | 7409   | 2       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getCurrentValuePublic                                                   | 2614            | 6491   | 5496   | 8270   | 11      |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getEpochDuration                                                        | 5772            | 6999   | 6999   | 8227   | 2       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getEpochDurationDataByIndex                                             | 5792            | 5792   | 5792   | 5792   | 2       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getEpochDurationDataByTimestamp                                         | 5842            | 5842   | 5842   | 5842   | 1       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getEpochIndex                                                           | 5374            | 5815   | 6036   | 6036   | 3       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getEpochStart                                                           | 6039            | 7266   | 7266   | 8494   | 2       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getNextEpoch                                                            | 5208            | 6041   | 6041   | 6875   | 6       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getNextEpochDuration                                                    | 5169            | 5809   | 5793   | 7793   | 8       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getNextEpochStart                                                       | 5249            | 8463   | 9793   | 14120  | 7       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                              | 44826           | 124127 | 137341 | 137341 | 14      |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| pushTestCheckpoint                                                      | 51895           | 59250  | 59250  | 66606  | 4       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| serializeEpochDurationData                                              | 701             | 701    | 701    | 701    | 1       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setEpochDuration(uint48)                                                | 33754           | 59387  | 40422  | 91169  | 5       |
|-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setEpochDuration(uint48,uint48,uint48)                                  | 82394           | 82394  | 82394  | 82394  | 1       |
╰-------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
| test/modules/valset-driver/ValSetDriver.t.sol:TestValSetDriver Contract |                 |         |         |         |         |
+===================================================================================================================================+
| Deployment Cost                                                         | Deployment Size |         |         |         |         |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| 3708869                                                                 | 16932           |         |         |         |         |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|                                                                         |                 |         |         |         |         |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name                                                           | Min             | Avg     | Median  | Max     | # Calls |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| addQuorumThreshold                                                      | 24252           | 44576   | 25534   | 102986  | 4       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| addSettlement                                                           | 24275           | 40523   | 24368   | 103030  | 5       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| addVotingPowerProvider                                                  | 24284           | 56255   | 26633   | 103039  | 5       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getCommitterSlotDuration                                                | 4823            | 4823    | 4823    | 4823    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getCommitterSlotDurationAt                                              | 5681            | 6500    | 5681    | 8140    | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getConfig                                                               | 124850          | 124850  | 124850  | 124850  | 5       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getConfigAt                                                             | 133734          | 134826  | 133734  | 136193  | 9       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getKeysProvider                                                         | 7493            | 7493    | 7493    | 7493    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getKeysProviderAt                                                       | 8281            | 8281    | 8281    | 8281    | 1       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getMaxValidatorsCount                                                   | 4882            | 4882    | 4882    | 4882    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getMaxValidatorsCountAt                                                 | 5715            | 6534    | 5715    | 8174    | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getMaxVotingPower                                                       | 7100            | 7100    | 7100    | 7100    | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getMaxVotingPowerAt                                                     | 7887            | 8870    | 7887    | 10346   | 5       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getMinInclusionVotingPower                                              | 7121            | 7121    | 7121    | 7121    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getMinInclusionVotingPowerAt                                            | 7865            | 8684    | 7865    | 10324   | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getNumAggregators                                                       | 4830            | 4830    | 4830    | 4830    | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getNumAggregatorsAt                                                     | 5708            | 6937    | 6937    | 8167    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getNumCommitters                                                        | 4859            | 4859    | 4859    | 4859    | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getNumCommittersAt                                                      | 5648            | 6877    | 6877    | 8107    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getQuorumThresholds                                                     | 18665           | 19336   | 19336   | 20007   | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getQuorumThresholdsAt                                                   | 19813           | 19813   | 19813   | 19813   | 1       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getRequiredHeaderKeyTag                                                 | 4823            | 4823    | 4823    | 4823    | 1       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getRequiredHeaderKeyTagAt                                               | 5637            | 6866    | 6866    | 8096    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getRequiredKeyTags                                                      | 35784           | 35878   | 35878   | 35972   | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getRequiredKeyTagsAt                                                    | 36600           | 37545   | 36788   | 39247   | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSettlements                                                          | 10895           | 16551   | 18735   | 20023   | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSettlementsAt                                                        | 19927           | 19927   | 19927   | 19927   | 1       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVerificationType                                                     | 4868            | 4868    | 4868    | 4868    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVerificationTypeAt                                                   | 5660            | 6889    | 6889    | 8119    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVotingPowerProviders                                                 | 18714           | 24916   | 26554   | 27842   | 4       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVotingPowerProvidersAt                                               | 19908           | 19908   | 19908   | 19908   | 1       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| initialize                                                              | 1112573         | 1112573 | 1112573 | 1112573 | 15      |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isQuorumThresholdRegistered                                             | 3165            | 4283    | 4283    | 5401    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isQuorumThresholdRegisteredAt                                           | 5957            | 5957    | 5957    | 5957    | 1       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isSettlementRegistered                                                  | 3123            | 4241    | 4241    | 5359    | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isSettlementRegisteredAt                                                | 5962            | 5962    | 5962    | 5962    | 1       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isVotingPowerProviderRegistered                                         | 3124            | 4614    | 5360    | 5360    | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isVotingPowerProviderRegisteredAt                                       | 3375            | 5113    | 5982    | 5982    | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| removeQuorumThreshold                                                   | 24294           | 44801   | 31338   | 78771   | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| removeSettlement                                                        | 24253           | 44767   | 31288   | 78760   | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| removeVotingPowerProvider                                               | 24242           | 44756   | 31277   | 78749   | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setCommitterSlotDuration                                                | 23844           | 33870   | 28311   | 55015   | 4       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setKeysProvider                                                         | 24318           | 30364   | 30364   | 36411   | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setMaxValidatorsCount                                                   | 23847           | 37209   | 32758   | 55024   | 3       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setMaxVotingPower                                                       | 23769           | 51065   | 35255   | 80531   | 5       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setMinInclusionVotingPower                                              | 52419           | 66513   | 66513   | 80607   | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setNumAggregators                                                       | 23827           | 33610   | 32709   | 54975   | 5       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setNumCommitters                                                        | 23893           | 33686   | 32792   | 55058   | 5       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setRequiredHeaderKeyTag                                                 | 32774           | 43907   | 43907   | 55040   | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setRequiredKeyTags                                                      | 35586           | 46247   | 46247   | 56908   | 2       |
|-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setVerificationType                                                     | 23889           | 37209   | 32736   | 55002   | 3       |
╰-------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯

╭--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
| test/modules/voting-power/VotingPowerProvider.t.sol:TestVotingPowerProvider Contract |                 |         |         |         |         |
+================================================================================================================================================+
| Deployment Cost                                                                      | Deployment Size |         |         |         |         |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| 3260870                                                                              | 15051           |         |         |         |         |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|                                                                                      |                 |         |         |         |         |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name                                                                        | Min             | Avg     | Median  | Max     | # Calls |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| NETWORK                                                                              | 2427            | 2427    | 2427    | 2427    | 33      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| OPERATOR_REGISTRY                                                                    | 328             | 328     | 328     | 328     | 46      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| SUBNETWORK                                                                           | 683             | 1602    | 683     | 2683    | 1536    |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| SUBNETWORK_IDENTIFIER                                                                | 2502            | 2502    | 2502    | 2502    | 32      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| VAULT_FACTORY                                                                        | 306             | 306     | 306     | 306     | 58      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorStake                                                                     | 80662           | 80662   | 80662   | 80662   | 96      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorStakeAt                                                                   | 87663           | 87663   | 87663   | 87663   | 96      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorStakes                                                                    | 288005          | 288005  | 288005  | 288005  | 32      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorStakesAt                                                                  | 316687          | 316687  | 316687  | 316687  | 32      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVaults                                                                    | 14584           | 15370   | 15370   | 16157   | 2       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVaultsAt                                                                  | 15250           | 15250   | 15250   | 15250   | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVaultsLength                                                              | 6016            | 6016    | 6016    | 6016    | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPower                                                               | 18893           | 55547   | 55547   | 92201   | 192     |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPowerAt                                                             | 19342           | 73146   | 100049  | 100049  | 288     |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPowers                                                              | 320341          | 320998  | 320998  | 321655  | 64      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorVotingPowersAt                                                            | 351395          | 352052  | 352052  | 352709  | 64      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperators                                                                         | 14057           | 16339   | 14843   | 21612   | 4       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorsAt                                                                       | 19754           | 21345   | 21345   | 22936   | 2       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getOperatorsLength                                                                   | 5597            | 5597    | 5597    | 5597    | 3       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSharedVaults                                                                      | 14077           | 14863   | 14863   | 15650   | 2       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSharedVaultsAt                                                                    | 14929           | 14929   | 14929   | 14929   | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSharedVaultsLength                                                                | 5623            | 5623    | 5623    | 5623    | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSlashingData                                                                      | 8251            | 8251    | 8251    | 8251    | 12      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getSlashingDataAt                                                                    | 10551           | 11778   | 11778   | 13006   | 2       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getTokens                                                                            | 23199           | 23199   | 23199   | 23199   | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getTokensAt                                                                          | 11697           | 18631   | 18905   | 25020   | 4       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getTokensLength                                                                      | 5613            | 5613    | 5613    | 5613    | 3       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVotingPowers                                                                      | 5752113         | 5752113 | 5752113 | 5752113 | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| getVotingPowersAt                                                                    | 6761210         | 6761210 | 6761210 | 6761210 | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| hashTypedDataV4                                                                      | 6743            | 6743    | 6743    | 6743    | 3       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| initialize                                                                           | 178640          | 181555  | 178640  | 269031  | 31      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| invalidateOldSignatures                                                              | 43554           | 43554   | 43554   | 43554   | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorRegistered                                                                 | 8488            | 9253    | 8488    | 10784   | 9       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorRegisteredAt                                                               | 6687            | 8326    | 9146    | 9146    | 3       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegistered(address)                                                   | 8435            | 8894    | 8435    | 10731   | 5       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegistered(address,address)                                           | 8712            | 9094    | 8712    | 11008   | 6       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegisteredAt(address,address,uint48)                                  | 9470            | 9470    | 9470    | 9470    | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isOperatorVaultRegisteredAt(address,uint48)                                          | 9120            | 9120    | 9120    | 9120    | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isSharedVaultRegistered                                                              | 8466            | 8466    | 8466    | 8466    | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isSharedVaultRegisteredAt                                                            | 9188            | 9188    | 9188    | 9188    | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isTokenRegistered                                                                    | 8373            | 8373    | 8373    | 8373    | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| isTokenRegisteredAt                                                                  | 11996           | 11996   | 11996   | 11996   | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| nonces                                                                               | 2598            | 2598    | 2598    | 2598    | 5       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerOperator()                                                                   | 143163          | 143163  | 143163  | 143163  | 4       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerOperator(address)                                                            | 31090           | 90354   | 87175   | 121375  | 41      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerOperatorVault                                                                | 42340           | 213918  | 234213  | 268413  | 44      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerOperatorWithSignature                                                        | 39159           | 99068   | 99068   | 158978  | 2       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerSharedVault                                                                  | 31138           | 90142   | 72657   | 170550  | 12      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| registerToken                                                                        | 24886           | 100171  | 115181  | 115181  | 14      |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| setSlashingData                                                                      | 56782           | 56782   | 56782   | 56782   | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| stakeToVotingPower                                                                   | 893             | 893     | 893     | 893     | 480     |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| stakeToVotingPowerAt                                                                 | 961             | 961     | 961     | 961     | 576     |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterOperator()                                                                 | 78857           | 78857   | 78857   | 78857   | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterOperator(address)                                                          | 27461           | 50763   | 50763   | 74065   | 2       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterOperatorVault                                                              | 123003          | 123111  | 123111  | 123219  | 2       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterOperatorWithSignature                                                      | 94671           | 94671   | 94671   | 94671   | 1       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterSharedVault                                                                | 32143           | 53179   | 53179   | 74215   | 2       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| unregisterToken                                                                      | 32135           | 61711   | 74207   | 78791   | 3       |
|--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| validateVault                                                                        | 39049           | 43547   | 43547   | 48046   | 2       |
╰--------------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯

╭-----------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/modules/voting-power/common/voting-power-calc/NormalizedTokenDecimalsVPCalc.t.sol:MockToken Contract |                 |       |        |       |         |
+================================================================================================================================================================+
| Deployment Cost                                                                                           | Deployment Size |       |        |       |         |
|-----------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 543826                                                                                                    | 3105            |       |        |       |         |
|-----------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|                                                                                                           |                 |       |        |       |         |
|-----------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name                                                                                             | Min             | Avg   | Median | Max   | # Calls |
|-----------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| approve                                                                                                   | 46294           | 46315 | 46318  | 46318 | 162     |
|-----------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| balanceOf                                                                                                 | 559             | 2074  | 2559   | 2559  | 669     |
|-----------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| decimals                                                                                                  | 182             | 182   | 182    | 182   | 165     |
|-----------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| totalSupply                                                                                               | 2325            | 2325  | 2325   | 2325  | 345     |
╰-----------------------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯

╭-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/voting-power/common/voting-power-calc/NormalizedTokenDecimalsVPCalc.t.sol:TestVotingPowerProvider Contract |                 |        |        |        |         |
+================================================================================================================================================================================+
| Deployment Cost                                                                                                         | Deployment Size |        |        |        |         |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 3413163                                                                                                                 | 15755           |        |        |        |         |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                                                         |                 |        |        |        |         |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                                                           | Min             | Avg    | Median | Max    | # Calls |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| NETWORK                                                                                                                 | 2494            | 2494   | 2494   | 2494   | 96      |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| OPERATOR_REGISTRY                                                                                                       | 306             | 306    | 306    | 306    | 96      |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| SUBNETWORK                                                                                                              | 2661            | 2661   | 2661   | 2661   | 192     |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| SUBNETWORK_IDENTIFIER                                                                                                   | 2480            | 2480   | 2480   | 2480   | 96      |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| VAULT_FACTORY                                                                                                           | 306             | 306    | 306    | 306    | 96      |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVaults                                                                                                       | 14584           | 14584  | 14584  | 14584  | 96      |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVotingPower                                                                                                  | 81966           | 82238  | 82371  | 82377  | 96      |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getSlashingData                                                                                                         | 8251            | 8251   | 8251   | 8251   | 96      |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                                                                              | 178618          | 223813 | 223813 | 269009 | 6       |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperator                                                                                                        | 87153           | 88221  | 87153  | 121353 | 96      |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperatorVault                                                                                                   | 234179          | 235257 | 234191 | 268391 | 96      |
|-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| stakeToVotingPower                                                                                                      | 6535            | 6807   | 6940   | 6946   | 96      |
╰-------------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/voting-power/common/voting-power-calc/PricedTokensChainlinkVPCalc.t.sol:TestVotingPowerProvider Contract |                 |        |        |        |         |
+==============================================================================================================================================================================+
| Deployment Cost                                                                                                       | Deployment Size |        |        |        |         |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 4209699                                                                                                               | 19438           |        |        |        |         |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                                                       |                 |        |        |        |         |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                                                         | Min             | Avg    | Median | Max    | # Calls |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| NETWORK                                                                                                               | 2494            | 2494   | 2494   | 2494   | 232     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| OPERATOR_REGISTRY                                                                                                     | 306             | 306    | 306    | 306    | 232     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| SUBNETWORK                                                                                                            | 2661            | 2661   | 2661   | 2661   | 484     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| SUBNETWORK_IDENTIFIER                                                                                                 | 2480            | 2480   | 2480   | 2480   | 232     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| VAULT_FACTORY                                                                                                         | 306             | 306    | 306    | 306    | 232     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVaults                                                                                                     | 14584           | 14584  | 14584  | 14584  | 232     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVotingPower                                                                                                | 145977          | 148978 | 150075 | 150542 | 212     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVotingPowerAt                                                                                              | 492674          | 492674 | 492674 | 492674 | 40      |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getSlashingData                                                                                                       | 8251            | 8251   | 8251   | 8251   | 232     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getTokenHops                                                                                                          | 11443           | 11443  | 11443  | 11443  | 8       |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getTokenHopsAt                                                                                                        | 12204           | 12204  | 12204  | 12204  | 8       |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getTokenPrice                                                                                                         | 63723           | 63909  | 63723  | 64190  | 5       |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getTokenPriceAt                                                                                                       | 22035           | 324251 | 399826 | 413742 | 7       |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                                                                            | 269009          | 269009 | 269009 | 269009 | 8       |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperator                                                                                                      | 87175           | 88354  | 87175  | 121375 | 232     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperatorVault                                                                                                 | 234179          | 235368 | 234191 | 268391 | 232     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setTokenHops                                                                                                          | 24752           | 99863  | 99077  | 119453 | 18      |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| stakeToVotingPower                                                                                                    | 70520           | 73521  | 74618  | 75085  | 212     |
|-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| stakeToVotingPowerAt                                                                                                  | 410789          | 410789 | 410789 | 410789 | 40      |
╰-----------------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/voting-power/common/voting-power-calc/WeightedTokensVPCalc.t.sol:TestVotingPowerProvider Contract |                 |        |        |        |         |
+=======================================================================================================================================================================+
| Deployment Cost                                                                                                | Deployment Size |        |        |        |         |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 3833106                                                                                                        | 17697           |        |        |        |         |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                                                |                 |        |        |        |         |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                                                  | Min             | Avg    | Median | Max    | # Calls |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| NETWORK                                                                                                        | 2427            | 2427   | 2427   | 2427   | 33      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| OPERATOR_REGISTRY                                                                                              | 328             | 328    | 328    | 328    | 33      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| SUBNETWORK                                                                                                     | 2661            | 2661   | 2661   | 2661   | 102     |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| SUBNETWORK_IDENTIFIER                                                                                          | 2524            | 2524   | 2524   | 2524   | 33      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| VAULT_FACTORY                                                                                                  | 306             | 306    | 306    | 306    | 33      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVaults                                                                                              | 14584           | 14584  | 14584  | 14584  | 64      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVotingPower                                                                                         | 87024           | 88169  | 88169  | 89315  | 64      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVotingPowerAt                                                                                       | 93614           | 96260  | 96388  | 98843  | 5       |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getSlashingData                                                                                                | 8251            | 8251   | 8251   | 8251   | 33      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                                                                     | 178640          | 214796 | 178640 | 269031 | 5       |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperator                                                                                               | 87197           | 89269  | 87197  | 121397 | 33      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperatorVault                                                                                          | 234201          | 236283 | 234213 | 268413 | 33      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setTokenWeight                                                                                                 | 22209           | 56411  | 68502  | 68682  | 5       |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| stakeToVotingPower                                                                                             | 11571           | 12716  | 12716  | 13862  | 64      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| stakeToVotingPowerAt                                                                                           | 11737           | 14383  | 14511  | 16966  | 5       |
╰----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/voting-power/common/voting-power-calc/WeightedVaultsVPCalc.t.sol:TestVotingPowerProvider Contract |                 |        |        |        |         |
+=======================================================================================================================================================================+
| Deployment Cost                                                                                                | Deployment Size |        |        |        |         |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 3688414                                                                                                        | 17028           |        |        |        |         |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                                                |                 |        |        |        |         |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                                                  | Min             | Avg    | Median | Max    | # Calls |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| NETWORK                                                                                                        | 2427            | 2427   | 2427   | 2427   | 34      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| OPERATOR_REGISTRY                                                                                              | 306             | 306    | 306    | 306    | 34      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| SUBNETWORK                                                                                                     | 2661            | 2661   | 2661   | 2661   | 71      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| SUBNETWORK_IDENTIFIER                                                                                          | 2502            | 2502   | 2502   | 2502   | 34      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| VAULT_FACTORY                                                                                                  | 306             | 306    | 306    | 306    | 34      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVaults                                                                                              | 14584           | 14584  | 14584  | 14584  | 33      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVotingPower                                                                                         | 78905           | 78976  | 78905  | 81190  | 32      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorVotingPowerAt                                                                                       | 85516           | 88162  | 88290  | 90745  | 5       |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getSlashingData                                                                                                | 8251            | 8251   | 8251   | 8251   | 34      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getVaultWeightAt                                                                                               | 3097            | 6120   | 5871   | 8326   | 6       |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                                                                     | 178618          | 217357 | 178618 | 269009 | 7       |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperator                                                                                               | 87153           | 90170  | 87153  | 121353 | 34      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperatorVault                                                                                          | 234201          | 237228 | 234213 | 268413 | 34      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setVaultWeight                                                                                                 | 22140           | 57779  | 68433  | 68661  | 7       |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| stakeToVotingPower                                                                                             | 3474            | 3545   | 3474   | 5759   | 32      |
|----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| stakeToVotingPowerAt                                                                                           | 3639            | 6285   | 6413   | 8868   | 5       |
╰----------------------------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/voting-power/extensions/MultiToken.t.sol:TestMultiToken Contract |                 |        |        |        |         |
+======================================================================================================================================+
| Deployment Cost                                                               | Deployment Size |        |        |        |         |
|-------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 2700660                                                                       | 12461           |        |        |        |         |
|-------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                               |                 |        |        |        |         |
|-------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                 | Min             | Avg    | Median | Max    | # Calls |
|-------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                                    | 269030          | 269030 | 269030 | 269030 | 2       |
|-------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isTokenRegistered                                                             | 8372            | 9520   | 9520   | 10668  | 2       |
|-------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerToken                                                                 | 80730           | 80730  | 80730  | 80730  | 2       |
|-------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| unregisterToken                                                               | 78801           | 78801  | 78801  | 78801  | 1       |
╰-------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------╮
| test/modules/voting-power/extensions/OpNetVaultAutoDeploy.t.sol:TestOpNetVaultAutoDeploy Contract |                 |        |         |         |         |
+============================================================================================================================================================+
| Deployment Cost                                                                                   | Deployment Size |        |         |         |         |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| 3278762                                                                                           | 15203           |        |         |         |         |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
|                                                                                                   |                 |        |         |         |         |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| Function Name                                                                                     | Min             | Avg    | Median  | Max     | # Calls |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| NETWORK                                                                                           | 413             | 1413   | 1413    | 2413    | 6       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| OPERATOR_REGISTRY                                                                                 | 306             | 306    | 306     | 306     | 4       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| SUBNETWORK                                                                                        | 2712            | 2712   | 2712    | 2712    | 1       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| VAULT_CONFIGURATOR                                                                                | 327             | 327    | 327     | 327     | 3       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| VAULT_FACTORY                                                                                     | 284             | 284    | 284     | 284     | 3       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| getAutoDeployConfig                                                                               | 9118            | 9118   | 9118    | 9118    | 1       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| getAutoDeployedVault                                                                              | 6024            | 6024   | 6024    | 6024    | 5       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| getOperatorVaults                                                                                 | 14562           | 14955  | 14562   | 16135   | 4       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| getSlashingData                                                                                   | 1751            | 3917   | 1751    | 8251    | 18      |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| initialize                                                                                        | 329544          | 329544 | 329544  | 329544  | 12      |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| isAutoDeployEnabled                                                                               | 5567            | 5567   | 5567    | 5567    | 2       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| isSetMaxNetworkLimitHookEnabled                                                                   | 5655            | 5655   | 5655    | 5655    | 1       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| registerOperator                                                                                  | 78448           | 958443 | 1178938 | 1397450 | 4       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| setAutoDeployConfig                                                                               | 26834           | 34105  | 35955   | 40939   | 7       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| setAutoDeployStatus                                                                               | 30961           | 43786  | 48061   | 48061   | 4       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| setSetMaxNetworkLimitHookStatus                                                                   | 48077           | 48077  | 48077   | 48077   | 1       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| setSlashingData                                                                                   | 34482           | 34482  | 34482   | 34482   | 3       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| unregisterOperator                                                                                | 78879           | 78879  | 78879   | 78879   | 1       |
|---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------|
| unregisterOperatorVault                                                                           | 128129          | 128129 | 128129  | 128129  | 1       |
╰---------------------------------------------------------------------------------------------------+-----------------+--------+---------+---------+---------╯

╭---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/voting-power/extensions/OperatorVaults.t.sol:TestOperatorVaults Contract |                 |        |        |        |         |
+==============================================================================================================================================+
| Deployment Cost                                                                       | Deployment Size |        |        |        |         |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 2875023                                                                               | 13282           |        |        |        |         |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                       |                 |        |        |        |         |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                         | Min             | Avg    | Median | Max    | # Calls |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| OPERATOR_REGISTRY                                                                     | 283             | 283    | 283    | 283    | 1       |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| VAULT_FACTORY                                                                         | 328             | 328    | 328    | 328    | 2       |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getSlashingData                                                                       | 8251            | 8251   | 8251   | 8251   | 1       |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                                            | 268986          | 268986 | 268986 | 268986 | 1       |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isOperatorVaultRegistered                                                             | 8457            | 10179  | 10753  | 10753  | 4       |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperator                                                                      | 143118          | 143118 | 143118 | 143118 | 1       |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperatorVault                                                                 | 24556           | 151263 | 158545 | 270689 | 3       |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| unregisterOperatorVault(address)                                                      | 49385           | 49385  | 49385  | 49385  | 1       |
|---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| unregisterOperatorVault(address,address)                                              | 24600           | 75031  | 75031  | 125463 | 2       |
╰---------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/voting-power/extensions/OperatorsBlacklist.t.sol:TestOperatorsBlacklist Contract |                 |        |        |        |         |
+======================================================================================================================================================+
| Deployment Cost                                                                               | Deployment Size |        |        |        |         |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 2900473                                                                                       | 13385           |        |        |        |         |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                               |                 |        |        |        |         |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                                 | Min             | Avg    | Median | Max    | # Calls |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| OPERATOR_REGISTRY                                                                             | 283             | 283    | 283    | 283    | 2       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| blacklistOperator                                                                             | 24118           | 56516  | 51266  | 99414  | 4       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getSlashingData                                                                               | 8251            | 8251   | 8251   | 8251   | 6       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                                                    | 268986          | 268986 | 268986 | 268986 | 6       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isOperatorBlacklisted                                                                         | 2619            | 2619   | 2619   | 2619   | 5       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isOperatorRegistered                                                                          | 8422            | 9187   | 8422   | 10718  | 3       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperator                                                                              | 23635           | 104821 | 145415 | 145415 | 3       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| unblacklistOperator                                                                           | 23541           | 23838  | 23838  | 24136  | 2       |
╰-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/voting-power/extensions/OperatorsJail.t.sol:TestOperatorsJail Contract |                 |        |        |        |         |
+============================================================================================================================================+
| Deployment Cost                                                                     | Deployment Size |        |        |        |         |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 2951948                                                                             | 13623           |        |        |        |         |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                     |                 |        |        |        |         |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                       | Min             | Avg    | Median | Max    | # Calls |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| OPERATOR_REGISTRY                                                                   | 283             | 283    | 283    | 283    | 3       |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getOperatorJailedUntil                                                              | 2666            | 2666   | 2666   | 2666   | 5       |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                                          | 268986          | 268986 | 268986 | 268986 | 6       |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isOperatorJailed                                                                    | 2713            | 2713   | 2713   | 2713   | 7       |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isOperatorRegistered                                                                | 8422            | 9187   | 8422   | 10718  | 3       |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| jailOperator                                                                        | 22400           | 47399  | 43071  | 99769  | 6       |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperator                                                                    | 23685           | 86571  | 94556  | 145465 | 5       |
|-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| unjailOperator                                                                      | 23592           | 23889  | 23889  | 24187  | 2       |
╰-------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/voting-power/extensions/OperatorsWhitelist.t.sol:TestOperatorsWhitelist Contract |                 |        |        |        |         |
+======================================================================================================================================================+
| Deployment Cost                                                                               | Deployment Size |        |        |        |         |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 3002526                                                                                       | 13857           |        |        |        |         |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                               |                 |        |        |        |         |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                                 | Min             | Avg    | Median | Max    | # Calls |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| OPERATOR_REGISTRY                                                                             | 327             | 327    | 327    | 327    | 4       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| VAULT_FACTORY                                                                                 | 328             | 328    | 328    | 328    | 1       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getSlashingData                                                                               | 8251            | 8251   | 8251   | 8251   | 11      |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                                                    | 292872          | 292872 | 292872 | 292872 | 11      |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isOperatorRegistered                                                                          | 8443            | 9017   | 8443   | 10739  | 4       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isOperatorVaultRegistered(address)                                                            | 8457            | 8457   | 8457   | 8457   | 1       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isOperatorVaultRegistered(address,address)                                                    | 8734            | 8734   | 8734   | 8734   | 1       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isOperatorWhitelisted                                                                         | 2686            | 2686   | 2686   | 2686   | 2       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isWhitelistEnabled                                                                            | 2401            | 2401   | 2401   | 2401   | 4       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperator                                                                              | 25797           | 106270 | 145394 | 147621 | 6       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerOperatorVault                                                                         | 268468          | 268468 | 268468 | 268468 | 1       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setWhitelistStatus                                                                            | 23091           | 26973  | 23433  | 45003  | 6       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| unwhitelistOperator                                                                           | 24114           | 51888  | 51888  | 79663  | 2       |
|-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| whitelistOperator                                                                             | 24096           | 40079  | 45407  | 45407  | 4       |
╰-----------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯

╭-----------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/modules/voting-power/extensions/SharedVaults.t.sol:TestSharedVaults Contract |                 |        |        |        |         |
+==========================================================================================================================================+
| Deployment Cost                                                                   | Deployment Size |        |        |        |         |
|-----------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 2722913                                                                           | 12564           |        |        |        |         |
|-----------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|                                                                                   |                 |        |        |        |         |
|-----------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name                                                                     | Min             | Avg    | Median | Max    | # Calls |
|-----------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| VAULT_FACTORY                                                                     | 328             | 328    | 328    | 328    | 2       |
|-----------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize                                                                        | 269008          | 269008 | 269008 | 269008 | 2       |
|-----------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| isSharedVaultRegistered                                                           | 8465            | 9613   | 9613   | 10761  | 2       |
|-----------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerSharedVault                                                               | 170594          | 170594 | 170594 | 170594 | 2       |
|-----------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| unregisterSharedVault                                                             | 74215           | 74215  | 74215  | 74215  | 1       |
╰-----------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯


Ran 45 test suites in 10.50s (50.52s CPU time): 368 tests passed, 0 failed, 0 skipped (368 total tests)
```

## File: LICENSE

```
MIT License

Copyright (c) 2024 Symbiotic

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.
```

## File: package.json

```json
{
    "name": "@symbioticfi/relay-contracts",
    "version": "1.0.0",
    "description": "Symbiotic Relay smart contracts allowing construction of validator set using various mechanics, verification and management of operators' keys of various types, aggregated signatures verification, and validator set's running.",
    "homepage": "https://symbiotic.fi/relay",
    "bugs": "https://github.com/symbioticfi/relay-contracts/issues",
    "license": "MIT",
    "author": "Symbiotic Team",
    "files": [
        "examples/**/*",
        "src/**/*",
        "script/**/*",
        "test/mocks/**/*",
        "abis/**/*",
        "bindings/ts-wagmi/**/*"
    ],
    "repository": {
        "type": "git",
        "url": "https://github.com/symbioticfi/relay-contracts.git"
    },
    "keywords": ["solidity", "ethereum", "smart", "contracts", "security"],
    "dependencies": {
        "@openzeppelin/contracts": "5.4.0",
        "@openzeppelin/contracts-upgradeable": "5.4.0",
        "@symbioticfi/core": "1.0.3",
        "@symbioticfi/network": "1.0.0-rc.2",
        "@symbioticfi/rewards": "2.0.0"
    }
}
```

## File: README.md

````markdown
# Symbiotic Relay Smart Contracts

[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/symbioticfi/relay-contracts)
[![codecov](https://codecov.io/github/symbioticfi/relay-contracts/graph/badge.svg?token=9F5PUM6HB0)](https://codecov.io/github/symbioticfi/relay-contracts)

## Overview

Symbiotic Relay is a peer-to-peer side-network designed to collect and aggregate signatures from validators, maintain validator sets on the settlement contract.

To achieve that, Symbiotic provides a set of predefined smart contracts, in general, representing the following modules:

- [VotingPowerProvider](./src/modules/voting-power/) - provides the basic data regarding operators, vaults and their voting power, it allows constructing various onboarding schemes such as:
    - [OperatorsWhitelist](./src/modules/voting-power/extensions/OperatorsWhitelist.sol) - only whitelisted operators can register
    - [OperatorsBlacklist](./src/modules/voting-power/extensions/OperatorsBlacklist.sol) - blacklisted operators are unregistered and are forbidden to return back
    - [OperatorsJail](./src/modules/voting-power/extensions/OperatorsJail.sol) - operators can be jailed for some amount of time and register back after that
    - [SharedVaults](./src/modules/voting-power/extensions/SharedVaults.sol) - shared (with other networks) vaults (like the ones with NetworkRestakeDelegator) can be added
    - [OperatorVaults](./src/modules/voting-power/extensions/OperatorVaults.sol) - vaults that are attached to a single operator can be added
    - [MultiToken](./src/modules/voting-power/extensions/MultiToken.sol) - possible to add new supported tokens on the go
    - [OpNetVaultAutoDeploy](./src/modules/voting-power/extensions/OpNetVaultAutoDeploy.sol) - enable auto-creation of the configured by you vault on each operator registration
    - [VotingPowerCalculators](./src/modules/voting-power/common/voting-power-calc/) - there are several stake-to-votingPower conversion mechanisms you can use separately or combine:
        - [EqualStakeVPCalc](./src/modules/voting-power/common/voting-power-calc/EqualStakeVPCalc.sol) - voting power is equal to stake
        - [NormalizedTokenDecimalsVPCalc](./src/modules/voting-power/common/voting-power-calc/NormalizedTokenDecimalsVPCalc.sol) - all tokens' decimals are normalized to 18
        - [PricedTokensChainlinkVPCalc](./src/modules/voting-power/common/voting-power-calc/PricedTokensChainlinkVPCalc.sol) - voting power is calculated using Chainlink price feeds
        - [WeightedTokensVPCalc](./src/modules/voting-power/common/voting-power-calc/WeightedTokensVPCalc.sol) - voting power is affected by configured weights for tokens
        - [WeightedVaultsVPCalc](./src/modules/voting-power/common/voting-power-calc/WeightedVaultsVPCalc.sol) - voting power is affected by configured weights for vaults

    - Also, there are ready bindings for [slashing](./src/modules/voting-power/extensions/BaseSlashing.sol) and [rewards](./src/modules/voting-power/extensions/BaseRewards.sol)

- [KeyRegistry](./src/modules/key-registry/) - verifies and manages operators' keys; currently, these key types are supported:
    - [BlsBn254](./src/libraries/keys/KeyBlsBn254.sol) ([signature verification](./src/libraries/sigs/SigBlsBn254.sol))
    - [EcdsaSecp256k1](./src/libraries/keys/KeyEcdsaSecp256k1.sol) ([signature verification](./src/libraries/sigs/SigEcdsaSecp256k1.sol))
- [ValSetDriver](./src/modules/valset-driver/) - is used by the off-chain part of the Symbiotic Relay for validator set deriving and maintenance
- [Settlement](./src/modules/settlement/) - requires a compressed validator set (header) to be committed each epoch, but allows verifying signatures made by the validator set; currently, it supports the following verification mechanics:
    - [SimpleVerifier](./src/modules/settlement/sig-verifiers/SigVerifierBlsBn254Simple.sol) - requires the whole validator set to be inputted on the verification, but in a compressed and efficient way, so that it is the best choice to use up to around 125 validators
    - [ZKVerifier](./src/modules/settlement/sig-verifiers/SigVerifierBlsBn254ZK.sol) - uses ZK verification made with [gnark](https://github.com/Consensys/gnark), allowing larger validator sets with an almost constant verification gas cost

## Examples

Can be found [here](./examples/).

## Usage

### Dependencies

- Git ([installation](https://git-scm.com/downloads))
- Foundry ([installation](https://getfoundry.sh/introduction/installation/))

### Prerequisites

**Clone the repository**

```
git clone --recurse-submodules https://github.com/symbioticfi/relay-contracts.git
```

### Deploy Your Relay

The deployment tooling can be found at [`script/`](./script/) folder. It consists of [`RelayDeploy.sol`](./script/RelayDeploy.sol) Foundry script template [`relay-deploy.sh`](./script/relay-deploy.sh) bash script (the Relay smart contracts use external libraries for their implementations, so that it's not currently possible to use solely Foundry script for multi-chain deployment).

- [`RelayDeploy.sol`](./script/RelayDeploy.sol) - abstract base that wires common Symbiotic core helpers and exposes the four deployment hooks: KeyRegistry, VotingPowerProvider, Settlement, and ValVetDriver
- [`relay-deploy.sh`](./script/relay-deploy.sh) - orchestrates per-contract multi-chain deployments (uses Python inside to parse `toml` file)

The script deploys Relay modules under [OZ's TransparentUpgradeableProxy](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/proxy/transparent/TransparentUpgradeableProxy.sol) using [CreateX](https://github.com/pcaversaccio/createx) (it provides better control for production deployments and more simplified approaches for development).

#### Dependencies

- Python ([installation](https://www.python.org/downloads/))

#### Deployment

1. Implement your `MyRelayDeploy.sol` ([see example](./script/examples/MyRelayDeploy.sol)) - this Foundry script should include the deployment configuration of your Relay modules
    - you need to implement all virtual functions of `RelayDeploy.sol`
    - in constructor, need to input the path of the `toml` file
    - you are provided with additional helpers such as `getCore()`, `getKeyRegistry()`, `getVotingPowerProvider()`, etc. (see full list in [`RelayDeploy.sol`](./script/RelayDeploy.sol))

2. Implement your `my-relay-deploy.toml` ([see example](./script/examples/my-relay-deploy.toml)) - this configuration file should include RPC URLs that will be needed for the deployment, and which modules should be deployed on which chains
    - **do not replace [1234567890] placeholder with endpoint_url = ""**
    - the contracts are deployed in such order:
        1. KeyRegistry
        2. VotingPowerProvider
        3. Settlement
        4. ValSetDriver

3. Execute the deployment script, e.g.:

    ```bash
    ./script/relay-deploy.sh ./script/examples/MyRelayDeploy.sol ./script/examples/my-relay-deploy.toml --broadcast --ledger
    ```

    _Basic form is `./script/relay-deploy.sh <FoundryScript> <TomlConfig> <Any Foundry Flags>`_

At the end, your `toml` file will contain the addresses of the deployed Relay modules.

### Build, Test, and Format

```
forge build
forge test
forge fmt
```

**Configure environment**

Create `.env` based on the template:

```
ETH_RPC_URL=
ETHERSCAN_API_KEY=
```

## Security

Security audits can be found [here](./audits).
````

## File: remappings.txt

```
@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/
@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/
@symbioticfi/core/=lib/core/
@symbioticfi/network/=lib/network
@crypto-lib/=lib/crypto-lib/src/
@symbioticfi/rewards/=lib/rewards/
```
