0xc6feb234f6beea94e0d29d3690e3989efec7ce47

deployer: unknown relevance score: 0 status: partially_identified bytecode: 7741 bytes

DECOMPILED SOLIDITY (Heimdall)

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;

/// @title            Decompiled Contract
/// @author           Jonathan Becker <jonathan@jbecker.dev>
/// @custom:version   heimdall-rs v0.9.2
///
/// @notice           This contract was decompiled using the heimdall-rs decompiler.
///                     It was generated directly by tracing the EVM opcodes from this contract.
///                     As a result, it may not compile or even be valid solidity code.
///                     Despite this, it should be obvious what each function does. Overall
///                     logic should have been preserved throughout decompiling.
///
/// @custom:github    You can find the open-source decompiler here:
///                       https://heimdall.rs

contract DecompiledContract {
    uint256 public totalDelivered;
    uint256 public minRateWad;
    uint256 public minBridgeAmount;
    uint256 public perDayCap;
    mapping(bytes32 => bytes32) storage_map_a;
    uint256 public unresolved_735daef6;
    address public relayer;
    uint256 public totalFeesRetained;
    mapping(bytes32 => bytes32) storage_map_b;
    address public owner;
    uint64 public outNonce;
    address public pendingOwner;
    bytes32 store_h;
    uint256 public perTransferCap;
    uint256 public unresolved_c0745e04;
    mapping(bytes32 => bytes32) storage_map_c;
    
    event BridgePaused(address);
    event Event_c4d181c8();
    event CapsChanged(uint256, uint256);
    error IsPaused();
    event RelayerChanged(address);
    event BridgeUnpaused();
    event InventoryFunded(address, uint256);
    event InventoryWithdrawn(address, uint256);
    event Event_e5354f61();
    event Event_eddab605();
    event Event_ab140bf2();
    event OwnershipTransferStarted(address, address);
    event Refunded(uint64, address, uint256);
    event OracleChanged(address);
    event Event_83b57a2e();
    event OwnershipTransferred(address, address);
    
    /// @custom:selector    0x8c32a2b1
    /// @custom:signature   deposits(uint64 arg0) public view returns (bool)
    /// @param              arg0 ["uint64", "bytes8", "int64"]
    function deposits(uint64 arg0) public view returns (bool) {
        require(arg0 == (uint64(arg0)));
        uint64 var_b = arg0;
        return abi.encodePacked(address(storage_map_a[var_b]), storage_map_b[var_b], (bytes1(storage_map_c[var_b])));
    }
    
    /// @custom:selector    0x3f4ba83a
    /// @custom:signature   unpause() public
    function unpause() public {
        require(msg.sender == (address(owner)), CustomError_118cdaa7());
        outNonce = uint248(outNonce);
        emit BridgeUnpaused();
    }
    
    /// @custom:selector    0x22dc36e2
    /// @custom:signature   processed(uint64 arg0) public view returns (bool)
    /// @param              arg0 ["uint64", "bytes8", "int64"]
    function processed(uint64 arg0) public view returns (bool) {
        require(arg0 == (uint64(arg0)));
        uint64 var_b = arg0;
        return !(!bytes1(storage_map_a[var_b]));
    }
    
    /// @custom:selector    0x7edbceb1
    /// @custom:signature   withdrawPending() public
    function withdrawPending() public {
        require(0x02 - store_h, CustomError_3ee5aeb5());
        store_h = 0x02;
        address var_b = msg.sender;
        require(0 - storage_map_a[var_b]);
        var_b = msg.sender;
        storage_map_a[var_b] = 0;
        (bool success, bytes memory ret0) = address(msg.sender).transfer(storage_map_a[var_b]);
        require(ret0.length == 0);
        store_h = 0x01;
    }
    
    /// @custom:selector    0x212bf316
    /// @custom:signature   setCaps(uint256 arg0, uint256 arg1) public
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function setCaps(uint256 arg0, uint256 arg1) public {
        require(msg.sender == (address(owner)), CustomError_118cdaa7());
        perTransferCap = arg0;
        perDayCap = arg1;
        emit CapsChanged(arg0, arg1);
    }
    
    /// @custom:selector    0x58a61d3d
    /// @custom:signature   setRateTolerance(uint256 arg0) public
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function setRateTolerance(uint256 arg0) public {
        require(msg.sender == (address(owner)), CustomError_118cdaa7());
        require(!(arg0 > 0x2710), CustomError_019af637());
        unresolved_735daef6 = arg0;
        emit Event_eddab605(arg0);
    }
    
    /// @custom:selector    0x6548e9bc
    /// @custom:signature   setRelayer(address arg0) public
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function setRelayer(address arg0) public {
        require(arg0 == (address(arg0)));
        require(msg.sender == (address(owner)), CustomError_118cdaa7());
        require(address(arg0), CustomError_019af637());
        relayer = (address(arg0)) | (uint96(relayer));
        emit RelayerChanged(address(arg0));
    }
    
    /// @custom:selector    0xd7194ccb
    /// @custom:signature   refund(uint64 arg0) public
    /// @param              arg0 ["uint64", "bytes8", "int64"]
    function refund(uint64 arg0) public {
        require(arg0 == (uint64(arg0)));
        require(0x02 - store_h, CustomError_670c14a9());
        store_h = 0x02;
        require(msg.sender == (address(relayer)), CustomError_670c14a9());
        require(!(!msg.sender == (address(owner))), CustomError_670c14a9());
        uint64 var_b = uint64(arg0);
        require(address(storage_map_a[var_b]), CustomError_641ae858());
        require(!(bytes1(storage_map_c[var_b])), CustomError_641ae858());
        storage_map_c[var_b] = 0x01 | (uint248(storage_map_c[var_b]));
        (bool success, bytes memory ret0) = address(storage_map_a[var_b]).transfer(storage_map_b[var_b]);
        require(ret0.length == 0, CustomError_de75d15e());
        var_b = address(storage_map_a[var_b]);
        require(!(storage_map_a[var_b] > (storage_map_b[var_b] + storage_map_a[var_b])), CustomError_de75d15e());
        var_b = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        storage_map_a[var_b] = (storage_map_b[var_b]) + storage_map_a[var_b];
        emit Event_83b57a2e(uint64(arg0), address(storage_map_a[var_b]), storage_map_b[var_b]);
        emit Refunded(uint64(arg0), address(storage_map_a[var_b]), storage_map_b[var_b]);
        store_h = 0x01;
        emit Refunded(uint64(arg0), address(storage_map_a[var_b]), storage_map_b[var_b]);
        store_h = 0x01;
    }
    
    /// @custom:selector    0x9854175f
    /// @custom:signature   bridgeOut(address arg0, uint256 arg1) public payable returns (uint64)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function bridgeOut(address arg0, uint256 arg1) public payable returns (uint64) {
        require(arg0 == (address(arg0)));
        require(!(bytes1(outNonce / 0x010000000000000000000000000000000000000000)), CustomError_1309a563());
        require(!(msg.value < minBridgeAmount), CustomError_6bc60300());
        require(address(arg0), CustomError_d27b4443());
        require(uint64(outNonce / 0x01000000000000000000000000000000000000000000) - 0xffffffffffffffff, CustomError_d27b4443());
        outNonce = (uint64(0x01 + (outNonce / 0x01000000000000000000000000000000000000000000)) * 0x01000000000000000000000000000000000000000000) | (uint192(outNonce));
        uint256 var_d = var_d + 0x60;
        uint64 var_b = uint64(0x01 + (outNonce / 0x01000000000000000000000000000000000000000000));
        storage_map_a[var_b] = (address(var_d.length)) | (uint96(storage_map_a[var_b]));
        storage_map_b[var_b] = var_h;
        storage_map_c[var_b] = (var_i) | (uint248(storage_map_c[var_b]));
        emit Event_e5354f61(uint64(0x01 + (outNonce / 0x01000000000000000000000000000000000000000000)), msg.sender, address(arg0), msg.value, arg1);
        return uint64(0x01 + (outNonce / 0x01000000000000000000000000000000000000000000));
    }
    
    /// @custom:selector    0x2fe10ab7
    /// @custom:signature   Unresolved_2fe10ab7(uint256 arg0, uint256 arg1) public
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function Unresolved_2fe10ab7(uint256 arg0, uint256 arg1) public {
        require(msg.sender == (address(owner)), CustomError_118cdaa7());
        require(!(arg0 > arg1), CustomError_019af637());
        minRateWad = arg0;
        unresolved_c0745e04 = arg1;
        emit Event_c4d181c8(arg0, arg1);
    }
    
    /// @custom:selector    0xd7d66e71
    /// @custom:signature   setMinBridgeAmount(uint256 arg0) public
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function setMinBridgeAmount(uint256 arg0) public {
        require(msg.sender == (address(owner)), CustomError_118cdaa7());
        minBridgeAmount = arg0;
        emit Event_ab140bf2(arg0);
    }
    
    /// @custom:selector    0xd9c88e14
    /// @custom:signature   ownerWithdraw(address arg0, uint256 arg1) public
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function ownerWithdraw(address arg0, uint256 arg1) public {
        require(arg0 == (address(arg0)));
        require(msg.sender == (address(owner)), CustomError_118cdaa7());
        require(address(arg0), CustomError_8b2024a5());
        require(!(arg1 > address(this).balance), CustomError_8b2024a5());
        (bool success, bytes memory ret0) = address(arg0).transfer(arg1);
        require(ret0.length == 0, CustomError_019af637());
        emit InventoryWithdrawn(address(arg0), arg1);
    }
    
    /// @custom:selector    0x79ba5097
    /// @custom:signature   acceptOwnership() public
    function acceptOwnership() public {
        require(msg.sender == (address(pendingOwner)), CustomError_118cdaa7());
        pendingOwner = uint96(pendingOwner);
        owner = (address(msg.sender)) | (uint96(owner));
        emit OwnershipTransferred(address(owner), address(msg.sender));
    }
    
    /// @custom:selector    0xf2fde38b
    /// @custom:signature   transferOwnership(address arg0) public
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function transferOwnership(address arg0) public {
        require(arg0 == (address(arg0)));
        require(msg.sender == (address(owner)), CustomError_118cdaa7());
        pendingOwner = (address(arg0)) | (uint96(pendingOwner));
        emit OwnershipTransferStarted(address(owner), address(arg0));
    }
    
    /// @custom:selector    0xb60d4288
    /// @custom:signature   fund() public view
    function fund() public view {
        emit InventoryFunded(msg.sender, msg.value);
    }
    
    /// @custom:selector    0xf3f43703
    /// @custom:signature   pendingWithdrawals(address arg0) public view returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function pendingWithdrawals(address arg0) public view returns (uint256) {
        require(arg0 == (address(arg0)));
        address var_b = arg0;
        return storage_map_a[var_b];
    }
    
    /// @custom:selector    0x7adbf973
    /// @custom:signature   setOracle(address arg0) public
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function setOracle(address arg0) public {
        require(arg0 == (address(arg0)));
        require(msg.sender == (address(owner)), CustomError_118cdaa7());
        require(address(arg0), CustomError_019af637());
        outNonce = (address(arg0)) | (uint96(outNonce));
        emit OracleChanged(address(arg0));
    }
    
    /// @custom:selector    0x10385482
    /// @custom:signature   Unresolved_10385482(uint64 arg0, address arg1, uint256 arg2, uint256 arg3, uint256 arg4) public
    /// @param              arg0 ["uint64", "bytes8", "int64"]
    /// @param              arg1 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    /// @param              arg3 ["uint256", "bytes32", "int256"]
    /// @param              arg4 ["uint256", "bytes32", "int256"]
    function Unresolved_10385482(uint64 arg0, address arg1, uint256 arg2, uint256 arg3, uint256 arg4) public {
        require(arg0 == (uint64(arg0)));
        require(arg1 == (address(arg1)));
        require(msg.sender == (address(relayer)), CustomError_c64891a5());
        require(0x02 - store_h, CustomError_1309a563());
        store_h = 0x02;
        require(!(bytes1(outNonce / 0x010000000000000000000000000000000000000000)), CustomError_1309a563());
        uint64 var_b = uint64(arg0);
        require(!(bytes1(storage_map_a[var_b])), CustomError_3d16f9d9());
        var_b = uint64(arg0);
        storage_map_a[var_b] = 0x01 | (uint248(storage_map_a[var_b]));
        require(!(arg3 < arg4), CustomError_24dbc0ca());
        require(0 - arg2);
        require(address(outNonce));
        var_d = arg2;
        (bool success, bytes memory ret0) = address(outNonce).Unresolved_61e25d83(var_d); // staticcall
        uint256 var_e = var_e + (uint248(ret0.length + 0x1f));
        require(!((var_e + ret0.length) - var_e) < 0x20);
        require((var_e.length == ((var_e.length * 0x63) / 0x63)) | !0x63);
        require(0x64);
        require(!0x2710 > (unresolved_735daef6 + 0x2710));
        require((arg3 == ((arg3 * 0x0de0b6b3a7640000) / 0x0de0b6b3a7640000)) | !0x0de0b6b3a7640000, CustomError_b880e6ac());
        require(arg2, CustomError_b880e6ac());
        require(((arg3 * 0x0de0b6b3a7640000) / arg2) < minRateWad, CustomError_b880e6ac());
        require(!(((arg3 * 0x0de0b6b3a7640000) / arg2) < minRateWad), CustomError_b880e6ac());
        require(!(arg3 > perTransferCap), CustomError_a4875a49());
    }
    
    /// @custom:selector    0x8456cb59
    /// @custom:signature   pause() public
    function pause() public {
        require(msg.sender == (address(relayer)), CustomError_670c14a9());
        require(!(!msg.sender == (address(owner))), CustomError_670c14a9());
        outNonce = 0x010000000000000000000000000000000000000000 | (uint248(outNonce));
        emit BridgePaused(msg.sender);
    }
    
    /// @custom:selector    0x520188e5
    /// @custom:signature   Unresolved_520188e5(uint256 arg0) public view returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function Unresolved_520188e5(uint256 arg0) public view returns (uint256) {
        uint256 var_b = arg0;
        return storage_map_a[var_b];
    }
    
    /// @custom:selector    0x715018a6
    /// @custom:signature   renounceOwnership() public
    function renounceOwnership() public {
        require(msg.sender == (address(owner)), CustomError_118cdaa7());
        pendingOwner = uint96(pendingOwner);
        owner = 0 | (uint96(owner));
        emit OwnershipTransferred(address(owner), 0);
    }
}

ABI

[
  {
    "type": "function",
    "name": "Unresolved_10385482",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint64"
      },
      {
        "name": "arg1",
        "type": "address"
      },
      {
        "name": "arg2",
        "type": "uint256"
      },
      {
        "name": "arg3",
        "type": "uint256"
      },
      {
        "name": "arg4",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "Unresolved_2fe10ab7",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "Unresolved_520188e5",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "Unresolved_735daef6",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "Unresolved_c0745e04",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "acceptOwnership",
    "inputs": [],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "bridgeOut",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint64"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "deposits",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint64"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "fund",
    "inputs": [],
    "outputs": [],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "minBridgeAmount",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "minRateWad",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "oracle",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "outNonce",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint64"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "owner",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "ownerWithdraw",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "pause",
    "inputs": [],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "pausedFlag",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "pendingOwner",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "pendingWithdrawals",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "perDayCap",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "perTransferCap",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "processed",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint64"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "refund",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint64"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "relayer",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "renounceOwnership",
    "inputs": [],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setCaps",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setMinBridgeAmount",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setOracle",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setRateTolerance",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setRelayer",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "totalDelivered",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "totalFeesRetained",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "transferOwnership",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "unpause",
    "inputs": [],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "withdrawPending",
    "inputs": [],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "event",
    "name": "BridgePaused",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "BridgeUnpaused",
    "inputs": [],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "CapsChanged",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Event_83b57a2eb29255866efe53fef5ff9d53624530f572181e7f8d3f1cc1cfa72c2b",
    "inputs": [],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Event_ab140bf23d363517ae884bd0ab617e871d7b1a3d4eceabcd500ec6fa4c7f439d",
    "inputs": [],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Event_c4d181c836bc8287c2281fb9b9dd099507b271efeed7ec880e80c7c9c8845e21",
    "inputs": [],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Event_e5354f61f6a9d5abd768cbc059869783a33375f817769a58921c3acc821e9c26",
    "inputs": [],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Event_eddab6050febfa94325b3637afdbb27f4572abe0e4f9ccac2079e44d886f4c53",
    "inputs": [],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "InventoryFunded",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "InventoryWithdrawn",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "OracleChanged",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "OwnershipTransferStarted",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "OwnershipTransferred",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Refunded",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint64",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg2",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "RelayerChanged",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "error",
    "name": "BadParams",
    "inputs": []
  },
  {
    "type": "error",
    "name": "BelowMinBridge",
    "inputs": []
  },
  {
    "type": "error",
    "name": "BelowMinOut",
    "inputs": []
  },
  {
    "type": "error",
    "name": "CapExceeded",
    "inputs": []
  },
  {
    "type": "error",
    "name": "CustomError_000000000000000000000000000000000000000000000000000000003d16f9d9",
    "inputs": []
  },
  {
    "type": "error",
    "name": "CustomError_00000000000000000000000000000000000000000000000000000000641ae858",
    "inputs": []
  },
  {
    "type": "error",
    "name": "CustomError_00000000000000000000000000000000000000000000000000000000de75d15e",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InsufficientInventory",
    "inputs": []
  },
  {
    "type": "error",
    "name": "IsPaused",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotRelayer",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotRelayerOrOwner",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NothingPending",
    "inputs": []
  },
  {
    "type": "error",
    "name": "OwnableUnauthorizedAccount",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ]
  },
  {
    "type": "error",
    "name": "RateOutOfBounds",
    "inputs": []
  },
  {
    "type": "error",
    "name": "ReentrancyGuardReentrantCall",
    "inputs": []
  },
  {
    "type": "error",
    "name": "ZeroRecipient",
    "inputs": []
  }
]

UNKNOWN SELECTORS (9)

0xecc0ffe8unknown
0x85ee76b7unknown
0x2fe10ab7unknown
0xc0745e04unknown
0xdcaa5097unknown
0x10385482unknown
0x3f8e7e13unknown
0x735daef6unknown
0x520188e5unknown
These selectors are not yet in the research database — they are being investigated and will be added as known functions once identified. They are also marked in red in the decompiled Solidity above.

KNOWN CLUSTER ADDRESSES IN THIS BYTECODE (0)

(none)