arnaucube
arnaucube/hermez-nodePublic Self-hosted repository
hermez-node/eth/contracts/hermez/Hermez.go
eth/contracts/hermez/Hermez.goRaw
   1// Code generated - DO NOT EDIT.
   2// This file is a generated binding and any manual changes will be lost.
   3
   4package Hermez
   5
   6import (
   7	"math/big"
   8	"strings"
   9
  10	ethereum "github.com/ethereum/go-ethereum"
  11	"github.com/ethereum/go-ethereum/accounts/abi"
  12	"github.com/ethereum/go-ethereum/accounts/abi/bind"
  13	"github.com/ethereum/go-ethereum/common"
  14	"github.com/ethereum/go-ethereum/core/types"
  15	"github.com/ethereum/go-ethereum/event"
  16	"github.com/hermeznetwork/tracerr"
  17)
  18
  19// Reference imports to suppress errors if they are not otherwise used.
  20var (
  21	_ = big.NewInt
  22	_ = strings.NewReader
  23	_ = ethereum.NotFound
  24	_ = bind.Bind
  25	_ = common.Big1
  26	_ = types.BloomLookup
  27	_ = event.NewSubscription
  28)
  29
  30// HermezABI is the input ABI used to generate the binding from.
  31const HermezABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"tokenID\",\"type\":\"uint32\"}],\"name\":\"AddToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"batchNum\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"l1UserTxsLen\",\"type\":\"uint16\"}],\"name\":\"ForgeBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"queueIndex\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"position\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"l1UserTx\",\"type\":\"bytes\"}],\"name\":\"L1UserTxEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"SafeMode\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"numBucket\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockStamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawals\",\"type\":\"uint256\"}],\"name\":\"UpdateBucketWithdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[4][5]\",\"name\":\"arrayBuckets\",\"type\":\"uint256[4][5]\"}],\"name\":\"UpdateBucketsParameters\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFeeAddToken\",\"type\":\"uint256\"}],\"name\":\"UpdateFeeAddToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"newForgeL1L2BatchTimeout\",\"type\":\"uint8\"}],\"name\":\"UpdateForgeL1L2BatchTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"addressArray\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"valueArray\",\"type\":\"uint64[]\"}],\"name\":\"UpdateTokenExchange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newWithdrawalDelay\",\"type\":\"uint64\"}],\"name\":\"UpdateWithdrawalDelay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint48\",\"name\":\"idx\",\"type\":\"uint48\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"numExitRoot\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"instantWithdraw\",\"type\":\"bool\"}],\"name\":\"WithdrawEvent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ABSOLUTE_MAX_L1L2BATCHTIMEOUT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"babyPubKey\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"fromIdx\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"loadAmountF\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"amountF\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"tokenID\",\"type\":\"uint32\"},{\"internalType\":\"uint48\",\"name\":\"toIdx\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"permit\",\"type\":\"bytes\"}],\"name\":\"addL1Transaction\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"permit\",\"type\":\"bytes\"}],\"name\":\"addToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"buckets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ceilUSD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockStamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockWithdrawalRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxWithdrawals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"name\":\"exitNullifierMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"exitRootsMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeAddToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"newLastIdx\",\"type\":\"uint48\"},{\"internalType\":\"uint256\",\"name\":\"newStRoot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newExitRoot\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"encodedL1CoordinatorTx\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"l1L2TxsData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"feeIdxCoordinator\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"verifierIdx\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"l1Batch\",\"type\":\"bool\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofA\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"proofB\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofC\",\"type\":\"uint256[2]\"}],\"name\":\"forgeBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forgeL1L2BatchTimeout\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hermezAuctionContract\",\"outputs\":[{\"internalType\":\"contractIHermezAuctionProtocol\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hermezGovernanceAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_verifiers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_verifiersParams\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"_withdrawVerifier\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_hermezAuctionContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenHEZ\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"_forgeL1L2BatchTimeout\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_feeAddToken\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_poseidon2Elements\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_poseidon3Elements\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_poseidon4Elements\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_hermezGovernanceAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_withdrawalDelay\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"_withdrawDelayerContract\",\"type\":\"address\"}],\"name\":\"initializeHermez\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint192\",\"name\":\"amount\",\"type\":\"uint192\"}],\"name\":\"instantWithdrawalViewer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastForgedBatch\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastIdx\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastL1L2Batch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"mapL1TxQueue\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextL1FillingQueue\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextL1ToForgeQueue\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registerTokensCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"rollupVerifiers\",\"outputs\":[{\"internalType\":\"contractVerifierRollupInterface\",\"name\":\"verifierInterface\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxTx\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nLevels\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safeMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"stateRootMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenExchange\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenHEZ\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenList\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[4][5]\",\"name\":\"arrayBuckets\",\"type\":\"uint256[4][5]\"}],\"name\":\"updateBucketsParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newFeeAddToken\",\"type\":\"uint256\"}],\"name\":\"updateFeeAddToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"newForgeL1L2BatchTimeout\",\"type\":\"uint8\"}],\"name\":\"updateForgeL1L2BatchTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"addressArray\",\"type\":\"address[]\"},{\"internalType\":\"uint64[]\",\"name\":\"valueArray\",\"type\":\"uint64[]\"}],\"name\":\"updateTokenExchange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newWithdrawalDelay\",\"type\":\"uint64\"}],\"name\":\"updateWithdrawalDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"proofA\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"proofB\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofC\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint32\",\"name\":\"tokenID\",\"type\":\"uint32\"},{\"internalType\":\"uint192\",\"name\":\"amount\",\"type\":\"uint192\"},{\"internalType\":\"uint32\",\"name\":\"numExitRoot\",\"type\":\"uint32\"},{\"internalType\":\"uint48\",\"name\":\"idx\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"instantWithdraw\",\"type\":\"bool\"}],\"name\":\"withdrawCircuit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawDelayerContract\",\"outputs\":[{\"internalType\":\"contractIWithdrawalDelayer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"tokenID\",\"type\":\"uint32\"},{\"internalType\":\"uint192\",\"name\":\"amount\",\"type\":\"uint192\"},{\"internalType\":\"uint256\",\"name\":\"babyPubKey\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"numExitRoot\",\"type\":\"uint32\"},{\"internalType\":\"uint256[]\",\"name\":\"siblings\",\"type\":\"uint256[]\"},{\"internalType\":\"uint48\",\"name\":\"idx\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"instantWithdraw\",\"type\":\"bool\"}],\"name\":\"withdrawMerkleProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawVerifier\",\"outputs\":[{\"internalType\":\"contractVerifierWithdrawInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawalDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]"
  32
  33// HermezBin is the compiled bytecode used for deploying new contracts.
  34var HermezBin = "0x608060405234801561001057600080fd5b5061576d806100206000396000f3fe6080604052600436106102195760003560e01c8063864eb16411610123578063a7ab6961116100ab578063d486645c1161006f578063d486645c14610c62578063d9d4ca4414610c92578063dc3e718e14610d79578063ef4a5c4a14610e1e578063f84f92ee14610e5157610219565b8063a7ab696114610be1578063abe3219c14610bf6578063bded9bb814610c0b578063cbd7b5fb14610c20578063d0f32e6714610c4d57610219565b80639ce2ad42116100f25780639ce2ad4214610af05780639e00d7ea14610b5d5780639ead722214610b8d5780639f34e9a314610bb7578063a327583814610bcc57610219565b8063864eb164146109ae578063886df587146109c357806395a09f2a14610a705780639b51fb0d14610a9b57610219565b806338330200116101a657806368e95e531161017557806368e95e53146107165780636e7e1365146107a757806370c2f1c0146108f957806379a135e31461098457806384ef9ed41461099957610219565b806338330200146104ed5780633ee641ea1461053f57806344e0b2ce1461056f578063599897e31461058457610219565b80631a748c2d116101ed5780631a748c2d146103115780631b0a8223146104435780632bd8362614610458578063314e5eda1461046d578063375110aa1461049757610219565b80624aca6e1461021e578063013f7852146102635780630dd94b96146102945780630ee8e52b146102e3575b600080fd5b34801561022a57600080fd5b506102516004803603602081101561024157600080fd5b50356001600160a01b0316610e8f565b60408051918252519081900360200190f35b34801561026f57600080fd5b50610278610ea1565b604080516001600160a01b039092168252519081900360200190f35b3480156102a057600080fd5b506102c7600480360360208110156102b757600080fd5b50356001600160a01b0316610eb0565b604080516001600160401b039092168252519081900360200190f35b3480156102ef57600080fd5b506102f8610ecb565b6040805163ffffffff9092168252519081900360200190f35b34801561031d57600080fd5b506104416004803603604081101561033457600080fd5b810190602081018135600160201b81111561034e57600080fd5b82018360208201111561036057600080fd5b803590602001918460208302840111600160201b8311171561038157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103d057600080fd5b8201836020820111156103e257600080fd5b803590602001918460208302840111600160201b8311171561040357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610ede945050505050565b005b34801561044f57600080fd5b506102786110a1565b34801561046457600080fd5b506102786110b0565b34801561047957600080fd5b506104416004803603602081101561049057600080fd5b50356110bf565b3480156104a357600080fd5b506104d9600480360360408110156104ba57600080fd5b5080356001600160a01b031690602001356001600160c01b0316611143565b604080519115158252519081900360200190f35b3480156104f957600080fd5b506105176004803603602081101561051057600080fd5b50356111df565b604080516001600160a01b039094168452602084019290925282820152519081900360600190f35b34801561054b57600080fd5b506102516004803603602081101561056257600080fd5b503563ffffffff16611219565b34801561057b57600080fd5b506102f861122b565b34801561059057600080fd5b5061044160048036036101a08110156105a857600080fd5b810190602081018135600160201b8111156105c257600080fd5b8201836020820111156105d457600080fd5b803590602001918460208302840111600160201b831117156105f557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561064457600080fd5b82018360208201111561065657600080fd5b803590602001918460208302840111600160201b8311171561067757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550506001600160a01b03833581169450602084013581169360408101358216935060ff606082013516925060808101359160a082013581169160c081013582169160e08201358116916101008101358216916001600160401b03610120830135169161014001351661123e565b34801561072257600080fd5b50610441600480360361028081101561073a57600080fd5b6040805160a0810190915290820191906102808201908260056000835b828210156107985760408051608081810190925290808402860190600490839083908082843760009201919091525050508152600190910190602001610757565b50929550611436945050505050565b3480156107b357600080fd5b5061044160048036036102008110156107cb57600080fd5b65ffffffffffff8235169160208101359160408201359190810190608081016060820135600160201b81111561080057600080fd5b82018360208201111561081257600080fd5b803590602001918460018302840111600160201b8311171561083357600080fd5b919390929091602081019035600160201b81111561085057600080fd5b82018360208201111561086257600080fd5b803590602001918460018302840111600160201b8311171561088357600080fd5b919390929091602081019035600160201b8111156108a057600080fd5b8201836020820111156108b257600080fd5b803590602001918460018302840111600160201b831117156108d357600080fd5b919350915060ff813516906020810135151590604081019060808101906101000161162c565b34801561090557600080fd5b506104416004803603604081101561091c57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561094657600080fd5b82018360208201111561095857600080fd5b803590602001918460018302840111600160201b8311171561097957600080fd5b509092509050611aaa565b34801561099057600080fd5b50610278611d21565b3480156109a557600080fd5b506102c7611d30565b3480156109ba57600080fd5b50610278611d3f565b610441600480360360e08110156109d957600080fd5b81359165ffffffffffff602082013581169261ffff604084013581169360608101359091169263ffffffff6080830135169260a0830135909116919081019060e0810160c0820135600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b509092509050611d4e565b348015610a7c57600080fd5b50610a85612064565b6040805160ff9092168252519081900360200190f35b348015610aa757600080fd5b50610ac560048036036020811015610abe57600080fd5b5035612069565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b348015610afc57600080fd5b5061044160048036036101a0811015610b1457600080fd5b506040810160c0820163ffffffff6101008401358116906001600160c01b0361012086013516906101408601351665ffffffffffff61016087013516610180870135151561209b565b348015610b6957600080fd5b5061025160048036036020811015610b8057600080fd5b503563ffffffff1661246e565b348015610b9957600080fd5b5061027860048036036020811015610bb057600080fd5b5035612480565b348015610bc357600080fd5b506102516124a7565b348015610bd857600080fd5b50610a856124ad565b348015610bed57600080fd5b506102c76124bd565b348015610c0257600080fd5b506104416124d3565b348015610c1757600080fd5b50610251612649565b348015610c2c57600080fd5b5061044160048036036020811015610c4357600080fd5b503560ff1661264f565b348015610c5957600080fd5b506102f861272f565b348015610c6e57600080fd5b50610c77612742565b6040805165ffffffffffff9092168252519081900360200190f35b348015610c9e57600080fd5b50610441600480360360e0811015610cb557600080fd5b63ffffffff82358116926001600160c01b0360208201351692604082013592606083013516919081019060a081016080820135600160201b811115610cf957600080fd5b820183602082011115610d0b57600080fd5b803590602001918460208302840111600160201b83111715610d2c57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505065ffffffffffff83351693505050602001351515612757565b348015610d8557600080fd5b50610da960048036036020811015610d9c57600080fd5b503563ffffffff16612947565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610de3578181015183820152602001610dcb565b50505050905090810190601f168015610e105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610e2a57600080fd5b5061044160048036036020811015610e4157600080fd5b50356001600160401b03166129e2565b348015610e5d57600080fd5b506104d960048036036040811015610e7457600080fd5b50803563ffffffff16906020013565ffffffffffff16612ad7565b60586020526000908152604090205481565b604f546001600160a01b031681565b6051602052600090815260409020546001600160401b031681565b605c54600160601b900463ffffffff1681565b604f546001600160a01b03163314610f275760405162461bcd60e51b815260040180806020018281038252603f81526020018061552e603f913960400191505060405180910390fd5b8051825114610f675760405162461bcd60e51b8152600401808060200182810382526041815260200180614e296041913960600191505060405180910390fd5b60005b8251811015610fe157818181518110610f7f57fe5b602002602001015160516000858481518110610f9757fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805467ffffffffffffffff19166001600160401b0392909216919091179055600101610f6a565b507f10ff643ebeca3e33002e61b76fa85e7e10091e30afa39295f91af9838b3033b38282604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611049578181015183820152602001611031565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611088578181015183820152602001611070565b5050505090500194505050505060405180910390a15050565b6050546001600160a01b031681565b605a546001600160a01b031681565b604f546001600160a01b031633146111085760405162461bcd60e51b815260040180806020018281038252603f81526020018061552e603f913960400191505060405180910390fd5b60598190556040805182815290517fd1c873cd16013f0dc5f37992c0d12794389698512895ec036a568e393b46e3c19181900360200190a150565b6000806111508484612af7565b9050806111615760019150506111d9565b600061116c82612cad565b905060006036826005811061117d57fe5b60050201905060008160020154111561119c57600193505050506111d9565b60006111b5826001015443612d1e90919063ffffffff16565b905081600301548110156111d05760009450505050506111d9565b60019450505050505b92915050565b605281815481106111ec57fe5b60009182526020909120600390910201805460018201546002909201546001600160a01b03909116925083565b60556020526000908152604090205481565b605354600160d01b900463ffffffff1681565b600054610100900460ff16806112575750611257612d67565b80611265575060005460ff16155b6112a05760405162461bcd60e51b815260040180806020018281038252602e8152602001806152a3602e913960400191505060405180910390fd5b600054610100900460ff161580156112cb576000805460ff1961ff0019909116610100171660011790555b6112d58e8e612d6d565b8b605360006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a605a60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555089605d60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555088605c60106101000a81548160ff021916908360ff1602179055508760598190555060ff605360146101000a81548165ffffffffffff021916908365ffffffffffff1602179055506001605c600c6101000a81548163ffffffff021916908363ffffffff160217905550605760009080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b03160217905550611409878787612e3e565b611414848484612f20565b8015611426576000805461ff00191690555b5050505050505050505050505050565b604f546001600160a01b0316331461147f5760405162461bcd60e51b815260040180806020018281038252603f81526020018061552e603f913960400191505060405180910390fd5b60005b60058110156115ac57600082826005811061149957fe5b602002015151905060008383600581106114af57fe5b602002015160016020020151905060008484600581106114cb57fe5b602002015160400151905060008585600581106114e457fe5b60200201516060015190508083111561152e5760405162461bcd60e51b815260040180806020018281038252605d81526020018061556d605d913960600191505060405180910390fd5b6040518060a00160405280858152602001438152602001848152602001838152602001828152506036866005811061156257fe5b600502016000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040155905050505050508080600101915050611482565b507f3c39a1e91c69d4cfeacb11190befc2b1c983746e6b21ab2441a3051de88d448081604051808260056000925b8184101561161a5760208402830151608080838360005b838110156116095781810151838201526020016115f1565b5050505090500192600101926115da565b9250505091505060405180910390a150565b33321461166a5760405162461bcd60e51b815260040180806020018281038252602a81526020018061508f602a913960400191505060405180910390fd5b605a546040805163041d8fb560e51b815233600482015243602482015290516001600160a01b03909216916383b1f6a091604480820192602092909190829003018186803b1580156116bb57600080fd5b505afa1580156116cf573d6000803e3d6000fd5b505050506040513d60208110156116e557600080fd5b505115156001146117275760405162461bcd60e51b8152600401808060200182810382526022815260200180614fbf6022913960400191505060405180910390fd5b8361178357605c54600160801b810460ff166001600160401b03918216011643106117835760405162461bcd60e51b81526004018080602001828103825260268152602001806154226026913960400191505060405180910390fd5b60006117928f8f8f888a613015565b905060528660ff16815481106117a457fe5b60009182526020918290206003909102015460408051928301815283835280516343753b4d60e01b81526001600160a01b03909216926343753b4d9288928892889290916004909101908190869080828437600083820152601f01601f1916909101905084608080828437600083820152601f01601f1916909101905083604080828437600081840152601f19601f82011690508083019250505082600160200280838360005b8381101561186357818101518382015260200161184b565b5050505090500194505050505060206040518083038186803b15801561188857600080fd5b505afa15801561189c573d6000803e3d6000fd5b505050506040513d60208110156118b257600080fd5b50516118ef5760405162461bcd60e51b8152600401808060200182810382526021815260200180614ea66021913960400191505060405180910390fd5b6053601a81819054906101000a900463ffffffff168092919060010191906101000a81548163ffffffff021916908363ffffffff160217905550508e605360146101000a81548165ffffffffffff021916908365ffffffffffff1602179055508d605460006053601a9054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001908152602001600020819055508c605560006053601a9054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002081905550600085156119ea57605c805467ffffffffffffffff1916436001600160401b03161790556119e76132ef565b90505b605a54604080516309cb4a2f60e31b815233600482015290516001600160a01b0390921691634e5a51789160248082019260009290919082900301818387803b158015611a3657600080fd5b505af1158015611a4a573d6000803e3d6000fd5b50506053546040805161ffff861681529051600160d01b90920463ffffffff1693507fe00040c8a3b0bf905636c26924e90520eafc5003324138236fddee2d3458861892506020908290030190a250505050505050505050505050505050565b605754600160201b8110611aef5760405162461bcd60e51b81526004018080602001828103825260218152602001806150b96021913960400191505060405180910390fd5b6001600160a01b038416611b345760405162461bcd60e51b815260040180806020018281038252602381526020018061506c6023913960400191505060405180910390fd5b6001600160a01b03841660009081526058602052604090205415611b9f576040805162461bcd60e51b815260206004820152601f60248201527f4865726d657a3a3a616464546f6b656e3a20414c52454144595f414444454400604482015290519081900360640190fd5b6000846001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611bda57600080fd5b505afa158015611bee573d6000803e3d6000fd5b505050506040513d6020811015611c0457600080fd5b505111611c425760405162461bcd60e51b81526004018080602001828103825260238152602001806154dd6023913960400191505060405180910390fd5b8115611c6357605d54605954611c63916001600160a01b03169085856133ac565b605d54604f54605954611c86926001600160a01b03908116923392911690613675565b60578054600181019091557fe8e5595d268aaa85b36c3557e9d96c14a4fffaee9f45bcae0c407968a71096300180546001600160a01b0319166001600160a01b038616908117909155600081815260586020908152604091829020849055815163ffffffff8516815291517fcb73d161edb7cd4fb1d92fedfd2555384fd997fd44ab507656f8c81e15747dde9281900390910190a250505050565b605d546001600160a01b031681565b605c546001600160401b031681565b6053546001600160a01b031681565b60575463ffffffff851610611d945760405162461bcd60e51b815260040180806020018281038252602e815260200180615448602e913960400191505060405180910390fd5b6000611d9f876137d2565b9050600160801b8110611de35760405162461bcd60e51b8152600401808060200182810382526031815260200180614ec76031913960400191505060405180910390fd5b801561204a5763ffffffff8516611e3757348114611e325760405162461bcd60e51b81526004018080602001828103825260378152602001806157016037913960400191505060405180910390fd5b61204a565b3415611e745760405162461bcd60e51b815260040180806020018281038252602f815260200180615157602f913960400191505060405180910390fd5b8115611ead57611ead60578663ffffffff1681548110611e9057fe5b6000918252602090912001546001600160a01b03168285856133ac565b600060578663ffffffff1681548110611ec257fe5b60009182526020918290200154604080516370a0823160e01b815230600482015290516001600160a01b03909216926370a0823192602480840193829003018186803b158015611f1157600080fd5b505afa158015611f25573d6000803e3d6000fd5b505050506040513d6020811015611f3b57600080fd5b505160578054919250611f759163ffffffff8916908110611f5857fe5b6000918252602090912001546001600160a01b0316333085613675565b600060578763ffffffff1681548110611f8a57fe5b60009182526020918290200154604080516370a0823160e01b815230600482015290516001600160a01b03909216926370a0823192602480840193829003018186803b158015611fd957600080fd5b505afa158015611fed573d6000803e3d6000fd5b505050506040513d602081101561200357600080fd5b5051905081810383146120475760405162461bcd60e51b81526004018080602001828103825260398152602001806155f46039913960400191505060405180910390fd5b50505b612059338a8a8a8a8a8a613816565b505050505050505050565b60f081565b6036816005811061207657fe5b6005020180546001820154600283015460038401546004909401549294509092909185565b801561210d576120d260578663ffffffff16815481106120b757fe5b6000918252602090912001546001600160a01b031685613a7a565b61210d5760405162461bcd60e51b81526004018080602001828103825260438152602001806152d16043913960600191505060405180910390fd5b63ffffffff8316600090815260566020908152604080832065ffffffffffff8616845290915290205460ff16156121755760405162461bcd60e51b815260040180806020018281038252602e81526020018061524b602e913960400191505060405180910390fd5b63ffffffff831660009081526055602090815260408083205481518084018290523360601b818401526001600160e01b031960e08b901b16605482015267ffffffffffffffff1989841b1660588201526001600160d01b031960d088901b1660708201528251605681830301815260769091019283905280519194937f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000019360029390918291908401908083835b602083106122415780518252601f199092019160209182019101612222565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015612280573d6000803e3d6000fd5b5050506040513d602081101561229557600080fd5b50518161229e57fe5b605354604080516020810182529390920680845282516343753b4d60e01b81529094506001600160a01b03909116926343753b4d928e928e928e929091600401908190869080828437600083820152601f01601f1916909101905084608080828437600083820152601f01601f1916909101905083604080828437600081840152601f19601f82011690508083019250505082600160200280838360005b8381101561235457818101518382015260200161233c565b5050505090500194505050505060206040518083038186803b15801561237957600080fd5b505afa15801561238d573d6000803e3d6000fd5b505050506040513d60208110156123a357600080fd5b505115156001146123e55760405162461bcd60e51b81526004018080602001828103825260298152602001806153a26029913960400191505060405180910390fd5b63ffffffff8516600090815260566020908152604080832065ffffffffffff881684529091529020805460ff19166001179055612423868885613c47565b8215158563ffffffff168565ffffffffffff167f69177d798b38e27bcc4e0338307e4f1490e12d1006729d0e6e9cc82a8732f41560405160405180910390a450505050505050505050565b60546020526000908152604090205481565b6057818154811061248d57fe5b6000918252602090912001546001600160a01b0316905081565b60575490565b605c54600160801b900460ff1681565b604f54600160a01b90046001600160401b031681565b604f546001600160a01b0316331461251c5760405162461bcd60e51b815260040180806020018281038252603f81526020018061552e603f913960400191505060405180910390fd5b60005b60058110156125a7576040518060a001604052806000815260200160008152602001600081526020016000815260200160008152506036826005811061256157fe5b600502016000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040155905050808060010191505061251f565b50605054604f5460408051630e670af560e01b8152600160a01b9092046001600160401b03166004830152516001600160a01b0390921691630e670af59160248082019260009290919082900301818387803b15801561260657600080fd5b505af115801561261a573d6000803e3d6000fd5b50506040517f0410e6ef2bd89ecf5b2dc2f62157f9863e09e89cb7c7f1abb7d4ec43a6019d1e925060009150a1565b60595481565b604f546001600160a01b031633146126985760405162461bcd60e51b815260040180806020018281038252603f81526020018061552e603f913960400191505060405180910390fd5b60f060ff821611156126db5760405162461bcd60e51b815260040180806020018281038252603c815260200180614e6a603c913960400191505060405180910390fd5b605c805460ff8316600160801b810260ff60801b199092169190911790915560408051918252517fff6221781ac525b04585dbb55cd2ebd2a92c828ca3e42b23813a1137ac9744319181900360200190a150565b605c54600160401b900463ffffffff1681565b605354600160a01b900465ffffffffffff1681565b80156127c95761278e60578863ffffffff168154811061277357fe5b6000918252602090912001546001600160a01b031687613a7a565b6127c95760405162461bcd60e51b81526004018080602001828103825260478152602001806151866047913960600191505060405180910390fd5b6127d1614ccb565b6127e8886000896001600160c01b03168933613dd7565b905060006127f582613e39565b63ffffffff87166000908152605560209081526040808320546056835281842065ffffffffffff8a168552909252909120549192509060ff161561286a5760405162461bcd60e51b81526004018080602001828103825260328152602001806151f86032913960400191505060405180910390fd5b61287e81878765ffffffffffff1685613ed6565b15156001146128be5760405162461bcd60e51b815260040180806020018281038252602e815260200180615476602e913960400191505060405180910390fd5b63ffffffff8716600090815260566020908152604080832065ffffffffffff891684529091529020805460ff191660011790556128fc898b86613c47565b8315158763ffffffff168665ffffffffffff167f69177d798b38e27bcc4e0338307e4f1490e12d1006729d0e6e9cc82a8732f41560405160405180910390a450505050505050505050565b605b6020908152600091825260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156129da5780601f106129af576101008083540402835291602001916129da565b820191906000526020600020905b8154815290600101906020018083116129bd57829003601f168201915b505050505081565b604f546001600160a01b03163314612a2b5760405162461bcd60e51b815260040180806020018281038252603f81526020018061552e603f913960400191505060405180910390fd5b62127500816001600160401b03161115612a765760405162461bcd60e51b815260040180806020018281038252604a815260200180614fe1604a913960600191505060405180910390fd5b604f80546001600160401b038316600160a01b810267ffffffffffffffff60a01b199092169190911790915560408051918252517f9db302c4547a21fb20a3a794e5f63ee87eb6e4afc3325ebdadba2d1fb4a907379181900360200190a150565b605660209081526000928352604080842090915290825290205460ff1681565b6001600160a01b0382166000908152605160205260408120546001600160401b0316612b25575060006111d9565b6001600160a01b038316600090815260516020526040812054655af3107a4000906001600160401b03166001600160c01b0385160260408051600481526024810182526020810180516001600160e01b031663313ce56760e01b1781529151815194909304945060009384936060936001600160a01b038b1693928291908083835b60208310612bc65780518252601f199092019160209182019101612ba7565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114612c26576040519150601f19603f3d011682016040523d82523d6000602084013e612c2b565b606091505b50915091508115612c5057808060200190516020811015612c4b57600080fd5b505192505b604d8360ff1610612c925760405162461bcd60e51b815260040180806020018281038252603b815260200180614dae603b913960400191505060405180910390fd5b8260ff16600a0a8481612ca157fe5b04979650505050505050565b6000805b6005811015612ce15760368160058110612cc757fe5b60050201548311612cd9579050612d19565b600101612cb1565b5060405162461bcd60e51b81526004018080602001828103825260398152602001806154a46039913960400191505060405180910390fd5b919050565b6000612d6083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613f5d565b9392505050565b303b1590565b60005b8251811015612e395760526040518060600160405280858481518110612d9257fe5b60200260200101516001600160a01b03168152602001600880868681518110612db757fe5b6020026020010151901b901c815260200160f8858581518110612dd657fe5b60209081029190910181015190911c909152825460018082018555600094855293829020835160039092020180546001600160a01b0319166001600160a01b03909216919091178155908201518184015560409091015160029091015501612d70565b505050565b600054610100900460ff1680612e575750612e57612d67565b80612e65575060005460ff16155b612ea05760405162461bcd60e51b815260040180806020018281038252602e8152602001806152a3602e913960400191505060405180910390fd5b600054610100900460ff16158015612ecb576000805460ff1961ff0019909116610100171660011790555b603380546001600160a01b038087166001600160a01b0319928316179092556034805486841690831617905560358054928516929091169190911790558015612f1a576000805461ff00191690555b50505050565b600054610100900460ff1680612f395750612f39612d67565b80612f47575060005460ff16155b612f825760405162461bcd60e51b815260040180806020018281038252602e8152602001806152a3602e913960400191505060405180910390fd5b600054610100900460ff16158015612fad576000805460ff1961ff0019909116610100171660011790555b604f80546001600160a01b03199081166001600160a01b038781169190911767ffffffffffffffff60a01b1916600160a01b6001600160401b0388160217909255605080549091169184169190911790558015612f1a576000805461ff001916905550505050565b605354600160d01b810463ffffffff166000908152605460205260408120546052805492939192600160a01b90920465ffffffffffff16918491829182919060ff891690811061306157fe5b906000526020600020906003020160010154600860528960ff168154811061308557fe5b9060005260206000209060030201600201548161309e57fe5b046002026003010290506000600860528960ff16815481106130bc57fe5b906000526020600020906003020160020154816130d557fe5b604080519290910481028481018084016148b201909252614872909101825260d087811b60208401528e901b6026830152602c8201889052604c82018d9052606c82018c90529150608c810161312b818c613ff4565b61480001613139600461422b565b90965094508385111561317d5760405162461bcd60e51b815260040180806020018281038252602e815260200180615500602e913960400191505060405180910390fd5b84868237840161318f8186860361423f565b8484030161319d600561422b565b90965094508285146131e05760405162461bcd60e51b8152600401808060200182810382526040815260200180614de96040913960400191505060405180910390fd5b8486823784016131f28186850361423f565b848303810190504660f01b815260028101905060006053601a9054906101000a900463ffffffff1660010163ffffffff1690508060e01b82527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002846040518082805190602001908083835b6020831061327e5780518252601f19909201916020918201910161325f565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa1580156132bd573d6000803e3d6000fd5b5050506040513d60208110156132d257600080fd5b5051816132db57fe5b069f9e505050505050505050505050505050565b605c54600160401b900463ffffffff166000908152605b60205260408120805460486002610100600184161502600019019092169190910404906133339083614ce9565b605c8054600163ffffffff600160401b808404821692909201811682026bffffffff000000000000000019909316929092179283905582048116600160601b9092041614156133a757605c8054600163ffffffff600160601b808404821692909201160263ffffffff60601b199091161790555b905090565b6000828260208110156133be57600080fd5b50356001600160e01b031916905063d505accf60e01b81146134115760405162461bcd60e51b815260040180806020018281038252602e8152602001806156aa602e913960400191505060405180910390fd5b6000808080808080613426896004818d614d85565b60e081101561343457600080fd5b506001600160a01b038135811698506020820135169650604081013595506060810135945060ff608082013516935060a0810135925060c0013590503387146134ae5760405162461bcd60e51b8152600401808060200182810382526030815260200180614f2c6030913960400191505060405180910390fd5b6001600160a01b03861630146134f55760405162461bcd60e51b81526004018080602001828103825260258152602001806151326025913960400191505060405180910390fd5b8a85146135335760405162461bcd60e51b815260040180806020018281038252602d8152602001806153f5602d913960400191505060405180910390fd5b8b6001600160a01b031663d505accf60e01b8888888888888860405160240180886001600160a01b03168152602001876001600160a01b031681526020018681526020018581526020018460ff168152602001838152602001828152602001975050505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083835b602083106135fd5780518252601f1990920191602091820191016135de565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461365f576040519150601f19603f3d011682016040523d82523d6000602084013e613664565b606091505b505050505050505050505050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106136fa5780518252601f1990920191602091820191016136db565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461375c576040519150601f19603f3d011682016040523d82523d6000602084013e613761565b606091505b509150915081801561378f57508051158061378f575080806020019051602081101561378c57600080fd5b50515b6137ca5760405162461bcd60e51b8152600401808060200182810382526034815260200180614ef86034913960400191505060405180910390fd5b505050505050565b60006103ff8216601f600b84901c166001600a85811c8216919083900a90818502908314801561380157508315155b1561380c5760028204015b9695505050505050565b6000613821846137d2565b9050600160c01b81106138655760405162461bcd60e51b815260040180806020018281038252602e8152602001806150da602e913960400191505060405180910390fd5b65ffffffffffff82166138b45780156138af5760405162461bcd60e51b815260040180806020018281038252603b81526020018061566f603b913960400191505060405180910390fd5b61396e565b65ffffffffffff8216600114156139065761ffff8516156138af5760405162461bcd60e51b8152600401808060200182810382526037815260200180614f5c6037913960400191505060405180910390fd5b60ff65ffffffffffff8316118015613933575060535465ffffffffffff600160a01b909104811690831611155b61396e5760405162461bcd60e51b815260040180806020018281038252602881526020018061537a6028913960400191505060405180910390fd5b65ffffffffffff86166139bc57866139b75760405162461bcd60e51b815260040180806020018281038252604181526020018061502b6041913960600191505060405180910390fd5b613a61565b60ff65ffffffffffff87161180156139e9575060535465ffffffffffff600160a01b909104811690871611155b613a245760405162461bcd60e51b815260040180806020018281038252602a815260200180615108602a913960400191505060405180910390fd5b8615613a615760405162461bcd60e51b81526004018080602001828103825260428152602001806153146042913960600191505060405180910390fd5b613a7088888888888888614258565b5050505050505050565b600080613a878484612af7565b905080613a985760019150506111d9565b6000613aa382612cad565b9050600060368260058110613ab457fe5b6005020190506000613ad3826001015443612d1e90919063ffffffff16565b90508160030154811015613b6857600282015415613b5b57816004015482600201541415613b02574360018301555b600282018054600019019081905560018301546040805192835251909160ff8616917fa35fe9a9e21cdbbc4774aa8a56e7b97ea9c06afc09ffb06af593d26951e350aa9181900360200190a360019450505050506111d9565b60009450505050506111d9565b6000613b8183600301548361442490919063ffffffff16565b90508260040154613b9f82856002015461446690919063ffffffff16565b10613bc4576004830154613bb4906001612d1e565b6002840155436001840155613bf7565b60028301805482016000190190556003830154613bf190613be69083906144c0565b600185015490614466565b60018401555b60018301546002840154604080519182525160ff8716917fa35fe9a9e21cdbbc4774aa8a56e7b97ea9c06afc09ffb06af593d26951e350aa919081900360200190a36001955050505050506111d9565b8015613c8d57613c8860578363ffffffff1681548110613c6357fe5b6000918252602090912001546001600160a01b0316336001600160c01b038616614519565b612e39565b63ffffffff8216613d19576050546040805163cfc0b64160e01b81523360048201526000602482018190526001600160c01b0387166044830181905292516001600160a01b039094169363cfc0b6419392606480820193929182900301818588803b158015613cfb57600080fd5b505af1158015613d0f573d6000803e3d6000fd5b5050505050612e39565b600060578363ffffffff1681548110613d2e57fe5b6000918252602090912001546050546001600160a01b039182169250613d60918391166001600160c01b03871661476b565b6050546040805163cfc0b64160e01b81523360048201526001600160a01b0384811660248301526001600160c01b03881660448301529151919092169163cfc0b64191606480830192600092919082900301818387803b158015613dc357600080fd5b505af1158015613a70573d6000803e3d6000fd5b613ddf614ccb565b613de7614ccb565b63ffffffff96909616602095861b65ffff000000001617690100000000000000000060b785901c1617865250928401919091526001600160ff1b031660408301526001600160a01b0316606082015290565b60355460405163248f667760e01b81526000916001600160a01b03169063248f6677908490600401808260808083838a5b83811015613e82578181015183820152602001613e6a565b5050505090500191505060206040518083038186803b158015613ea457600080fd5b505afa158015613eb8573d6000803e3d6000fd5b505050506040513d6020811015613ece57600080fd5b505192915050565b600080613ee384846148b8565b8551909150600090600019015b60008112613f5057868181518110613f0457fe5b60200260200101519150600081876000821215613f1d57fe5b6001911c811614905080613f3a57613f3584846148e4565b613f44565b613f4483856148e4565b93505060001901613ef0565b5050909414949350505050565b60008184841115613fec5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613fb1578181015183820152602001613f99565b50505050905090810190601f168015613fde5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600080614001600361422b565b9092509050606581046000606085156140d157605c54600160401b900463ffffffff166000908152605b60209081526040918290208054835160026101006001841615026000190190921691909104601f81018490048402820184019094528381529290918301828280156140b75780601f1061408c576101008083540402835291602001916140b7565b820191906000526020600020905b81548152906001019060200180831161409a57829003601f168201915b5050505050905060488151816140c957fe5b0491506140d6565b600091505b61010083830111156141195760405162461bcd60e51b81526004018080602001828103825260248152602001806153566024913960400191505060405180910390fd5b8115614147576048820287019660208201905b8881101561414457815181526020918201910161412c565b50505b60005b8381101561420e576057546065870196803560001a916001820135916021810135916041820135916061013560e01c9081106141b75760405162461bcd60e51b815260040180806020018281038252602a815260200180615279602a913960400191505060405180910390fd5b6001600160a01b0360ff8616156141d7576141d483858789614901565b90505b60601b8d5260148d0191909152600060348d0181905260e09190911b603e8d015260428c015250506048909801975060010161414a565b50614222876048858561010003030261423f565b50505050505050565b602002600490810135602481019291013590565b808201915b82811015612e395760008152602001614244565b604080516bffffffffffffffffffffffff1960608a901b16602080830191909152603482018990526001600160d01b031960d089811b821660548501526001600160f01b031960f08a811b8216605a87015289901b16605c808601919091526001600160e01b031960e089901b16605e8601529086901b9091166062840152835160488185030181526068909301845254600160601b900463ffffffff166000908152605b9091529190912061430e9082614aa1565b605c54600160601b900463ffffffff166000818152605b602090815260408083205481518381528651818501528651604860026101006001861615026000190190941693909304929092049560ff87169590947fdd5c7c5ea02d3c5d1621513faa6de53d474ee6f111eda6352a63e3dfe8c401199489948493918401928601918190849084905b838110156143ad578181015183820152602001614395565b50505050905090810190601f1680156143da5780820380516001836020036101000a031916815260200191505b509250505060405180910390a36080811061205957605c8054600163ffffffff600160601b808404821692909201160263ffffffff60601b19909116179055505050505050505050565b6000612d6083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614beb565b600082820183811015612d60576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000826144cf575060006111d9565b828202828482816144dc57fe5b0414612d605760405162461bcd60e51b815260040180806020018281038252602181526020018061522a6021913960400191505060405180910390fd5b6001600160a01b0383166146175760408051600080825260208201909252339083906040518082805190602001908083835b6020831061456a5780518252601f19909201916020918201910161454b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146145cc576040519150601f19603f3d011682016040523d82523d6000602084013e6145d1565b606091505b50509050806146115760405162461bcd60e51b815260040180806020018281038252602a8152602001806153cb602a913960400191505060405180910390fd5b50612e39565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106146945780518252601f199092019160209182019101614675565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146146f6576040519150601f19603f3d011682016040523d82523d6000602084013e6146fb565b606091505b5091509150818015614729575080511580614729575080806020019051602081101561472657600080fd5b50515b6147645760405162461bcd60e51b815260040180806020018281038252602c815260200180614f93602c913960400191505060405180910390fd5b5050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b178152925182516000946060949389169392918291908083835b602083106147e85780518252601f1990920191602091820191016147c9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461484a576040519150601f19603f3d011682016040523d82523d6000602084013e61484f565b606091505b509150915081801561487d57508051158061487d575080806020019051602081101561487a57600080fd5b50515b6147645760405162461bcd60e51b815260040180806020018281038252602a8152602001806155ca602a913960400191505060405180910390fd5b60006148c2614d30565b83815260208101839052600160408201526148dc81614c50565b949350505050565b60006148ee614d4e565b838152602081018390526148dc81614c8d565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156149625760405162461bcd60e51b81526004018080602001828103825260298152602001806156d86029913960400191505060405180910390fd5b6000469050600086823060405160200180807f19457468657265756d205369676e6564204d6573736167653a0a313230000000815250601d018061562d604291396042018481526020018361ffff1660f01b8152600201826001600160a01b031660601b81526014019350505050604051602081830303815290604052805190602001209050600060018286898960405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015614a44573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614a965760405162461bcd60e51b815260040180806020018281038252602b8152602001806151cd602b913960400191505060405180910390fd5b979650505050505050565b815460026001808316156101000203821604825180820160208110602084100160028114614b4b5760018114614b70578660005260208404602060002001600160028402018855602085068060200390508088018589016001836101000a0392508282511684540184556001840193506020820191505b80821015614b355781518455600184019350602082019150614b18565b815191036101000a908190040290915550614222565b60028302826020036101000a846020036101000a602089015104020185018755614222565b8660005260208404602060002001600160028402018855846020038088018589016001836101000a0392508282511660ff198a160184556020820191506001840193505b80821015614bd15781518455600184019350602082019150614bb4565b815191036101000a90819004029091555050505050505050565b60008183614c3a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613fb1578181015183820152602001613f99565b506000838581614c4657fe5b0495945050505050565b6034546040516304b98e1d60e31b8152825160049091019081526000916001600160a01b0316906325cc70e8908490808260608083836020613e6a565b603354604080516314d2f97b60e11b8152835160049091019081526000926001600160a01b0316916329a5f2f6918591819083908083836020613e6a565b60405180608001604052806004906020820280368337509192915050565b50805460018160011615610100020316600290046000825580601f10614d0f5750614d2d565b601f016020900490600052602060002090810190614d2d9190614d6c565b50565b60405180606001604052806003906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b5b80821115614d815760008155600101614d6d565b5090565b60008085851115614d94578182fd5b83861115614da0578182fd5b505082019391909203915056fe496e7374616e7457697468647261774d616e616765723a3a5f746f6b656e325553443a20544f4b454e5f444543494d414c535f4f564552464c4f574865726d657a3a3a5f636f6e73747275637443697263756974496e7075743a20494e56414c49445f464545494458434f4f5244494e41544f525f4c454e475448496e7374616e7457697468647261774d616e616765723a3a757064617465546f6b656e45786368616e67653a20494e56414c49445f41525241595f4c454e4754484865726d657a3a3a757064617465466f7267654c314c32426174636854696d656f75743a204d41585f464f52474554494d454f55545f4558434545444865726d657a3a3a666f72676542617463683a20494e56414c49445f50524f4f464865726d657a3a3a6164644c315472616e73616374696f6e3a204c4f4144414d4f554e545f4558434545445f4c494d49544865726d657a3a3a5f736166655472616e7366657246726f6d3a2045524332305f5452414e5346455246524f4d5f4641494c45444865726d657a3a3a5f7065726d69743a205045524d49545f4f574e45525f4d5553545f42455f5448455f53454e4445524865726d657a3a3a5f6164644c315472616e73616374696f6e3a204c4f4144414d4f554e545f4d5553545f42455f305f49465f455849544865726d657a3a3a5f736166655472616e736665723a2045524332305f5452414e534645525f4641494c45444865726d657a3a3a666f72676542617463683a2041554354494f4e5f44454e494544496e7374616e7457697468647261774d616e616765723a3a7570646174655769746864726177616c44656c61793a204558434545445f4d41585f5749544844524157414c5f44454c41594865726d657a3a3a5f6164644c315472616e73616374696f6e3a20494e56414c49445f4352454154455f4143434f554e545f574954485f4e4f5f424142594a55424865726d657a3a3a616464546f6b656e3a20414444524553535f305f494e56414c49444865726d657a3a3a666f72676542617463683a20494e54454e414c5f54585f4e4f545f414c4c4f5745444865726d657a3a3a616464546f6b656e3a20544f4b454e5f4c4953545f46554c4c4865726d657a3a3a5f6164644c315472616e73616374696f6e3a20414d4f554e545f4558434545445f4c494d49544865726d657a3a3a5f6164644c315472616e73616374696f6e3a20494e56414c49445f46524f4d4944584865726d657a3a3a5f7065726d69743a205350454e4445525f4d5553545f42455f544849534865726d657a3a3a6164644c315472616e73616374696f6e3a204d53475f56414c55455f4e4f545f455155414c5f304865726d657a3a3a77697468647261774d65726b6c6550726f6f663a20494e5354414e545f57495448445241575f5741535445445f464f525f544849535f5553445f52414e47454865726d657a48656c706572733a3a5f636865636b5369673a20494e56414c49445f5349474e41545552454865726d657a3a3a77697468647261774d65726b6c6550726f6f663a2057495448445241575f414c52454144595f444f4e45536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774865726d657a3a3a7769746864726177436972637569743a2057495448445241575f414c52454144595f444f4e454865726d657a3a3a5f6275696c644c31446174613a20544f4b454e5f4e4f545f52454749535445524544436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65644865726d657a3a3a7769746864726177436972637569743a20494e5354414e545f57495448445241575f5741535445445f464f525f544849535f5553445f52414e47454865726d657a3a3a5f6164644c315472616e73616374696f6e3a20424142594a55425f4d5553545f42455f305f49465f4e4f545f4352454154455f4143434f554e544865726d657a3a3a5f6275696c644c31446174613a204c315f54585f4f564552464c4f574865726d657a3a3a5f6164644c315472616e73616374696f6e3a20494e56414c49445f544f4944584865726d657a3a3a7769746864726177436972637569743a20494e56414c49445f5a4b5f50524f4f464865726d657a3a3a5f736166655472616e736665723a204554485f5452414e534645525f4641494c45444865726d657a3a3a5f7065726d69743a205045524d49545f414d4f554e545f444f45535f4e4f545f4d415443484865726d657a3a3a666f72676542617463683a204c314c3242415443485f52455155495245444865726d657a3a3a6164644c315472616e73616374696f6e3a20544f4b454e5f4e4f545f524547495354455245444865726d657a3a3a77697468647261774d65726b6c6550726f6f663a20534d545f50524f4f465f494e56414c4944496e7374616e7457697468647261774d616e616765723a3a5f66696e644275636b65744964783a204558434545445f4d41585f414d4f554e544865726d657a3a3a616464546f6b656e3a20544f54414c5f535550504c595f5a45524f4865726d657a3a3a5f636f6e73747275637443697263756974496e7075743a204c325f54585f4f564552464c4f57496e7374616e7457697468647261774d616e616765723a3a6f6e6c79476f7665726e616e63653a204f4e4c595f474f5645524e414e43455f41444452455353496e7374616e7457697468647261774d616e616765723a3a7570646174654275636b657473506172616d65746572733a205749544844524157414c535f4d5553545f42455f4c4553535f5448414e5f4d41585749544844524157414c534865726d657a3a3a5f73616665417070726f76653a2045524332305f415050524f56455f4641494c45444865726d657a3a3a6164644c315472616e73616374696f6e3a204c4f4144414d4f554e545f45524332305f444f45535f4e4f545f4d415443484920617574686f72697a65207468697320626162796a75626a7562206b657920666f72206865726d657a20726f6c6c7570206163636f756e74206372656174696f6e4865726d657a3a3a5f6164644c315472616e73616374696f6e3a20414d4f554e545f4d5553545f42455f305f49465f4e4f545f5452414e534645524865726d657a41756374696f6e50726f746f636f6c3a3a5f7065726d69743a204e4f545f56414c49445f43414c4c4865726d657a48656c706572733a3a5f636865636b5369673a20494e56414c49445f535f56414c55454865726d657a3a3a6164644c315472616e73616374696f6e3a204c4f4144414d4f554e545f4554485f444f45535f4e4f545f4d41544348a2646970667358221220a84697555131f274217588c1ae00520914a8e9aa4d22b904467b5d50b033f72764736f6c634300060c0033"
  35
  36// DeployHermez deploys a new Ethereum contract, binding an instance of Hermez to it.
  37func DeployHermez(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Hermez, error) {
  38	parsed, err := abi.JSON(strings.NewReader(HermezABI))
  39	if err != nil {
  40		return common.Address{}, nil, nil, tracerr.Wrap(err)
  41	}
  42
  43	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(HermezBin), backend)
  44	if err != nil {
  45		return common.Address{}, nil, nil, tracerr.Wrap(err)
  46	}
  47	return address, tx, &Hermez{HermezCaller: HermezCaller{contract: contract}, HermezTransactor: HermezTransactor{contract: contract}, HermezFilterer: HermezFilterer{contract: contract}}, nil
  48}
  49
  50// Hermez is an auto generated Go binding around an Ethereum contract.
  51type Hermez struct {
  52	HermezCaller     // Read-only binding to the contract
  53	HermezTransactor // Write-only binding to the contract
  54	HermezFilterer   // Log filterer for contract events
  55}
  56
  57// HermezCaller is an auto generated read-only Go binding around an Ethereum contract.
  58type HermezCaller struct {
  59	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  60}
  61
  62// HermezTransactor is an auto generated write-only Go binding around an Ethereum contract.
  63type HermezTransactor struct {
  64	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  65}
  66
  67// HermezFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  68type HermezFilterer struct {
  69	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  70}
  71
  72// HermezSession is an auto generated Go binding around an Ethereum contract,
  73// with pre-set call and transact options.
  74type HermezSession struct {
  75	Contract     *Hermez           // Generic contract binding to set the session for
  76	CallOpts     bind.CallOpts     // Call options to use throughout this session
  77	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  78}
  79
  80// HermezCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  81// with pre-set call options.
  82type HermezCallerSession struct {
  83	Contract *HermezCaller // Generic contract caller binding to set the session for
  84	CallOpts bind.CallOpts // Call options to use throughout this session
  85}
  86
  87// HermezTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  88// with pre-set transact options.
  89type HermezTransactorSession struct {
  90	Contract     *HermezTransactor // Generic contract transactor binding to set the session for
  91	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  92}
  93
  94// HermezRaw is an auto generated low-level Go binding around an Ethereum contract.
  95type HermezRaw struct {
  96	Contract *Hermez // Generic contract binding to access the raw methods on
  97}
  98
  99// HermezCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
 100type HermezCallerRaw struct {
 101	Contract *HermezCaller // Generic read-only contract binding to access the raw methods on
 102}
 103
 104// HermezTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
 105type HermezTransactorRaw struct {
 106	Contract *HermezTransactor // Generic write-only contract binding to access the raw methods on
 107}
 108
 109// NewHermez creates a new instance of Hermez, bound to a specific deployed contract.
 110func NewHermez(address common.Address, backend bind.ContractBackend) (*Hermez, error) {
 111	contract, err := bindHermez(address, backend, backend, backend)
 112	if err != nil {
 113		return nil, tracerr.Wrap(err)
 114	}
 115	return &Hermez{HermezCaller: HermezCaller{contract: contract}, HermezTransactor: HermezTransactor{contract: contract}, HermezFilterer: HermezFilterer{contract: contract}}, nil
 116}
 117
 118// NewHermezCaller creates a new read-only instance of Hermez, bound to a specific deployed contract.
 119func NewHermezCaller(address common.Address, caller bind.ContractCaller) (*HermezCaller, error) {
 120	contract, err := bindHermez(address, caller, nil, nil)
 121	if err != nil {
 122		return nil, tracerr.Wrap(err)
 123	}
 124	return &HermezCaller{contract: contract}, nil
 125}
 126
 127// NewHermezTransactor creates a new write-only instance of Hermez, bound to a specific deployed contract.
 128func NewHermezTransactor(address common.Address, transactor bind.ContractTransactor) (*HermezTransactor, error) {
 129	contract, err := bindHermez(address, nil, transactor, nil)
 130	if err != nil {
 131		return nil, tracerr.Wrap(err)
 132	}
 133	return &HermezTransactor{contract: contract}, nil
 134}
 135
 136// NewHermezFilterer creates a new log filterer instance of Hermez, bound to a specific deployed contract.
 137func NewHermezFilterer(address common.Address, filterer bind.ContractFilterer) (*HermezFilterer, error) {
 138	contract, err := bindHermez(address, nil, nil, filterer)
 139	if err != nil {
 140		return nil, tracerr.Wrap(err)
 141	}
 142	return &HermezFilterer{contract: contract}, nil
 143}
 144
 145// bindHermez binds a generic wrapper to an already deployed contract.
 146func bindHermez(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 147	parsed, err := abi.JSON(strings.NewReader(HermezABI))
 148	if err != nil {
 149		return nil, tracerr.Wrap(err)
 150	}
 151	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 152}
 153
 154// Call invokes the (constant) contract method with params as input values and
 155// sets the output to result. The result type might be a single field for simple
 156// returns, a slice of interfaces for anonymous returns and a struct for named
 157// returns.
 158func (_Hermez *HermezRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 159	return _Hermez.Contract.HermezCaller.contract.Call(opts, result, method, params...)
 160}
 161
 162// Transfer initiates a plain transaction to move funds to the contract, calling
 163// its default method if one is available.
 164func (_Hermez *HermezRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 165	return _Hermez.Contract.HermezTransactor.contract.Transfer(opts)
 166}
 167
 168// Transact invokes the (paid) contract method with params as input values.
 169func (_Hermez *HermezRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 170	return _Hermez.Contract.HermezTransactor.contract.Transact(opts, method, params...)
 171}
 172
 173// Call invokes the (constant) contract method with params as input values and
 174// sets the output to result. The result type might be a single field for simple
 175// returns, a slice of interfaces for anonymous returns and a struct for named
 176// returns.
 177func (_Hermez *HermezCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 178	return _Hermez.Contract.contract.Call(opts, result, method, params...)
 179}
 180
 181// Transfer initiates a plain transaction to move funds to the contract, calling
 182// its default method if one is available.
 183func (_Hermez *HermezTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 184	return _Hermez.Contract.contract.Transfer(opts)
 185}
 186
 187// Transact invokes the (paid) contract method with params as input values.
 188func (_Hermez *HermezTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 189	return _Hermez.Contract.contract.Transact(opts, method, params...)
 190}
 191
 192// ABSOLUTEMAXL1L2BATCHTIMEOUT is a free data retrieval call binding the contract method 0x95a09f2a.
 193//
 194// Solidity: function ABSOLUTE_MAX_L1L2BATCHTIMEOUT() view returns(uint8)
 195func (_Hermez *HermezCaller) ABSOLUTEMAXL1L2BATCHTIMEOUT(opts *bind.CallOpts) (uint8, error) {
 196	var (
 197		ret0 = new(uint8)
 198	)
 199	out := ret0
 200	err := _Hermez.contract.Call(opts, out, "ABSOLUTE_MAX_L1L2BATCHTIMEOUT")
 201	return *ret0, tracerr.Wrap(err)
 202}
 203
 204// ABSOLUTEMAXL1L2BATCHTIMEOUT is a free data retrieval call binding the contract method 0x95a09f2a.
 205//
 206// Solidity: function ABSOLUTE_MAX_L1L2BATCHTIMEOUT() view returns(uint8)
 207func (_Hermez *HermezSession) ABSOLUTEMAXL1L2BATCHTIMEOUT() (uint8, error) {
 208	return _Hermez.Contract.ABSOLUTEMAXL1L2BATCHTIMEOUT(&_Hermez.CallOpts)
 209}
 210
 211// ABSOLUTEMAXL1L2BATCHTIMEOUT is a free data retrieval call binding the contract method 0x95a09f2a.
 212//
 213// Solidity: function ABSOLUTE_MAX_L1L2BATCHTIMEOUT() view returns(uint8)
 214func (_Hermez *HermezCallerSession) ABSOLUTEMAXL1L2BATCHTIMEOUT() (uint8, error) {
 215	return _Hermez.Contract.ABSOLUTEMAXL1L2BATCHTIMEOUT(&_Hermez.CallOpts)
 216}
 217
 218// Buckets is a free data retrieval call binding the contract method 0x9b51fb0d.
 219//
 220// Solidity: function buckets(uint256 ) view returns(uint256 ceilUSD, uint256 blockStamp, uint256 withdrawals, uint256 blockWithdrawalRate, uint256 maxWithdrawals)
 221func (_Hermez *HermezCaller) Buckets(opts *bind.CallOpts, arg0 *big.Int) (struct {
 222	CeilUSD             *big.Int
 223	BlockStamp          *big.Int
 224	Withdrawals         *big.Int
 225	BlockWithdrawalRate *big.Int
 226	MaxWithdrawals      *big.Int
 227}, error) {
 228	ret := new(struct {
 229		CeilUSD             *big.Int
 230		BlockStamp          *big.Int
 231		Withdrawals         *big.Int
 232		BlockWithdrawalRate *big.Int
 233		MaxWithdrawals      *big.Int
 234	})
 235	out := ret
 236	err := _Hermez.contract.Call(opts, out, "buckets", arg0)
 237	return *ret, tracerr.Wrap(err)
 238}
 239
 240// Buckets is a free data retrieval call binding the contract method 0x9b51fb0d.
 241//
 242// Solidity: function buckets(uint256 ) view returns(uint256 ceilUSD, uint256 blockStamp, uint256 withdrawals, uint256 blockWithdrawalRate, uint256 maxWithdrawals)
 243func (_Hermez *HermezSession) Buckets(arg0 *big.Int) (struct {
 244	CeilUSD             *big.Int
 245	BlockStamp          *big.Int
 246	Withdrawals         *big.Int
 247	BlockWithdrawalRate *big.Int
 248	MaxWithdrawals      *big.Int
 249}, error) {
 250	return _Hermez.Contract.Buckets(&_Hermez.CallOpts, arg0)
 251}
 252
 253// Buckets is a free data retrieval call binding the contract method 0x9b51fb0d.
 254//
 255// Solidity: function buckets(uint256 ) view returns(uint256 ceilUSD, uint256 blockStamp, uint256 withdrawals, uint256 blockWithdrawalRate, uint256 maxWithdrawals)
 256func (_Hermez *HermezCallerSession) Buckets(arg0 *big.Int) (struct {
 257	CeilUSD             *big.Int
 258	BlockStamp          *big.Int
 259	Withdrawals         *big.Int
 260	BlockWithdrawalRate *big.Int
 261	MaxWithdrawals      *big.Int
 262}, error) {
 263	return _Hermez.Contract.Buckets(&_Hermez.CallOpts, arg0)
 264}
 265
 266// ExitNullifierMap is a free data retrieval call binding the contract method 0xf84f92ee.
 267//
 268// Solidity: function exitNullifierMap(uint32 , uint48 ) view returns(bool)
 269func (_Hermez *HermezCaller) ExitNullifierMap(opts *bind.CallOpts, arg0 uint32, arg1 *big.Int) (bool, error) {
 270	var (
 271		ret0 = new(bool)
 272	)
 273	out := ret0
 274	err := _Hermez.contract.Call(opts, out, "exitNullifierMap", arg0, arg1)
 275	return *ret0, tracerr.Wrap(err)
 276}
 277
 278// ExitNullifierMap is a free data retrieval call binding the contract method 0xf84f92ee.
 279//
 280// Solidity: function exitNullifierMap(uint32 , uint48 ) view returns(bool)
 281func (_Hermez *HermezSession) ExitNullifierMap(arg0 uint32, arg1 *big.Int) (bool, error) {
 282	return _Hermez.Contract.ExitNullifierMap(&_Hermez.CallOpts, arg0, arg1)
 283}
 284
 285// ExitNullifierMap is a free data retrieval call binding the contract method 0xf84f92ee.
 286//
 287// Solidity: function exitNullifierMap(uint32 , uint48 ) view returns(bool)
 288func (_Hermez *HermezCallerSession) ExitNullifierMap(arg0 uint32, arg1 *big.Int) (bool, error) {
 289	return _Hermez.Contract.ExitNullifierMap(&_Hermez.CallOpts, arg0, arg1)
 290}
 291
 292// ExitRootsMap is a free data retrieval call binding the contract method 0x3ee641ea.
 293//
 294// Solidity: function exitRootsMap(uint32 ) view returns(uint256)
 295func (_Hermez *HermezCaller) ExitRootsMap(opts *bind.CallOpts, arg0 uint32) (*big.Int, error) {
 296	var (
 297		ret0 = new(*big.Int)
 298	)
 299	out := ret0
 300	err := _Hermez.contract.Call(opts, out, "exitRootsMap", arg0)
 301	return *ret0, tracerr.Wrap(err)
 302}
 303
 304// ExitRootsMap is a free data retrieval call binding the contract method 0x3ee641ea.
 305//
 306// Solidity: function exitRootsMap(uint32 ) view returns(uint256)
 307func (_Hermez *HermezSession) ExitRootsMap(arg0 uint32) (*big.Int, error) {
 308	return _Hermez.Contract.ExitRootsMap(&_Hermez.CallOpts, arg0)
 309}
 310
 311// ExitRootsMap is a free data retrieval call binding the contract method 0x3ee641ea.
 312//
 313// Solidity: function exitRootsMap(uint32 ) view returns(uint256)
 314func (_Hermez *HermezCallerSession) ExitRootsMap(arg0 uint32) (*big.Int, error) {
 315	return _Hermez.Contract.ExitRootsMap(&_Hermez.CallOpts, arg0)
 316}
 317
 318// FeeAddToken is a free data retrieval call binding the contract method 0xbded9bb8.
 319//
 320// Solidity: function feeAddToken() view returns(uint256)
 321func (_Hermez *HermezCaller) FeeAddToken(opts *bind.CallOpts) (*big.Int, error) {
 322	var (
 323		ret0 = new(*big.Int)
 324	)
 325	out := ret0
 326	err := _Hermez.contract.Call(opts, out, "feeAddToken")
 327	return *ret0, tracerr.Wrap(err)
 328}
 329
 330// FeeAddToken is a free data retrieval call binding the contract method 0xbded9bb8.
 331//
 332// Solidity: function feeAddToken() view returns(uint256)
 333func (_Hermez *HermezSession) FeeAddToken() (*big.Int, error) {
 334	return _Hermez.Contract.FeeAddToken(&_Hermez.CallOpts)
 335}
 336
 337// FeeAddToken is a free data retrieval call binding the contract method 0xbded9bb8.
 338//
 339// Solidity: function feeAddToken() view returns(uint256)
 340func (_Hermez *HermezCallerSession) FeeAddToken() (*big.Int, error) {
 341	return _Hermez.Contract.FeeAddToken(&_Hermez.CallOpts)
 342}
 343
 344// ForgeL1L2BatchTimeout is a free data retrieval call binding the contract method 0xa3275838.
 345//
 346// Solidity: function forgeL1L2BatchTimeout() view returns(uint8)
 347func (_Hermez *HermezCaller) ForgeL1L2BatchTimeout(opts *bind.CallOpts) (uint8, error) {
 348	var (
 349		ret0 = new(uint8)
 350	)
 351	out := ret0
 352	err := _Hermez.contract.Call(opts, out, "forgeL1L2BatchTimeout")
 353	return *ret0, tracerr.Wrap(err)
 354}
 355
 356// ForgeL1L2BatchTimeout is a free data retrieval call binding the contract method 0xa3275838.
 357//
 358// Solidity: function forgeL1L2BatchTimeout() view returns(uint8)
 359func (_Hermez *HermezSession) ForgeL1L2BatchTimeout() (uint8, error) {
 360	return _Hermez.Contract.ForgeL1L2BatchTimeout(&_Hermez.CallOpts)
 361}
 362
 363// ForgeL1L2BatchTimeout is a free data retrieval call binding the contract method 0xa3275838.
 364//
 365// Solidity: function forgeL1L2BatchTimeout() view returns(uint8)
 366func (_Hermez *HermezCallerSession) ForgeL1L2BatchTimeout() (uint8, error) {
 367	return _Hermez.Contract.ForgeL1L2BatchTimeout(&_Hermez.CallOpts)
 368}
 369
 370// HermezAuctionContract is a free data retrieval call binding the contract method 0x2bd83626.
 371//
 372// Solidity: function hermezAuctionContract() view returns(address)
 373func (_Hermez *HermezCaller) HermezAuctionContract(opts *bind.CallOpts) (common.Address, error) {
 374	var (
 375		ret0 = new(common.Address)
 376	)
 377	out := ret0
 378	err := _Hermez.contract.Call(opts, out, "hermezAuctionContract")
 379	return *ret0, tracerr.Wrap(err)
 380}
 381
 382// HermezAuctionContract is a free data retrieval call binding the contract method 0x2bd83626.
 383//
 384// Solidity: function hermezAuctionContract() view returns(address)
 385func (_Hermez *HermezSession) HermezAuctionContract() (common.Address, error) {
 386	return _Hermez.Contract.HermezAuctionContract(&_Hermez.CallOpts)
 387}
 388
 389// HermezAuctionContract is a free data retrieval call binding the contract method 0x2bd83626.
 390//
 391// Solidity: function hermezAuctionContract() view returns(address)
 392func (_Hermez *HermezCallerSession) HermezAuctionContract() (common.Address, error) {
 393	return _Hermez.Contract.HermezAuctionContract(&_Hermez.CallOpts)
 394}
 395
 396// HermezGovernanceAddress is a free data retrieval call binding the contract method 0x013f7852.
 397//
 398// Solidity: function hermezGovernanceAddress() view returns(address)
 399func (_Hermez *HermezCaller) HermezGovernanceAddress(opts *bind.CallOpts) (common.Address, error) {
 400	var (
 401		ret0 = new(common.Address)
 402	)
 403	out := ret0
 404	err := _Hermez.contract.Call(opts, out, "hermezGovernanceAddress")
 405	return *ret0, tracerr.Wrap(err)
 406}
 407
 408// HermezGovernanceAddress is a free data retrieval call binding the contract method 0x013f7852.
 409//
 410// Solidity: function hermezGovernanceAddress() view returns(address)
 411func (_Hermez *HermezSession) HermezGovernanceAddress() (common.Address, error) {
 412	return _Hermez.Contract.HermezGovernanceAddress(&_Hermez.CallOpts)
 413}
 414
 415// HermezGovernanceAddress is a free data retrieval call binding the contract method 0x013f7852.
 416//
 417// Solidity: function hermezGovernanceAddress() view returns(address)
 418func (_Hermez *HermezCallerSession) HermezGovernanceAddress() (common.Address, error) {
 419	return _Hermez.Contract.HermezGovernanceAddress(&_Hermez.CallOpts)
 420}
 421
 422// InstantWithdrawalViewer is a free data retrieval call binding the contract method 0x375110aa.
 423//
 424// Solidity: function instantWithdrawalViewer(address tokenAddress, uint192 amount) view returns(bool)
 425func (_Hermez *HermezCaller) InstantWithdrawalViewer(opts *bind.CallOpts, tokenAddress common.Address, amount *big.Int) (bool, error) {
 426	var (
 427		ret0 = new(bool)
 428	)
 429	out := ret0
 430	err := _Hermez.contract.Call(opts, out, "instantWithdrawalViewer", tokenAddress, amount)
 431	return *ret0, tracerr.Wrap(err)
 432}
 433
 434// InstantWithdrawalViewer is a free data retrieval call binding the contract method 0x375110aa.
 435//
 436// Solidity: function instantWithdrawalViewer(address tokenAddress, uint192 amount) view returns(bool)
 437func (_Hermez *HermezSession) InstantWithdrawalViewer(tokenAddress common.Address, amount *big.Int) (bool, error) {
 438	return _Hermez.Contract.InstantWithdrawalViewer(&_Hermez.CallOpts, tokenAddress, amount)
 439}
 440
 441// InstantWithdrawalViewer is a free data retrieval call binding the contract method 0x375110aa.
 442//
 443// Solidity: function instantWithdrawalViewer(address tokenAddress, uint192 amount) view returns(bool)
 444func (_Hermez *HermezCallerSession) InstantWithdrawalViewer(tokenAddress common.Address, amount *big.Int) (bool, error) {
 445	return _Hermez.Contract.InstantWithdrawalViewer(&_Hermez.CallOpts, tokenAddress, amount)
 446}
 447
 448// LastForgedBatch is a free data retrieval call binding the contract method 0x44e0b2ce.
 449//
 450// Solidity: function lastForgedBatch() view returns(uint32)
 451func (_Hermez *HermezCaller) LastForgedBatch(opts *bind.CallOpts) (uint32, error) {
 452	var (
 453		ret0 = new(uint32)
 454	)
 455	out := ret0
 456	err := _Hermez.contract.Call(opts, out, "lastForgedBatch")
 457	return *ret0, tracerr.Wrap(err)
 458}
 459
 460// LastForgedBatch is a free data retrieval call binding the contract method 0x44e0b2ce.
 461//
 462// Solidity: function lastForgedBatch() view returns(uint32)
 463func (_Hermez *HermezSession) LastForgedBatch() (uint32, error) {
 464	return _Hermez.Contract.LastForgedBatch(&_Hermez.CallOpts)
 465}
 466
 467// LastForgedBatch is a free data retrieval call binding the contract method 0x44e0b2ce.
 468//
 469// Solidity: function lastForgedBatch() view returns(uint32)
 470func (_Hermez *HermezCallerSession) LastForgedBatch() (uint32, error) {
 471	return _Hermez.Contract.LastForgedBatch(&_Hermez.CallOpts)
 472}
 473
 474// LastIdx is a free data retrieval call binding the contract method 0xd486645c.
 475//
 476// Solidity: function lastIdx() view returns(uint48)
 477func (_Hermez *HermezCaller) LastIdx(opts *bind.CallOpts) (*big.Int, error) {
 478	var (
 479		ret0 = new(*big.Int)
 480	)
 481	out := ret0
 482	err := _Hermez.contract.Call(opts, out, "lastIdx")
 483	return *ret0, tracerr.Wrap(err)
 484}
 485
 486// LastIdx is a free data retrieval call binding the contract method 0xd486645c.
 487//
 488// Solidity: function lastIdx() view returns(uint48)
 489func (_Hermez *HermezSession) LastIdx() (*big.Int, error) {
 490	return _Hermez.Contract.LastIdx(&_Hermez.CallOpts)
 491}
 492
 493// LastIdx is a free data retrieval call binding the contract method 0xd486645c.
 494//
 495// Solidity: function lastIdx() view returns(uint48)
 496func (_Hermez *HermezCallerSession) LastIdx() (*big.Int, error) {
 497	return _Hermez.Contract.LastIdx(&_Hermez.CallOpts)
 498}
 499
 500// LastL1L2Batch is a free data retrieval call binding the contract method 0x84ef9ed4.
 501//
 502// Solidity: function lastL1L2Batch() view returns(uint64)
 503func (_Hermez *HermezCaller) LastL1L2Batch(opts *bind.CallOpts) (uint64, error) {
 504	var (
 505		ret0 = new(uint64)
 506	)
 507	out := ret0
 508	err := _Hermez.contract.Call(opts, out, "lastL1L2Batch")
 509	return *ret0, tracerr.Wrap(err)
 510}
 511
 512// LastL1L2Batch is a free data retrieval call binding the contract method 0x84ef9ed4.
 513//
 514// Solidity: function lastL1L2Batch() view returns(uint64)
 515func (_Hermez *HermezSession) LastL1L2Batch() (uint64, error) {
 516	return _Hermez.Contract.LastL1L2Batch(&_Hermez.CallOpts)
 517}
 518
 519// LastL1L2Batch is a free data retrieval call binding the contract method 0x84ef9ed4.
 520//
 521// Solidity: function lastL1L2Batch() view returns(uint64)
 522func (_Hermez *HermezCallerSession) LastL1L2Batch() (uint64, error) {
 523	return _Hermez.Contract.LastL1L2Batch(&_Hermez.CallOpts)
 524}
 525
 526// MapL1TxQueue is a free data retrieval call binding the contract method 0xdc3e718e.
 527//
 528// Solidity: function mapL1TxQueue(uint32 ) view returns(bytes)
 529func (_Hermez *HermezCaller) MapL1TxQueue(opts *bind.CallOpts, arg0 uint32) ([]byte, error) {
 530	var (
 531		ret0 = new([]byte)
 532	)
 533	out := ret0
 534	err := _Hermez.contract.Call(opts, out, "mapL1TxQueue", arg0)
 535	return *ret0, tracerr.Wrap(err)
 536}
 537
 538// MapL1TxQueue is a free data retrieval call binding the contract method 0xdc3e718e.
 539//
 540// Solidity: function mapL1TxQueue(uint32 ) view returns(bytes)
 541func (_Hermez *HermezSession) MapL1TxQueue(arg0 uint32) ([]byte, error) {
 542	return _Hermez.Contract.MapL1TxQueue(&_Hermez.CallOpts, arg0)
 543}
 544
 545// MapL1TxQueue is a free data retrieval call binding the contract method 0xdc3e718e.
 546//
 547// Solidity: function mapL1TxQueue(uint32 ) view returns(bytes)
 548func (_Hermez *HermezCallerSession) MapL1TxQueue(arg0 uint32) ([]byte, error) {
 549	return _Hermez.Contract.MapL1TxQueue(&_Hermez.CallOpts, arg0)
 550}
 551
 552// NextL1FillingQueue is a free data retrieval call binding the contract method 0x0ee8e52b.
 553//
 554// Solidity: function nextL1FillingQueue() view returns(uint32)
 555func (_Hermez *HermezCaller) NextL1FillingQueue(opts *bind.CallOpts) (uint32, error) {
 556	var (
 557		ret0 = new(uint32)
 558	)
 559	out := ret0
 560	err := _Hermez.contract.Call(opts, out, "nextL1FillingQueue")
 561	return *ret0, tracerr.Wrap(err)
 562}
 563
 564// NextL1FillingQueue is a free data retrieval call binding the contract method 0x0ee8e52b.
 565//
 566// Solidity: function nextL1FillingQueue() view returns(uint32)
 567func (_Hermez *HermezSession) NextL1FillingQueue() (uint32, error) {
 568	return _Hermez.Contract.NextL1FillingQueue(&_Hermez.CallOpts)
 569}
 570
 571// NextL1FillingQueue is a free data retrieval call binding the contract method 0x0ee8e52b.
 572//
 573// Solidity: function nextL1FillingQueue() view returns(uint32)
 574func (_Hermez *HermezCallerSession) NextL1FillingQueue() (uint32, error) {
 575	return _Hermez.Contract.NextL1FillingQueue(&_Hermez.CallOpts)
 576}
 577
 578// NextL1ToForgeQueue is a free data retrieval call binding the contract method 0xd0f32e67.
 579//
 580// Solidity: function nextL1ToForgeQueue() view returns(uint32)
 581func (_Hermez *HermezCaller) NextL1ToForgeQueue(opts *bind.CallOpts) (uint32, error) {
 582	var (
 583		ret0 = new(uint32)
 584	)
 585	out := ret0
 586	err := _Hermez.contract.Call(opts, out, "nextL1ToForgeQueue")
 587	return *ret0, tracerr.Wrap(err)
 588}
 589
 590// NextL1ToForgeQueue is a free data retrieval call binding the contract method 0xd0f32e67.
 591//
 592// Solidity: function nextL1ToForgeQueue() view returns(uint32)
 593func (_Hermez *HermezSession) NextL1ToForgeQueue() (uint32, error) {
 594	return _Hermez.Contract.NextL1ToForgeQueue(&_Hermez.CallOpts)
 595}
 596
 597// NextL1ToForgeQueue is a free data retrieval call binding the contract method 0xd0f32e67.
 598//
 599// Solidity: function nextL1ToForgeQueue() view returns(uint32)
 600func (_Hermez *HermezCallerSession) NextL1ToForgeQueue() (uint32, error) {
 601	return _Hermez.Contract.NextL1ToForgeQueue(&_Hermez.CallOpts)
 602}
 603
 604// RegisterTokensCount is a free data retrieval call binding the contract method 0x9f34e9a3.
 605//
 606// Solidity: function registerTokensCount() view returns(uint256)
 607func (_Hermez *HermezCaller) RegisterTokensCount(opts *bind.CallOpts) (*big.Int, error) {
 608	var (
 609		ret0 = new(*big.Int)
 610	)
 611	out := ret0
 612	err := _Hermez.contract.Call(opts, out, "registerTokensCount")
 613	return *ret0, tracerr.Wrap(err)
 614}
 615
 616// RegisterTokensCount is a free data retrieval call binding the contract method 0x9f34e9a3.
 617//
 618// Solidity: function registerTokensCount() view returns(uint256)
 619func (_Hermez *HermezSession) RegisterTokensCount() (*big.Int, error) {
 620	return _Hermez.Contract.RegisterTokensCount(&_Hermez.CallOpts)
 621}
 622
 623// RegisterTokensCount is a free data retrieval call binding the contract method 0x9f34e9a3.
 624//
 625// Solidity: function registerTokensCount() view returns(uint256)
 626func (_Hermez *HermezCallerSession) RegisterTokensCount() (*big.Int, error) {
 627	return _Hermez.Contract.RegisterTokensCount(&_Hermez.CallOpts)
 628}
 629
 630// RollupVerifiers is a free data retrieval call binding the contract method 0x38330200.
 631//
 632// Solidity: function rollupVerifiers(uint256 ) view returns(address verifierInterface, uint256 maxTx, uint256 nLevels)
 633func (_Hermez *HermezCaller) RollupVerifiers(opts *bind.CallOpts, arg0 *big.Int) (struct {
 634	VerifierInterface common.Address
 635	MaxTx             *big.Int
 636	NLevels           *big.Int
 637}, error) {
 638	ret := new(struct {
 639		VerifierInterface common.Address
 640		MaxTx             *big.Int
 641		NLevels           *big.Int
 642	})
 643	out := ret
 644	err := _Hermez.contract.Call(opts, out, "rollupVerifiers", arg0)
 645	return *ret, tracerr.Wrap(err)
 646}
 647
 648// RollupVerifiers is a free data retrieval call binding the contract method 0x38330200.
 649//
 650// Solidity: function rollupVerifiers(uint256 ) view returns(address verifierInterface, uint256 maxTx, uint256 nLevels)
 651func (_Hermez *HermezSession) RollupVerifiers(arg0 *big.Int) (struct {
 652	VerifierInterface common.Address
 653	MaxTx             *big.Int
 654	NLevels           *big.Int
 655}, error) {
 656	return _Hermez.Contract.RollupVerifiers(&_Hermez.CallOpts, arg0)
 657}
 658
 659// RollupVerifiers is a free data retrieval call binding the contract method 0x38330200.
 660//
 661// Solidity: function rollupVerifiers(uint256 ) view returns(address verifierInterface, uint256 maxTx, uint256 nLevels)
 662func (_Hermez *HermezCallerSession) RollupVerifiers(arg0 *big.Int) (struct {
 663	VerifierInterface common.Address
 664	MaxTx             *big.Int
 665	NLevels           *big.Int
 666}, error) {
 667	return _Hermez.Contract.RollupVerifiers(&_Hermez.CallOpts, arg0)
 668}
 669
 670// StateRootMap is a free data retrieval call binding the contract method 0x9e00d7ea.
 671//
 672// Solidity: function stateRootMap(uint32 ) view returns(uint256)
 673func (_Hermez *HermezCaller) StateRootMap(opts *bind.CallOpts, arg0 uint32) (*big.Int, error) {
 674	var (
 675		ret0 = new(*big.Int)
 676	)
 677	out := ret0
 678	err := _Hermez.contract.Call(opts, out, "stateRootMap", arg0)
 679	return *ret0, tracerr.Wrap(err)
 680}
 681
 682// StateRootMap is a free data retrieval call binding the contract method 0x9e00d7ea.
 683//
 684// Solidity: function stateRootMap(uint32 ) view returns(uint256)
 685func (_Hermez *HermezSession) StateRootMap(arg0 uint32) (*big.Int, error) {
 686	return _Hermez.Contract.StateRootMap(&_Hermez.CallOpts, arg0)
 687}
 688
 689// StateRootMap is a free data retrieval call binding the contract method 0x9e00d7ea.
 690//
 691// Solidity: function stateRootMap(uint32 ) view returns(uint256)
 692func (_Hermez *HermezCallerSession) StateRootMap(arg0 uint32) (*big.Int, error) {
 693	return _Hermez.Contract.StateRootMap(&_Hermez.CallOpts, arg0)
 694}
 695
 696// TokenExchange is a free data retrieval call binding the contract method 0x0dd94b96.
 697//
 698// Solidity: function tokenExchange(address ) view returns(uint64)
 699func (_Hermez *HermezCaller) TokenExchange(opts *bind.CallOpts, arg0 common.Address) (uint64, error) {
 700	var (
 701		ret0 = new(uint64)
 702	)
 703	out := ret0
 704	err := _Hermez.contract.Call(opts, out, "tokenExchange", arg0)
 705	return *ret0, tracerr.Wrap(err)
 706}
 707
 708// TokenExchange is a free data retrieval call binding the contract method 0x0dd94b96.
 709//
 710// Solidity: function tokenExchange(address ) view returns(uint64)
 711func (_Hermez *HermezSession) TokenExchange(arg0 common.Address) (uint64, error) {
 712	return _Hermez.Contract.TokenExchange(&_Hermez.CallOpts, arg0)
 713}
 714
 715// TokenExchange is a free data retrieval call binding the contract method 0x0dd94b96.
 716//
 717// Solidity: function tokenExchange(address ) view returns(uint64)
 718func (_Hermez *HermezCallerSession) TokenExchange(arg0 common.Address) (uint64, error) {
 719	return _Hermez.Contract.TokenExchange(&_Hermez.CallOpts, arg0)
 720}
 721
 722// TokenHEZ is a free data retrieval call binding the contract method 0x79a135e3.
 723//
 724// Solidity: function tokenHEZ() view returns(address)
 725func (_Hermez *HermezCaller) TokenHEZ(opts *bind.CallOpts) (common.Address, error) {
 726	var (
 727		ret0 = new(common.Address)
 728	)
 729	out := ret0
 730	err := _Hermez.contract.Call(opts, out, "tokenHEZ")
 731	return *ret0, tracerr.Wrap(err)
 732}
 733
 734// TokenHEZ is a free data retrieval call binding the contract method 0x79a135e3.
 735//
 736// Solidity: function tokenHEZ() view returns(address)
 737func (_Hermez *HermezSession) TokenHEZ() (common.Address, error) {
 738	return _Hermez.Contract.TokenHEZ(&_Hermez.CallOpts)
 739}
 740
 741// TokenHEZ is a free data retrieval call binding the contract method 0x79a135e3.
 742//
 743// Solidity: function tokenHEZ() view returns(address)
 744func (_Hermez *HermezCallerSession) TokenHEZ() (common.Address, error) {
 745	return _Hermez.Contract.TokenHEZ(&_Hermez.CallOpts)
 746}
 747
 748// TokenList is a free data retrieval call binding the contract method 0x9ead7222.
 749//
 750// Solidity: function tokenList(uint256 ) view returns(address)
 751func (_Hermez *HermezCaller) TokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
 752	var (
 753		ret0 = new(common.Address)
 754	)
 755	out := ret0
 756	err := _Hermez.contract.Call(opts, out, "tokenList", arg0)
 757	return *ret0, tracerr.Wrap(err)
 758}
 759
 760// TokenList is a free data retrieval call binding the contract method 0x9ead7222.
 761//
 762// Solidity: function tokenList(uint256 ) view returns(address)
 763func (_Hermez *HermezSession) TokenList(arg0 *big.Int) (common.Address, error) {
 764	return _Hermez.Contract.TokenList(&_Hermez.CallOpts, arg0)
 765}
 766
 767// TokenList is a free data retrieval call binding the contract method 0x9ead7222.
 768//
 769// Solidity: function tokenList(uint256 ) view returns(address)
 770func (_Hermez *HermezCallerSession) TokenList(arg0 *big.Int) (common.Address, error) {
 771	return _Hermez.Contract.TokenList(&_Hermez.CallOpts, arg0)
 772}
 773
 774// TokenMap is a free data retrieval call binding the contract method 0x004aca6e.
 775//
 776// Solidity: function tokenMap(address ) view returns(uint256)
 777func (_Hermez *HermezCaller) TokenMap(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
 778	var (
 779		ret0 = new(*big.Int)
 780	)
 781	out := ret0
 782	err := _Hermez.contract.Call(opts, out, "tokenMap", arg0)
 783	return *ret0, tracerr.Wrap(err)
 784}
 785
 786// TokenMap is a free data retrieval call binding the contract method 0x004aca6e.
 787//
 788// Solidity: function tokenMap(address ) view returns(uint256)
 789func (_Hermez *HermezSession) TokenMap(arg0 common.Address) (*big.Int, error) {
 790	return _Hermez.Contract.TokenMap(&_Hermez.CallOpts, arg0)
 791}
 792
 793// TokenMap is a free data retrieval call binding the contract method 0x004aca6e.
 794//
 795// Solidity: function tokenMap(address ) view returns(uint256)
 796func (_Hermez *HermezCallerSession) TokenMap(arg0 common.Address) (*big.Int, error) {
 797	return _Hermez.Contract.TokenMap(&_Hermez.CallOpts, arg0)
 798}
 799
 800// WithdrawDelayerContract is a free data retrieval call binding the contract method 0x1b0a8223.
 801//
 802// Solidity: function withdrawDelayerContract() view returns(address)
 803func (_Hermez *HermezCaller) WithdrawDelayerContract(opts *bind.CallOpts) (common.Address, error) {
 804	var (
 805		ret0 = new(common.Address)
 806	)
 807	out := ret0
 808	err := _Hermez.contract.Call(opts, out, "withdrawDelayerContract")
 809	return *ret0, tracerr.Wrap(err)
 810}
 811
 812// WithdrawDelayerContract is a free data retrieval call binding the contract method 0x1b0a8223.
 813//
 814// Solidity: function withdrawDelayerContract() view returns(address)
 815func (_Hermez *HermezSession) WithdrawDelayerContract() (common.Address, error) {
 816	return _Hermez.Contract.WithdrawDelayerContract(&_Hermez.CallOpts)
 817}
 818
 819// WithdrawDelayerContract is a free data retrieval call binding the contract method 0x1b0a8223.
 820//
 821// Solidity: function withdrawDelayerContract() view returns(address)
 822func (_Hermez *HermezCallerSession) WithdrawDelayerContract() (common.Address, error) {
 823	return _Hermez.Contract.WithdrawDelayerContract(&_Hermez.CallOpts)
 824}
 825
 826// WithdrawVerifier is a free data retrieval call binding the contract method 0x864eb164.
 827//
 828// Solidity: function withdrawVerifier() view returns(address)
 829func (_Hermez *HermezCaller) WithdrawVerifier(opts *bind.CallOpts) (common.Address, error) {
 830	var (
 831		ret0 = new(common.Address)
 832	)
 833	out := ret0
 834	err := _Hermez.contract.Call(opts, out, "withdrawVerifier")
 835	return *ret0, tracerr.Wrap(err)
 836}
 837
 838// WithdrawVerifier is a free data retrieval call binding the contract method 0x864eb164.
 839//
 840// Solidity: function withdrawVerifier() view returns(address)
 841func (_Hermez *HermezSession) WithdrawVerifier() (common.Address, error) {
 842	return _Hermez.Contract.WithdrawVerifier(&_Hermez.CallOpts)
 843}
 844
 845// WithdrawVerifier is a free data retrieval call binding the contract method 0x864eb164.
 846//
 847// Solidity: function withdrawVerifier() view returns(address)
 848func (_Hermez *HermezCallerSession) WithdrawVerifier() (common.Address, error) {
 849	return _Hermez.Contract.WithdrawVerifier(&_Hermez.CallOpts)
 850}
 851
 852// WithdrawalDelay is a free data retrieval call binding the contract method 0xa7ab6961.
 853//
 854// Solidity: function withdrawalDelay() view returns(uint64)
 855func (_Hermez *HermezCaller) WithdrawalDelay(opts *bind.CallOpts) (uint64, error) {
 856	var (
 857		ret0 = new(uint64)
 858	)
 859	out := ret0
 860	err := _Hermez.contract.Call(opts, out, "withdrawalDelay")
 861	return *ret0, tracerr.Wrap(err)
 862}
 863
 864// WithdrawalDelay is a free data retrieval call binding the contract method 0xa7ab6961.
 865//
 866// Solidity: function withdrawalDelay() view returns(uint64)
 867func (_Hermez *HermezSession) WithdrawalDelay() (uint64, error) {
 868	return _Hermez.Contract.WithdrawalDelay(&_Hermez.CallOpts)
 869}
 870
 871// WithdrawalDelay is a free data retrieval call binding the contract method 0xa7ab6961.
 872//
 873// Solidity: function withdrawalDelay() view returns(uint64)
 874func (_Hermez *HermezCallerSession) WithdrawalDelay() (uint64, error) {
 875	return _Hermez.Contract.WithdrawalDelay(&_Hermez.CallOpts)
 876}
 877
 878// AddL1Transaction is a paid mutator transaction binding the contract method 0x886df587.
 879//
 880// Solidity: function addL1Transaction(uint256 babyPubKey, uint48 fromIdx, uint16 loadAmountF, uint16 amountF, uint32 tokenID, uint48 toIdx, bytes permit) payable returns()
 881func (_Hermez *HermezTransactor) AddL1Transaction(opts *bind.TransactOpts, babyPubKey *big.Int, fromIdx *big.Int, loadAmountF uint16, amountF uint16, tokenID uint32, toIdx *big.Int, permit []byte) (*types.Transaction, error) {
 882	return _Hermez.contract.Transact(opts, "addL1Transaction", babyPubKey, fromIdx, loadAmountF, amountF, tokenID, toIdx, permit)
 883}
 884
 885// AddL1Transaction is a paid mutator transaction binding the contract method 0x886df587.
 886//
 887// Solidity: function addL1Transaction(uint256 babyPubKey, uint48 fromIdx, uint16 loadAmountF, uint16 amountF, uint32 tokenID, uint48 toIdx, bytes permit) payable returns()
 888func (_Hermez *HermezSession) AddL1Transaction(babyPubKey *big.Int, fromIdx *big.Int, loadAmountF uint16, amountF uint16, tokenID uint32, toIdx *big.Int, permit []byte) (*types.Transaction, error) {
 889	return _Hermez.Contract.AddL1Transaction(&_Hermez.TransactOpts, babyPubKey, fromIdx, loadAmountF, amountF, tokenID, toIdx, permit)
 890}
 891
 892// AddL1Transaction is a paid mutator transaction binding the contract method 0x886df587.
 893//
 894// Solidity: function addL1Transaction(uint256 babyPubKey, uint48 fromIdx, uint16 loadAmountF, uint16 amountF, uint32 tokenID, uint48 toIdx, bytes permit) payable returns()
 895func (_Hermez *HermezTransactorSession) AddL1Transaction(babyPubKey *big.Int, fromIdx *big.Int, loadAmountF uint16, amountF uint16, tokenID uint32, toIdx *big.Int, permit []byte) (*types.Transaction, error) {
 896	return _Hermez.Contract.AddL1Transaction(&_Hermez.TransactOpts, babyPubKey, fromIdx, loadAmountF, amountF, tokenID, toIdx, permit)
 897}
 898
 899// AddToken is a paid mutator transaction binding the contract method 0x70c2f1c0.
 900//
 901// Solidity: function addToken(address tokenAddress, bytes permit) returns()
 902func (_Hermez *HermezTransactor) AddToken(opts *bind.TransactOpts, tokenAddress common.Address, permit []byte) (*types.Transaction, error) {
 903	return _Hermez.contract.Transact(opts, "addToken", tokenAddress, permit)
 904}
 905
 906// AddToken is a paid mutator transaction binding the contract method 0x70c2f1c0.
 907//
 908// Solidity: function addToken(address tokenAddress, bytes permit) returns()
 909func (_Hermez *HermezSession) AddToken(tokenAddress common.Address, permit []byte) (*types.Transaction, error) {
 910	return _Hermez.Contract.AddToken(&_Hermez.TransactOpts, tokenAddress, permit)
 911}
 912
 913// AddToken is a paid mutator transaction binding the contract method 0x70c2f1c0.
 914//
 915// Solidity: function addToken(address tokenAddress, bytes permit) returns()
 916func (_Hermez *HermezTransactorSession) AddToken(tokenAddress common.Address, permit []byte) (*types.Transaction, error) {
 917	return _Hermez.Contract.AddToken(&_Hermez.TransactOpts, tokenAddress, permit)
 918}
 919
 920// ForgeBatch is a paid mutator transaction binding the contract method 0x6e7e1365.
 921//
 922// Solidity: function forgeBatch(uint48 newLastIdx, uint256 newStRoot, uint256 newExitRoot, bytes encodedL1CoordinatorTx, bytes l1L2TxsData, bytes feeIdxCoordinator, uint8 verifierIdx, bool l1Batch, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns()
 923func (_Hermez *HermezTransactor) ForgeBatch(opts *bind.TransactOpts, newLastIdx *big.Int, newStRoot *big.Int, newExitRoot *big.Int, encodedL1CoordinatorTx []byte, l1L2TxsData []byte, feeIdxCoordinator []byte, verifierIdx uint8, l1Batch bool, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) {
 924	return _Hermez.contract.Transact(opts, "forgeBatch", newLastIdx, newStRoot, newExitRoot, encodedL1CoordinatorTx, l1L2TxsData, feeIdxCoordinator, verifierIdx, l1Batch, proofA, proofB, proofC)
 925}
 926
 927// ForgeBatch is a paid mutator transaction binding the contract method 0x6e7e1365.
 928//
 929// Solidity: function forgeBatch(uint48 newLastIdx, uint256 newStRoot, uint256 newExitRoot, bytes encodedL1CoordinatorTx, bytes l1L2TxsData, bytes feeIdxCoordinator, uint8 verifierIdx, bool l1Batch, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns()
 930func (_Hermez *HermezSession) ForgeBatch(newLastIdx *big.Int, newStRoot *big.Int, newExitRoot *big.Int, encodedL1CoordinatorTx []byte, l1L2TxsData []byte, feeIdxCoordinator []byte, verifierIdx uint8, l1Batch bool, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) {
 931	return _Hermez.Contract.ForgeBatch(&_Hermez.TransactOpts, newLastIdx, newStRoot, newExitRoot, encodedL1CoordinatorTx, l1L2TxsData, feeIdxCoordinator, verifierIdx, l1Batch, proofA, proofB, proofC)
 932}
 933
 934// ForgeBatch is a paid mutator transaction binding the contract method 0x6e7e1365.
 935//
 936// Solidity: function forgeBatch(uint48 newLastIdx, uint256 newStRoot, uint256 newExitRoot, bytes encodedL1CoordinatorTx, bytes l1L2TxsData, bytes feeIdxCoordinator, uint8 verifierIdx, bool l1Batch, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns()
 937func (_Hermez *HermezTransactorSession) ForgeBatch(newLastIdx *big.Int, newStRoot *big.Int, newExitRoot *big.Int, encodedL1CoordinatorTx []byte, l1L2TxsData []byte, feeIdxCoordinator []byte, verifierIdx uint8, l1Batch bool, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) {
 938	return _Hermez.Contract.ForgeBatch(&_Hermez.TransactOpts, newLastIdx, newStRoot, newExitRoot, encodedL1CoordinatorTx, l1L2TxsData, feeIdxCoordinator, verifierIdx, l1Batch, proofA, proofB, proofC)
 939}
 940
 941// InitializeHermez is a paid mutator transaction binding the contract method 0x599897e3.
 942//
 943// Solidity: function initializeHermez(address[] _verifiers, uint256[] _verifiersParams, address _withdrawVerifier, address _hermezAuctionContract, address _tokenHEZ, uint8 _forgeL1L2BatchTimeout, uint256 _feeAddToken, address _poseidon2Elements, address _poseidon3Elements, address _poseidon4Elements, address _hermezGovernanceAddress, uint64 _withdrawalDelay, address _withdrawDelayerContract) returns()
 944func (_Hermez *HermezTransactor) InitializeHermez(opts *bind.TransactOpts, _verifiers []common.Address, _verifiersParams []*big.Int, _withdrawVerifier common.Address, _hermezAuctionContract common.Address, _tokenHEZ common.Address, _forgeL1L2BatchTimeout uint8, _feeAddToken *big.Int, _poseidon2Elements common.Address, _poseidon3Elements common.Address, _poseidon4Elements common.Address, _hermezGovernanceAddress common.Address, _withdrawalDelay uint64, _withdrawDelayerContract common.Address) (*types.Transaction, error) {
 945	return _Hermez.contract.Transact(opts, "initializeHermez", _verifiers, _verifiersParams, _withdrawVerifier, _hermezAuctionContract, _tokenHEZ, _forgeL1L2BatchTimeout, _feeAddToken, _poseidon2Elements, _poseidon3Elements, _poseidon4Elements, _hermezGovernanceAddress, _withdrawalDelay, _withdrawDelayerContract)
 946}
 947
 948// InitializeHermez is a paid mutator transaction binding the contract method 0x599897e3.
 949//
 950// Solidity: function initializeHermez(address[] _verifiers, uint256[] _verifiersParams, address _withdrawVerifier, address _hermezAuctionContract, address _tokenHEZ, uint8 _forgeL1L2BatchTimeout, uint256 _feeAddToken, address _poseidon2Elements, address _poseidon3Elements, address _poseidon4Elements, address _hermezGovernanceAddress, uint64 _withdrawalDelay, address _withdrawDelayerContract) returns()
 951func (_Hermez *HermezSession) InitializeHermez(_verifiers []common.Address, _verifiersParams []*big.Int, _withdrawVerifier common.Address, _hermezAuctionContract common.Address, _tokenHEZ common.Address, _forgeL1L2BatchTimeout uint8, _feeAddToken *big.Int, _poseidon2Elements common.Address, _poseidon3Elements common.Address, _poseidon4Elements common.Address, _hermezGovernanceAddress common.Address, _withdrawalDelay uint64, _withdrawDelayerContract common.Address) (*types.Transaction, error) {
 952	return _Hermez.Contract.InitializeHermez(&_Hermez.TransactOpts, _verifiers, _verifiersParams, _withdrawVerifier, _hermezAuctionContract, _tokenHEZ, _forgeL1L2BatchTimeout, _feeAddToken, _poseidon2Elements, _poseidon3Elements, _poseidon4Elements, _hermezGovernanceAddress, _withdrawalDelay, _withdrawDelayerContract)
 953}
 954
 955// InitializeHermez is a paid mutator transaction binding the contract method 0x599897e3.
 956//
 957// Solidity: function initializeHermez(address[] _verifiers, uint256[] _verifiersParams, address _withdrawVerifier, address _hermezAuctionContract, address _tokenHEZ, uint8 _forgeL1L2BatchTimeout, uint256 _feeAddToken, address _poseidon2Elements, address _poseidon3Elements, address _poseidon4Elements, address _hermezGovernanceAddress, uint64 _withdrawalDelay, address _withdrawDelayerContract) returns()
 958func (_Hermez *HermezTransactorSession) InitializeHermez(_verifiers []common.Address, _verifiersParams []*big.Int, _withdrawVerifier common.Address, _hermezAuctionContract common.Address, _tokenHEZ common.Address, _forgeL1L2BatchTimeout uint8, _feeAddToken *big.Int, _poseidon2Elements common.Address, _poseidon3Elements common.Address, _poseidon4Elements common.Address, _hermezGovernanceAddress common.Address, _withdrawalDelay uint64, _withdrawDelayerContract common.Address) (*types.Transaction, error) {
 959	return _Hermez.Contract.InitializeHermez(&_Hermez.TransactOpts, _verifiers, _verifiersParams, _withdrawVerifier, _hermezAuctionContract, _tokenHEZ, _forgeL1L2BatchTimeout, _feeAddToken, _poseidon2Elements, _poseidon3Elements, _poseidon4Elements, _hermezGovernanceAddress, _withdrawalDelay, _withdrawDelayerContract)
 960}
 961
 962// SafeMode is a paid mutator transaction binding the contract method 0xabe3219c.
 963//
 964// Solidity: function safeMode() returns()
 965func (_Hermez *HermezTransactor) SafeMode(opts *bind.TransactOpts) (*types.Transaction, error) {
 966	return _Hermez.contract.Transact(opts, "safeMode")
 967}
 968
 969// SafeMode is a paid mutator transaction binding the contract method 0xabe3219c.
 970//
 971// Solidity: function safeMode() returns()
 972func (_Hermez *HermezSession) SafeMode() (*types.Transaction, error) {
 973	return _Hermez.Contract.SafeMode(&_Hermez.TransactOpts)
 974}
 975
 976// SafeMode is a paid mutator transaction binding the contract method 0xabe3219c.
 977//
 978// Solidity: function safeMode() returns()
 979func (_Hermez *HermezTransactorSession) SafeMode() (*types.Transaction, error) {
 980	return _Hermez.Contract.SafeMode(&_Hermez.TransactOpts)
 981}
 982
 983// UpdateBucketsParameters is a paid mutator transaction binding the contract method 0x68e95e53.
 984//
 985// Solidity: function updateBucketsParameters(uint256[4][5] arrayBuckets) returns()
 986func (_Hermez *HermezTransactor) UpdateBucketsParameters(opts *bind.TransactOpts, arrayBuckets [5][4]*big.Int) (*types.Transaction, error) {
 987	return _Hermez.contract.Transact(opts, "updateBucketsParameters", arrayBuckets)
 988}
 989
 990// UpdateBucketsParameters is a paid mutator transaction binding the contract method 0x68e95e53.
 991//
 992// Solidity: function updateBucketsParameters(uint256[4][5] arrayBuckets) returns()
 993func (_Hermez *HermezSession) UpdateBucketsParameters(arrayBuckets [5][4]*big.Int) (*types.Transaction, error) {
 994	return _Hermez.Contract.UpdateBucketsParameters(&_Hermez.TransactOpts, arrayBuckets)
 995}
 996
 997// UpdateBucketsParameters is a paid mutator transaction binding the contract method 0x68e95e53.
 998//
 999// Solidity: function updateBucketsParameters(uint256[4][5] arrayBuckets) returns()
1000func (_Hermez *HermezTransactorSession) UpdateBucketsParameters(arrayBuckets [5][4]*big.Int) (*types.Transaction, error) {
1001	return _Hermez.Contract.UpdateBucketsParameters(&_Hermez.TransactOpts, arrayBuckets)
1002}
1003
1004// UpdateFeeAddToken is a paid mutator transaction binding the contract method 0x314e5eda.
1005//
1006// Solidity: function updateFeeAddToken(uint256 newFeeAddToken) returns()
1007func (_Hermez *HermezTransactor) UpdateFeeAddToken(opts *bind.TransactOpts, newFeeAddToken *big.Int) (*types.Transaction, error) {
1008	return _Hermez.contract.Transact(opts, "updateFeeAddToken", newFeeAddToken)
1009}
1010
1011// UpdateFeeAddToken is a paid mutator transaction binding the contract method 0x314e5eda.
1012//
1013// Solidity: function updateFeeAddToken(uint256 newFeeAddToken) returns()
1014func (_Hermez *HermezSession) UpdateFeeAddToken(newFeeAddToken *big.Int) (*types.Transaction, error) {
1015	return _Hermez.Contract.UpdateFeeAddToken(&_Hermez.TransactOpts, newFeeAddToken)
1016}
1017
1018// UpdateFeeAddToken is a paid mutator transaction binding the contract method 0x314e5eda.
1019//
1020// Solidity: function updateFeeAddToken(uint256 newFeeAddToken) returns()
1021func (_Hermez *HermezTransactorSession) UpdateFeeAddToken(newFeeAddToken *big.Int) (*types.Transaction, error) {
1022	return _Hermez.Contract.UpdateFeeAddToken(&_Hermez.TransactOpts, newFeeAddToken)
1023}
1024
1025// UpdateForgeL1L2BatchTimeout is a paid mutator transaction binding the contract method 0xcbd7b5fb.
1026//
1027// Solidity: function updateForgeL1L2BatchTimeout(uint8 newForgeL1L2BatchTimeout) returns()
1028func (_Hermez *HermezTransactor) UpdateForgeL1L2BatchTimeout(opts *bind.TransactOpts, newForgeL1L2BatchTimeout uint8) (*types.Transaction, error) {
1029	return _Hermez.contract.Transact(opts, "updateForgeL1L2BatchTimeout", newForgeL1L2BatchTimeout)
1030}
1031
1032// UpdateForgeL1L2BatchTimeout is a paid mutator transaction binding the contract method 0xcbd7b5fb.
1033//
1034// Solidity: function updateForgeL1L2BatchTimeout(uint8 newForgeL1L2BatchTimeout) returns()
1035func (_Hermez *HermezSession) UpdateForgeL1L2BatchTimeout(newForgeL1L2BatchTimeout uint8) (*types.Transaction, error) {
1036	return _Hermez.Contract.UpdateForgeL1L2BatchTimeout(&_Hermez.TransactOpts, newForgeL1L2BatchTimeout)
1037}
1038
1039// UpdateForgeL1L2BatchTimeout is a paid mutator transaction binding the contract method 0xcbd7b5fb.
1040//
1041// Solidity: function updateForgeL1L2BatchTimeout(uint8 newForgeL1L2BatchTimeout) returns()
1042func (_Hermez *HermezTransactorSession) UpdateForgeL1L2BatchTimeout(newForgeL1L2BatchTimeout uint8) (*types.Transaction, error) {
1043	return _Hermez.Contract.UpdateForgeL1L2BatchTimeout(&_Hermez.TransactOpts, newForgeL1L2BatchTimeout)
1044}
1045
1046// UpdateTokenExchange is a paid mutator transaction binding the contract method 0x1a748c2d.
1047//
1048// Solidity: function updateTokenExchange(address[] addressArray, uint64[] valueArray) returns()
1049func (_Hermez *HermezTransactor) UpdateTokenExchange(opts *bind.TransactOpts, addressArray []common.Address, valueArray []uint64) (*types.Transaction, error) {
1050	return _Hermez.contract.Transact(opts, "updateTokenExchange", addressArray, valueArray)
1051}
1052
1053// UpdateTokenExchange is a paid mutator transaction binding the contract method 0x1a748c2d.
1054//
1055// Solidity: function updateTokenExchange(address[] addressArray, uint64[] valueArray) returns()
1056func (_Hermez *HermezSession) UpdateTokenExchange(addressArray []common.Address, valueArray []uint64) (*types.Transaction, error) {
1057	return _Hermez.Contract.UpdateTokenExchange(&_Hermez.TransactOpts, addressArray, valueArray)
1058}
1059
1060// UpdateTokenExchange is a paid mutator transaction binding the contract method 0x1a748c2d.
1061//
1062// Solidity: function updateTokenExchange(address[] addressArray, uint64[] valueArray) returns()
1063func (_Hermez *HermezTransactorSession) UpdateTokenExchange(addressArray []common.Address, valueArray []uint64) (*types.Transaction, error) {
1064	return _Hermez.Contract.UpdateTokenExchange(&_Hermez.TransactOpts, addressArray, valueArray)
1065}
1066
1067// UpdateWithdrawalDelay is a paid mutator transaction binding the contract method 0xef4a5c4a.
1068//
1069// Solidity: function updateWithdrawalDelay(uint64 newWithdrawalDelay) returns()
1070func (_Hermez *HermezTransactor) UpdateWithdrawalDelay(opts *bind.TransactOpts, newWithdrawalDelay uint64) (*types.Transaction, error) {
1071	return _Hermez.contract.Transact(opts, "updateWithdrawalDelay", newWithdrawalDelay)
1072}
1073
1074// UpdateWithdrawalDelay is a paid mutator transaction binding the contract method 0xef4a5c4a.
1075//
1076// Solidity: function updateWithdrawalDelay(uint64 newWithdrawalDelay) returns()
1077func (_Hermez *HermezSession) UpdateWithdrawalDelay(newWithdrawalDelay uint64) (*types.Transaction, error) {
1078	return _Hermez.Contract.UpdateWithdrawalDelay(&_Hermez.TransactOpts, newWithdrawalDelay)
1079}
1080
1081// UpdateWithdrawalDelay is a paid mutator transaction binding the contract method 0xef4a5c4a.
1082//
1083// Solidity: function updateWithdrawalDelay(uint64 newWithdrawalDelay) returns()
1084func (_Hermez *HermezTransactorSession) UpdateWithdrawalDelay(newWithdrawalDelay uint64) (*types.Transaction, error) {
1085	return _Hermez.Contract.UpdateWithdrawalDelay(&_Hermez.TransactOpts, newWithdrawalDelay)
1086}
1087
1088// WithdrawCircuit is a paid mutator transaction binding the contract method 0x9ce2ad42.
1089//
1090// Solidity: function withdrawCircuit(uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC, uint32 tokenID, uint192 amount, uint32 numExitRoot, uint48 idx, bool instantWithdraw) returns()
1091func (_Hermez *HermezTransactor) WithdrawCircuit(opts *bind.TransactOpts, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int, tokenID uint32, amount *big.Int, numExitRoot uint32, idx *big.Int, instantWithdraw bool) (*types.Transaction, error) {
1092	return _Hermez.contract.Transact(opts, "withdrawCircuit", proofA, proofB, proofC, tokenID, amount, numExitRoot, idx, instantWithdraw)
1093}
1094
1095// WithdrawCircuit is a paid mutator transaction binding the contract method 0x9ce2ad42.
1096//
1097// Solidity: function withdrawCircuit(uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC, uint32 tokenID, uint192 amount, uint32 numExitRoot, uint48 idx, bool instantWithdraw) returns()
1098func (_Hermez *HermezSession) WithdrawCircuit(proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int, tokenID uint32, amount *big.Int, numExitRoot uint32, idx *big.Int, instantWithdraw bool) (*types.Transaction, error) {
1099	return _Hermez.Contract.WithdrawCircuit(&_Hermez.TransactOpts, proofA, proofB, proofC, tokenID, amount, numExitRoot, idx, instantWithdraw)
1100}
1101
1102// WithdrawCircuit is a paid mutator transaction binding the contract method 0x9ce2ad42.
1103//
1104// Solidity: function withdrawCircuit(uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC, uint32 tokenID, uint192 amount, uint32 numExitRoot, uint48 idx, bool instantWithdraw) returns()
1105func (_Hermez *HermezTransactorSession) WithdrawCircuit(proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int, tokenID uint32, amount *big.Int, numExitRoot uint32, idx *big.Int, instantWithdraw bool) (*types.Transaction, error) {
1106	return _Hermez.Contract.WithdrawCircuit(&_Hermez.TransactOpts, proofA, proofB, proofC, tokenID, amount, numExitRoot, idx, instantWithdraw)
1107}
1108
1109// WithdrawMerkleProof is a paid mutator transaction binding the contract method 0xd9d4ca44.
1110//
1111// Solidity: function withdrawMerkleProof(uint32 tokenID, uint192 amount, uint256 babyPubKey, uint32 numExitRoot, uint256[] siblings, uint48 idx, bool instantWithdraw) returns()
1112func (_Hermez *HermezTransactor) WithdrawMerkleProof(opts *bind.TransactOpts, tokenID uint32, amount *big.Int, babyPubKey *big.Int, numExitRoot uint32, siblings []*big.Int, idx *big.Int, instantWithdraw bool) (*types.Transaction, error) {
1113	return _Hermez.contract.Transact(opts, "withdrawMerkleProof", tokenID, amount, babyPubKey, numExitRoot, siblings, idx, instantWithdraw)
1114}
1115
1116// WithdrawMerkleProof is a paid mutator transaction binding the contract method 0xd9d4ca44.
1117//
1118// Solidity: function withdrawMerkleProof(uint32 tokenID, uint192 amount, uint256 babyPubKey, uint32 numExitRoot, uint256[] siblings, uint48 idx, bool instantWithdraw) returns()
1119func (_Hermez *HermezSession) WithdrawMerkleProof(tokenID uint32, amount *big.Int, babyPubKey *big.Int, numExitRoot uint32, siblings []*big.Int, idx *big.Int, instantWithdraw bool) (*types.Transaction, error) {
1120	return _Hermez.Contract.WithdrawMerkleProof(&_Hermez.TransactOpts, tokenID, amount, babyPubKey, numExitRoot, siblings, idx, instantWithdraw)
1121}
1122
1123// WithdrawMerkleProof is a paid mutator transaction binding the contract method 0xd9d4ca44.
1124//
1125// Solidity: function withdrawMerkleProof(uint32 tokenID, uint192 amount, uint256 babyPubKey, uint32 numExitRoot, uint256[] siblings, uint48 idx, bool instantWithdraw) returns()
1126func (_Hermez *HermezTransactorSession) WithdrawMerkleProof(tokenID uint32, amount *big.Int, babyPubKey *big.Int, numExitRoot uint32, siblings []*big.Int, idx *big.Int, instantWithdraw bool) (*types.Transaction, error) {
1127	return _Hermez.Contract.WithdrawMerkleProof(&_Hermez.TransactOpts, tokenID, amount, babyPubKey, numExitRoot, siblings, idx, instantWithdraw)
1128}
1129
1130// HermezAddTokenIterator is returned from FilterAddToken and is used to iterate over the raw logs and unpacked data for AddToken events raised by the Hermez contract.
1131type HermezAddTokenIterator struct {
1132	Event *HermezAddToken // Event containing the contract specifics and raw log
1133
1134	contract *bind.BoundContract // Generic contract to use for unpacking event data
1135	event    string              // Event name to use for unpacking event data
1136
1137	logs chan types.Log        // Log channel receiving the found contract events
1138	sub  ethereum.Subscription // Subscription for errors, completion and termination
1139	done bool                  // Whether the subscription completed delivering logs
1140	fail error                 // Occurred error to stop iteration
1141}
1142
1143// Next advances the iterator to the subsequent event, returning whether there
1144// are any more events found. In case of a retrieval or parsing error, false is
1145// returned and Error() can be queried for the exact failure.
1146func (it *HermezAddTokenIterator) Next() bool {
1147	// If the iterator failed, stop iterating
1148	if it.fail != nil {
1149		return false
1150	}
1151	// If the iterator completed, deliver directly whatever's available
1152	if it.done {
1153		select {
1154		case log := <-it.logs:
1155			it.Event = new(HermezAddToken)
1156			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1157				it.fail = err
1158				return false
1159			}
1160			it.Event.Raw = log
1161			return true
1162
1163		default:
1164			return false
1165		}
1166	}
1167	// Iterator still in progress, wait for either a data or an error event
1168	select {
1169	case log := <-it.logs:
1170		it.Event = new(HermezAddToken)
1171		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1172			it.fail = err
1173			return false
1174		}
1175		it.Event.Raw = log
1176		return true
1177
1178	case err := <-it.sub.Err():
1179		it.done = true
1180		it.fail = err
1181		return it.Next()
1182	}
1183}
1184
1185// Error returns any retrieval or parsing error occurred during filtering.
1186func (it *HermezAddTokenIterator) Error() error {
1187	return it.fail
1188}
1189
1190// Close terminates the iteration process, releasing any pending underlying
1191// resources.
1192func (it *HermezAddTokenIterator) Close() error {
1193	it.sub.Unsubscribe()
1194	return nil
1195}
1196
1197// HermezAddToken represents a AddToken event raised by the Hermez contract.
1198type HermezAddToken struct {
1199	TokenAddress common.Address
1200	TokenID      uint32
1201	Raw          types.Log // Blockchain specific contextual infos
1202}
1203
1204// FilterAddToken is a free log retrieval operation binding the contract event 0xcb73d161edb7cd4fb1d92fedfd2555384fd997fd44ab507656f8c81e15747dde.
1205//
1206// Solidity: event AddToken(address indexed tokenAddress, uint32 tokenID)
1207func (_Hermez *HermezFilterer) FilterAddToken(opts *bind.FilterOpts, tokenAddress []common.Address) (*HermezAddTokenIterator, error) {
1208
1209	var tokenAddressRule []interface{}
1210	for _, tokenAddressItem := range tokenAddress {
1211		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
1212	}
1213
1214	logs, sub, err := _Hermez.contract.FilterLogs(opts, "AddToken", tokenAddressRule)
1215	if err != nil {
1216		return nil, tracerr.Wrap(err)
1217	}
1218	return &HermezAddTokenIterator{contract: _Hermez.contract, event: "AddToken", logs: logs, sub: sub}, nil
1219}
1220
1221// WatchAddToken is a free log subscription operation binding the contract event 0xcb73d161edb7cd4fb1d92fedfd2555384fd997fd44ab507656f8c81e15747dde.
1222//
1223// Solidity: event AddToken(address indexed tokenAddress, uint32 tokenID)
1224func (_Hermez *HermezFilterer) WatchAddToken(opts *bind.WatchOpts, sink chan<- *HermezAddToken, tokenAddress []common.Address) (event.Subscription, error) {
1225
1226	var tokenAddressRule []interface{}
1227	for _, tokenAddressItem := range tokenAddress {
1228		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
1229	}
1230
1231	logs, sub, err := _Hermez.contract.WatchLogs(opts, "AddToken", tokenAddressRule)
1232	if err != nil {
1233		return nil, tracerr.Wrap(err)
1234	}
1235	return event.NewSubscription(func(quit <-chan struct{}) error {
1236		defer sub.Unsubscribe()
1237		for {
1238			select {
1239			case log := <-logs:
1240				// New log arrived, parse the event and forward to the user
1241				event := new(HermezAddToken)
1242				if err := _Hermez.contract.UnpackLog(event, "AddToken", log); err != nil {
1243					return tracerr.Wrap(err)
1244				}
1245				event.Raw = log
1246
1247				select {
1248				case sink <- event:
1249				case err := <-sub.Err():
1250					return tracerr.Wrap(err)
1251				case <-quit:
1252					return nil
1253				}
1254			case err := <-sub.Err():
1255				return tracerr.Wrap(err)
1256			case <-quit:
1257				return nil
1258			}
1259		}
1260	}), nil
1261}
1262
1263// ParseAddToken is a log parse operation binding the contract event 0xcb73d161edb7cd4fb1d92fedfd2555384fd997fd44ab507656f8c81e15747dde.
1264//
1265// Solidity: event AddToken(address indexed tokenAddress, uint32 tokenID)
1266func (_Hermez *HermezFilterer) ParseAddToken(log types.Log) (*HermezAddToken, error) {
1267	event := new(HermezAddToken)
1268	if err := _Hermez.contract.UnpackLog(event, "AddToken", log); err != nil {
1269		return nil, tracerr.Wrap(err)
1270	}
1271	return event, nil
1272}
1273
1274// HermezForgeBatchIterator is returned from FilterForgeBatch and is used to iterate over the raw logs and unpacked data for ForgeBatch events raised by the Hermez contract.
1275type HermezForgeBatchIterator struct {
1276	Event *HermezForgeBatch // Event containing the contract specifics and raw log
1277
1278	contract *bind.BoundContract // Generic contract to use for unpacking event data
1279	event    string              // Event name to use for unpacking event data
1280
1281	logs chan types.Log        // Log channel receiving the found contract events
1282	sub  ethereum.Subscription // Subscription for errors, completion and termination
1283	done bool                  // Whether the subscription completed delivering logs
1284	fail error                 // Occurred error to stop iteration
1285}
1286
1287// Next advances the iterator to the subsequent event, returning whether there
1288// are any more events found. In case of a retrieval or parsing error, false is
1289// returned and Error() can be queried for the exact failure.
1290func (it *HermezForgeBatchIterator) Next() bool {
1291	// If the iterator failed, stop iterating
1292	if it.fail != nil {
1293		return false
1294	}
1295	// If the iterator completed, deliver directly whatever's available
1296	if it.done {
1297		select {
1298		case log := <-it.logs:
1299			it.Event = new(HermezForgeBatch)
1300			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1301				it.fail = err
1302				return false
1303			}
1304			it.Event.Raw = log
1305			return true
1306
1307		default:
1308			return false
1309		}
1310	}
1311	// Iterator still in progress, wait for either a data or an error event
1312	select {
1313	case log := <-it.logs:
1314		it.Event = new(HermezForgeBatch)
1315		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1316			it.fail = err
1317			return false
1318		}
1319		it.Event.Raw = log
1320		return true
1321
1322	case err := <-it.sub.Err():
1323		it.done = true
1324		it.fail = err
1325		return it.Next()
1326	}
1327}
1328
1329// Error returns any retrieval or parsing error occurred during filtering.
1330func (it *HermezForgeBatchIterator) Error() error {
1331	return it.fail
1332}
1333
1334// Close terminates the iteration process, releasing any pending underlying
1335// resources.
1336func (it *HermezForgeBatchIterator) Close() error {
1337	it.sub.Unsubscribe()
1338	return nil
1339}
1340
1341// HermezForgeBatch represents a ForgeBatch event raised by the Hermez contract.
1342type HermezForgeBatch struct {
1343	BatchNum     uint32
1344	L1UserTxsLen uint16
1345	Raw          types.Log // Blockchain specific contextual infos
1346}
1347
1348// FilterForgeBatch is a free log retrieval operation binding the contract event 0xe00040c8a3b0bf905636c26924e90520eafc5003324138236fddee2d34588618.
1349//
1350// Solidity: event ForgeBatch(uint32 indexed batchNum, uint16 l1UserTxsLen)
1351func (_Hermez *HermezFilterer) FilterForgeBatch(opts *bind.FilterOpts, batchNum []uint32) (*HermezForgeBatchIterator, error) {
1352
1353	var batchNumRule []interface{}
1354	for _, batchNumItem := range batchNum {
1355		batchNumRule = append(batchNumRule, batchNumItem)
1356	}
1357
1358	logs, sub, err := _Hermez.contract.FilterLogs(opts, "ForgeBatch", batchNumRule)
1359	if err != nil {
1360		return nil, tracerr.Wrap(err)
1361	}
1362	return &HermezForgeBatchIterator{contract: _Hermez.contract, event: "ForgeBatch", logs: logs, sub: sub}, nil
1363}
1364
1365// WatchForgeBatch is a free log subscription operation binding the contract event 0xe00040c8a3b0bf905636c26924e90520eafc5003324138236fddee2d34588618.
1366//
1367// Solidity: event ForgeBatch(uint32 indexed batchNum, uint16 l1UserTxsLen)
1368func (_Hermez *HermezFilterer) WatchForgeBatch(opts *bind.WatchOpts, sink chan<- *HermezForgeBatch, batchNum []uint32) (event.Subscription, error) {
1369
1370	var batchNumRule []interface{}
1371	for _, batchNumItem := range batchNum {
1372		batchNumRule = append(batchNumRule, batchNumItem)
1373	}
1374
1375	logs, sub, err := _Hermez.contract.WatchLogs(opts, "ForgeBatch", batchNumRule)
1376	if err != nil {
1377		return nil, tracerr.Wrap(err)
1378	}
1379	return event.NewSubscription(func(quit <-chan struct{}) error {
1380		defer sub.Unsubscribe()
1381		for {
1382			select {
1383			case log := <-logs:
1384				// New log arrived, parse the event and forward to the user
1385				event := new(HermezForgeBatch)
1386				if err := _Hermez.contract.UnpackLog(event, "ForgeBatch", log); err != nil {
1387					return tracerr.Wrap(err)
1388				}
1389				event.Raw = log
1390
1391				select {
1392				case sink <- event:
1393				case err := <-sub.Err():
1394					return tracerr.Wrap(err)
1395				case <-quit:
1396					return nil
1397				}
1398			case err := <-sub.Err():
1399				return tracerr.Wrap(err)
1400			case <-quit:
1401				return nil
1402			}
1403		}
1404	}), nil
1405}
1406
1407// ParseForgeBatch is a log parse operation binding the contract event 0xe00040c8a3b0bf905636c26924e90520eafc5003324138236fddee2d34588618.
1408//
1409// Solidity: event ForgeBatch(uint32 indexed batchNum, uint16 l1UserTxsLen)
1410func (_Hermez *HermezFilterer) ParseForgeBatch(log types.Log) (*HermezForgeBatch, error) {
1411	event := new(HermezForgeBatch)
1412	if err := _Hermez.contract.UnpackLog(event, "ForgeBatch", log); err != nil {
1413		return nil, tracerr.Wrap(err)
1414	}
1415	return event, nil
1416}
1417
1418// HermezL1UserTxEventIterator is returned from FilterL1UserTxEvent and is used to iterate over the raw logs and unpacked data for L1UserTxEvent events raised by the Hermez contract.
1419type HermezL1UserTxEventIterator struct {
1420	Event *HermezL1UserTxEvent // Event containing the contract specifics and raw log
1421
1422	contract *bind.BoundContract // Generic contract to use for unpacking event data
1423	event    string              // Event name to use for unpacking event data
1424
1425	logs chan types.Log        // Log channel receiving the found contract events
1426	sub  ethereum.Subscription // Subscription for errors, completion and termination
1427	done bool                  // Whether the subscription completed delivering logs
1428	fail error                 // Occurred error to stop iteration
1429}
1430
1431// Next advances the iterator to the subsequent event, returning whether there
1432// are any more events found. In case of a retrieval or parsing error, false is
1433// returned and Error() can be queried for the exact failure.
1434func (it *HermezL1UserTxEventIterator) Next() bool {
1435	// If the iterator failed, stop iterating
1436	if it.fail != nil {
1437		return false
1438	}
1439	// If the iterator completed, deliver directly whatever's available
1440	if it.done {
1441		select {
1442		case log := <-it.logs:
1443			it.Event = new(HermezL1UserTxEvent)
1444			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1445				it.fail = err
1446				return false
1447			}
1448			it.Event.Raw = log
1449			return true
1450
1451		default:
1452			return false
1453		}
1454	}
1455	// Iterator still in progress, wait for either a data or an error event
1456	select {
1457	case log := <-it.logs:
1458		it.Event = new(HermezL1UserTxEvent)
1459		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1460			it.fail = err
1461			return false
1462		}
1463		it.Event.Raw = log
1464		return true
1465
1466	case err := <-it.sub.Err():
1467		it.done = true
1468		it.fail = err
1469		return it.Next()
1470	}
1471}
1472
1473// Error returns any retrieval or parsing error occurred during filtering.
1474func (it *HermezL1UserTxEventIterator) Error() error {
1475	return it.fail
1476}
1477
1478// Close terminates the iteration process, releasing any pending underlying
1479// resources.
1480func (it *HermezL1UserTxEventIterator) Close() error {
1481	it.sub.Unsubscribe()
1482	return nil
1483}
1484
1485// HermezL1UserTxEvent represents a L1UserTxEvent event raised by the Hermez contract.
1486type HermezL1UserTxEvent struct {
1487	QueueIndex uint32
1488	Position   uint8
1489	L1UserTx   []byte
1490	Raw        types.Log // Blockchain specific contextual infos
1491}
1492
1493// FilterL1UserTxEvent is a free log retrieval operation binding the contract event 0xdd5c7c5ea02d3c5d1621513faa6de53d474ee6f111eda6352a63e3dfe8c40119.
1494//
1495// Solidity: event L1UserTxEvent(uint32 indexed queueIndex, uint8 indexed position, bytes l1UserTx)
1496func (_Hermez *HermezFilterer) FilterL1UserTxEvent(opts *bind.FilterOpts, queueIndex []uint32, position []uint8) (*HermezL1UserTxEventIterator, error) {
1497
1498	var queueIndexRule []interface{}
1499	for _, queueIndexItem := range queueIndex {
1500		queueIndexRule = append(queueIndexRule, queueIndexItem)
1501	}
1502	var positionRule []interface{}
1503	for _, positionItem := range position {
1504		positionRule = append(positionRule, positionItem)
1505	}
1506
1507	logs, sub, err := _Hermez.contract.FilterLogs(opts, "L1UserTxEvent", queueIndexRule, positionRule)
1508	if err != nil {
1509		return nil, tracerr.Wrap(err)
1510	}
1511	return &HermezL1UserTxEventIterator{contract: _Hermez.contract, event: "L1UserTxEvent", logs: logs, sub: sub}, nil
1512}
1513
1514// WatchL1UserTxEvent is a free log subscription operation binding the contract event 0xdd5c7c5ea02d3c5d1621513faa6de53d474ee6f111eda6352a63e3dfe8c40119.
1515//
1516// Solidity: event L1UserTxEvent(uint32 indexed queueIndex, uint8 indexed position, bytes l1UserTx)
1517func (_Hermez *HermezFilterer) WatchL1UserTxEvent(opts *bind.WatchOpts, sink chan<- *HermezL1UserTxEvent, queueIndex []uint32, position []uint8) (event.Subscription, error) {
1518
1519	var queueIndexRule []interface{}
1520	for _, queueIndexItem := range queueIndex {
1521		queueIndexRule = append(queueIndexRule, queueIndexItem)
1522	}
1523	var positionRule []interface{}
1524	for _, positionItem := range position {
1525		positionRule = append(positionRule, positionItem)
1526	}
1527
1528	logs, sub, err := _Hermez.contract.WatchLogs(opts, "L1UserTxEvent", queueIndexRule, positionRule)
1529	if err != nil {
1530		return nil, tracerr.Wrap(err)
1531	}
1532	return event.NewSubscription(func(quit <-chan struct{}) error {
1533		defer sub.Unsubscribe()
1534		for {
1535			select {
1536			case log := <-logs:
1537				// New log arrived, parse the event and forward to the user
1538				event := new(HermezL1UserTxEvent)
1539				if err := _Hermez.contract.UnpackLog(event, "L1UserTxEvent", log); err != nil {
1540					return tracerr.Wrap(err)
1541				}
1542				event.Raw = log
1543
1544				select {
1545				case sink <- event:
1546				case err := <-sub.Err():
1547					return tracerr.Wrap(err)
1548				case <-quit:
1549					return nil
1550				}
1551			case err := <-sub.Err():
1552				return tracerr.Wrap(err)
1553			case <-quit:
1554				return nil
1555			}
1556		}
1557	}), nil
1558}
1559
1560// ParseL1UserTxEvent is a log parse operation binding the contract event 0xdd5c7c5ea02d3c5d1621513faa6de53d474ee6f111eda6352a63e3dfe8c40119.
1561//
1562// Solidity: event L1UserTxEvent(uint32 indexed queueIndex, uint8 indexed position, bytes l1UserTx)
1563func (_Hermez *HermezFilterer) ParseL1UserTxEvent(log types.Log) (*HermezL1UserTxEvent, error) {
1564	event := new(HermezL1UserTxEvent)
1565	if err := _Hermez.contract.UnpackLog(event, "L1UserTxEvent", log); err != nil {
1566		return nil, tracerr.Wrap(err)
1567	}
1568	return event, nil
1569}
1570
1571// HermezSafeModeIterator is returned from FilterSafeMode and is used to iterate over the raw logs and unpacked data for SafeMode events raised by the Hermez contract.
1572type HermezSafeModeIterator struct {
1573	Event *HermezSafeMode // Event containing the contract specifics and raw log
1574
1575	contract *bind.BoundContract // Generic contract to use for unpacking event data
1576	event    string              // Event name to use for unpacking event data
1577
1578	logs chan types.Log        // Log channel receiving the found contract events
1579	sub  ethereum.Subscription // Subscription for errors, completion and termination
1580	done bool                  // Whether the subscription completed delivering logs
1581	fail error                 // Occurred error to stop iteration
1582}
1583
1584// Next advances the iterator to the subsequent event, returning whether there
1585// are any more events found. In case of a retrieval or parsing error, false is
1586// returned and Error() can be queried for the exact failure.
1587func (it *HermezSafeModeIterator) Next() bool {
1588	// If the iterator failed, stop iterating
1589	if it.fail != nil {
1590		return false
1591	}
1592	// If the iterator completed, deliver directly whatever's available
1593	if it.done {
1594		select {
1595		case log := <-it.logs:
1596			it.Event = new(HermezSafeMode)
1597			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1598				it.fail = err
1599				return false
1600			}
1601			it.Event.Raw = log
1602			return true
1603
1604		default:
1605			return false
1606		}
1607	}
1608	// Iterator still in progress, wait for either a data or an error event
1609	select {
1610	case log := <-it.logs:
1611		it.Event = new(HermezSafeMode)
1612		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1613			it.fail = err
1614			return false
1615		}
1616		it.Event.Raw = log
1617		return true
1618
1619	case err := <-it.sub.Err():
1620		it.done = true
1621		it.fail = err
1622		return it.Next()
1623	}
1624}
1625
1626// Error returns any retrieval or parsing error occurred during filtering.
1627func (it *HermezSafeModeIterator) Error() error {
1628	return it.fail
1629}
1630
1631// Close terminates the iteration process, releasing any pending underlying
1632// resources.
1633func (it *HermezSafeModeIterator) Close() error {
1634	it.sub.Unsubscribe()
1635	return nil
1636}
1637
1638// HermezSafeMode represents a SafeMode event raised by the Hermez contract.
1639type HermezSafeMode struct {
1640	Raw types.Log // Blockchain specific contextual infos
1641}
1642
1643// FilterSafeMode is a free log retrieval operation binding the contract event 0x0410e6ef2bd89ecf5b2dc2f62157f9863e09e89cb7c7f1abb7d4ec43a6019d1e.
1644//
1645// Solidity: event SafeMode()
1646func (_Hermez *HermezFilterer) FilterSafeMode(opts *bind.FilterOpts) (*HermezSafeModeIterator, error) {
1647
1648	logs, sub, err := _Hermez.contract.FilterLogs(opts, "SafeMode")
1649	if err != nil {
1650		return nil, tracerr.Wrap(err)
1651	}
1652	return &HermezSafeModeIterator{contract: _Hermez.contract, event: "SafeMode", logs: logs, sub: sub}, nil
1653}
1654
1655// WatchSafeMode is a free log subscription operation binding the contract event 0x0410e6ef2bd89ecf5b2dc2f62157f9863e09e89cb7c7f1abb7d4ec43a6019d1e.
1656//
1657// Solidity: event SafeMode()
1658func (_Hermez *HermezFilterer) WatchSafeMode(opts *bind.WatchOpts, sink chan<- *HermezSafeMode) (event.Subscription, error) {
1659
1660	logs, sub, err := _Hermez.contract.WatchLogs(opts, "SafeMode")
1661	if err != nil {
1662		return nil, tracerr.Wrap(err)
1663	}
1664	return event.NewSubscription(func(quit <-chan struct{}) error {
1665		defer sub.Unsubscribe()
1666		for {
1667			select {
1668			case log := <-logs:
1669				// New log arrived, parse the event and forward to the user
1670				event := new(HermezSafeMode)
1671				if err := _Hermez.contract.UnpackLog(event, "SafeMode", log); err != nil {
1672					return tracerr.Wrap(err)
1673				}
1674				event.Raw = log
1675
1676				select {
1677				case sink <- event:
1678				case err := <-sub.Err():
1679					return tracerr.Wrap(err)
1680				case <-quit:
1681					return nil
1682				}
1683			case err := <-sub.Err():
1684				return tracerr.Wrap(err)
1685			case <-quit:
1686				return nil
1687			}
1688		}
1689	}), nil
1690}
1691
1692// ParseSafeMode is a log parse operation binding the contract event 0x0410e6ef2bd89ecf5b2dc2f62157f9863e09e89cb7c7f1abb7d4ec43a6019d1e.
1693//
1694// Solidity: event SafeMode()
1695func (_Hermez *HermezFilterer) ParseSafeMode(log types.Log) (*HermezSafeMode, error) {
1696	event := new(HermezSafeMode)
1697	if err := _Hermez.contract.UnpackLog(event, "SafeMode", log); err != nil {
1698		return nil, tracerr.Wrap(err)
1699	}
1700	return event, nil
1701}
1702
1703// HermezUpdateBucketWithdrawIterator is returned from FilterUpdateBucketWithdraw and is used to iterate over the raw logs and unpacked data for UpdateBucketWithdraw events raised by the Hermez contract.
1704type HermezUpdateBucketWithdrawIterator struct {
1705	Event *HermezUpdateBucketWithdraw // Event containing the contract specifics and raw log
1706
1707	contract *bind.BoundContract // Generic contract to use for unpacking event data
1708	event    string              // Event name to use for unpacking event data
1709
1710	logs chan types.Log        // Log channel receiving the found contract events
1711	sub  ethereum.Subscription // Subscription for errors, completion and termination
1712	done bool                  // Whether the subscription completed delivering logs
1713	fail error                 // Occurred error to stop iteration
1714}
1715
1716// Next advances the iterator to the subsequent event, returning whether there
1717// are any more events found. In case of a retrieval or parsing error, false is
1718// returned and Error() can be queried for the exact failure.
1719func (it *HermezUpdateBucketWithdrawIterator) Next() bool {
1720	// If the iterator failed, stop iterating
1721	if it.fail != nil {
1722		return false
1723	}
1724	// If the iterator completed, deliver directly whatever's available
1725	if it.done {
1726		select {
1727		case log := <-it.logs:
1728			it.Event = new(HermezUpdateBucketWithdraw)
1729			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1730				it.fail = err
1731				return false
1732			}
1733			it.Event.Raw = log
1734			return true
1735
1736		default:
1737			return false
1738		}
1739	}
1740	// Iterator still in progress, wait for either a data or an error event
1741	select {
1742	case log := <-it.logs:
1743		it.Event = new(HermezUpdateBucketWithdraw)
1744		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1745			it.fail = err
1746			return false
1747		}
1748		it.Event.Raw = log
1749		return true
1750
1751	case err := <-it.sub.Err():
1752		it.done = true
1753		it.fail = err
1754		return it.Next()
1755	}
1756}
1757
1758// Error returns any retrieval or parsing error occurred during filtering.
1759func (it *HermezUpdateBucketWithdrawIterator) Error() error {
1760	return it.fail
1761}
1762
1763// Close terminates the iteration process, releasing any pending underlying
1764// resources.
1765func (it *HermezUpdateBucketWithdrawIterator) Close() error {
1766	it.sub.Unsubscribe()
1767	return nil
1768}
1769
1770// HermezUpdateBucketWithdraw represents a UpdateBucketWithdraw event raised by the Hermez contract.
1771type HermezUpdateBucketWithdraw struct {
1772	NumBucket   uint8
1773	BlockStamp  *big.Int
1774	Withdrawals *big.Int
1775	Raw         types.Log // Blockchain specific contextual infos
1776}
1777
1778// FilterUpdateBucketWithdraw is a free log retrieval operation binding the contract event 0xa35fe9a9e21cdbbc4774aa8a56e7b97ea9c06afc09ffb06af593d26951e350aa.
1779//
1780// Solidity: event UpdateBucketWithdraw(uint8 indexed numBucket, uint256 indexed blockStamp, uint256 withdrawals)
1781func (_Hermez *HermezFilterer) FilterUpdateBucketWithdraw(opts *bind.FilterOpts, numBucket []uint8, blockStamp []*big.Int) (*HermezUpdateBucketWithdrawIterator, error) {
1782
1783	var numBucketRule []interface{}
1784	for _, numBucketItem := range numBucket {
1785		numBucketRule = append(numBucketRule, numBucketItem)
1786	}
1787	var blockStampRule []interface{}
1788	for _, blockStampItem := range blockStamp {
1789		blockStampRule = append(blockStampRule, blockStampItem)
1790	}
1791
1792	logs, sub, err := _Hermez.contract.FilterLogs(opts, "UpdateBucketWithdraw", numBucketRule, blockStampRule)
1793	if err != nil {
1794		return nil, tracerr.Wrap(err)
1795	}
1796	return &HermezUpdateBucketWithdrawIterator{contract: _Hermez.contract, event: "UpdateBucketWithdraw", logs: logs, sub: sub}, nil
1797}
1798
1799// WatchUpdateBucketWithdraw is a free log subscription operation binding the contract event 0xa35fe9a9e21cdbbc4774aa8a56e7b97ea9c06afc09ffb06af593d26951e350aa.
1800//
1801// Solidity: event UpdateBucketWithdraw(uint8 indexed numBucket, uint256 indexed blockStamp, uint256 withdrawals)
1802func (_Hermez *HermezFilterer) WatchUpdateBucketWithdraw(opts *bind.WatchOpts, sink chan<- *HermezUpdateBucketWithdraw, numBucket []uint8, blockStamp []*big.Int) (event.Subscription, error) {
1803
1804	var numBucketRule []interface{}
1805	for _, numBucketItem := range numBucket {
1806		numBucketRule = append(numBucketRule, numBucketItem)
1807	}
1808	var blockStampRule []interface{}
1809	for _, blockStampItem := range blockStamp {
1810		blockStampRule = append(blockStampRule, blockStampItem)
1811	}
1812
1813	logs, sub, err := _Hermez.contract.WatchLogs(opts, "UpdateBucketWithdraw", numBucketRule, blockStampRule)
1814	if err != nil {
1815		return nil, tracerr.Wrap(err)
1816	}
1817	return event.NewSubscription(func(quit <-chan struct{}) error {
1818		defer sub.Unsubscribe()
1819		for {
1820			select {
1821			case log := <-logs:
1822				// New log arrived, parse the event and forward to the user
1823				event := new(HermezUpdateBucketWithdraw)
1824				if err := _Hermez.contract.UnpackLog(event, "UpdateBucketWithdraw", log); err != nil {
1825					return tracerr.Wrap(err)
1826				}
1827				event.Raw = log
1828
1829				select {
1830				case sink <- event:
1831				case err := <-sub.Err():
1832					return tracerr.Wrap(err)
1833				case <-quit:
1834					return nil
1835				}
1836			case err := <-sub.Err():
1837				return tracerr.Wrap(err)
1838			case <-quit:
1839				return nil
1840			}
1841		}
1842	}), nil
1843}
1844
1845// ParseUpdateBucketWithdraw is a log parse operation binding the contract event 0xa35fe9a9e21cdbbc4774aa8a56e7b97ea9c06afc09ffb06af593d26951e350aa.
1846//
1847// Solidity: event UpdateBucketWithdraw(uint8 indexed numBucket, uint256 indexed blockStamp, uint256 withdrawals)
1848func (_Hermez *HermezFilterer) ParseUpdateBucketWithdraw(log types.Log) (*HermezUpdateBucketWithdraw, error) {
1849	event := new(HermezUpdateBucketWithdraw)
1850	if err := _Hermez.contract.UnpackLog(event, "UpdateBucketWithdraw", log); err != nil {
1851		return nil, tracerr.Wrap(err)
1852	}
1853	return event, nil
1854}
1855
1856// HermezUpdateBucketsParametersIterator is returned from FilterUpdateBucketsParameters and is used to iterate over the raw logs and unpacked data for UpdateBucketsParameters events raised by the Hermez contract.
1857type HermezUpdateBucketsParametersIterator struct {
1858	Event *HermezUpdateBucketsParameters // Event containing the contract specifics and raw log
1859
1860	contract *bind.BoundContract // Generic contract to use for unpacking event data
1861	event    string              // Event name to use for unpacking event data
1862
1863	logs chan types.Log        // Log channel receiving the found contract events
1864	sub  ethereum.Subscription // Subscription for errors, completion and termination
1865	done bool                  // Whether the subscription completed delivering logs
1866	fail error                 // Occurred error to stop iteration
1867}
1868
1869// Next advances the iterator to the subsequent event, returning whether there
1870// are any more events found. In case of a retrieval or parsing error, false is
1871// returned and Error() can be queried for the exact failure.
1872func (it *HermezUpdateBucketsParametersIterator) Next() bool {
1873	// If the iterator failed, stop iterating
1874	if it.fail != nil {
1875		return false
1876	}
1877	// If the iterator completed, deliver directly whatever's available
1878	if it.done {
1879		select {
1880		case log := <-it.logs:
1881			it.Event = new(HermezUpdateBucketsParameters)
1882			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1883				it.fail = err
1884				return false
1885			}
1886			it.Event.Raw = log
1887			return true
1888
1889		default:
1890			return false
1891		}
1892	}
1893	// Iterator still in progress, wait for either a data or an error event
1894	select {
1895	case log := <-it.logs:
1896		it.Event = new(HermezUpdateBucketsParameters)
1897		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1898			it.fail = err
1899			return false
1900		}
1901		it.Event.Raw = log
1902		return true
1903
1904	case err := <-it.sub.Err():
1905		it.done = true
1906		it.fail = err
1907		return it.Next()
1908	}
1909}
1910
1911// Error returns any retrieval or parsing error occurred during filtering.
1912func (it *HermezUpdateBucketsParametersIterator) Error() error {
1913	return it.fail
1914}
1915
1916// Close terminates the iteration process, releasing any pending underlying
1917// resources.
1918func (it *HermezUpdateBucketsParametersIterator) Close() error {
1919	it.sub.Unsubscribe()
1920	return nil
1921}
1922
1923// HermezUpdateBucketsParameters represents a UpdateBucketsParameters event raised by the Hermez contract.
1924type HermezUpdateBucketsParameters struct {
1925	ArrayBuckets [5][4]*big.Int
1926	Raw          types.Log // Blockchain specific contextual infos
1927}
1928
1929// FilterUpdateBucketsParameters is a free log retrieval operation binding the contract event 0x3c39a1e91c69d4cfeacb11190befc2b1c983746e6b21ab2441a3051de88d4480.
1930//
1931// Solidity: event UpdateBucketsParameters(uint256[4][5] arrayBuckets)
1932func (_Hermez *HermezFilterer) FilterUpdateBucketsParameters(opts *bind.FilterOpts) (*HermezUpdateBucketsParametersIterator, error) {
1933
1934	logs, sub, err := _Hermez.contract.FilterLogs(opts, "UpdateBucketsParameters")
1935	if err != nil {
1936		return nil, tracerr.Wrap(err)
1937	}
1938	return &HermezUpdateBucketsParametersIterator{contract: _Hermez.contract, event: "UpdateBucketsParameters", logs: logs, sub: sub}, nil
1939}
1940
1941// WatchUpdateBucketsParameters is a free log subscription operation binding the contract event 0x3c39a1e91c69d4cfeacb11190befc2b1c983746e6b21ab2441a3051de88d4480.
1942//
1943// Solidity: event UpdateBucketsParameters(uint256[4][5] arrayBuckets)
1944func (_Hermez *HermezFilterer) WatchUpdateBucketsParameters(opts *bind.WatchOpts, sink chan<- *HermezUpdateBucketsParameters) (event.Subscription, error) {
1945
1946	logs, sub, err := _Hermez.contract.WatchLogs(opts, "UpdateBucketsParameters")
1947	if err != nil {
1948		return nil, tracerr.Wrap(err)
1949	}
1950	return event.NewSubscription(func(quit <-chan struct{}) error {
1951		defer sub.Unsubscribe()
1952		for {
1953			select {
1954			case log := <-logs:
1955				// New log arrived, parse the event and forward to the user
1956				event := new(HermezUpdateBucketsParameters)
1957				if err := _Hermez.contract.UnpackLog(event, "UpdateBucketsParameters", log); err != nil {
1958					return tracerr.Wrap(err)
1959				}
1960				event.Raw = log
1961
1962				select {
1963				case sink <- event:
1964				case err := <-sub.Err():
1965					return tracerr.Wrap(err)
1966				case <-quit:
1967					return nil
1968				}
1969			case err := <-sub.Err():
1970				return tracerr.Wrap(err)
1971			case <-quit:
1972				return nil
1973			}
1974		}
1975	}), nil
1976}
1977
1978// ParseUpdateBucketsParameters is a log parse operation binding the contract event 0x3c39a1e91c69d4cfeacb11190befc2b1c983746e6b21ab2441a3051de88d4480.
1979//
1980// Solidity: event UpdateBucketsParameters(uint256[4][5] arrayBuckets)
1981func (_Hermez *HermezFilterer) ParseUpdateBucketsParameters(log types.Log) (*HermezUpdateBucketsParameters, error) {
1982	event := new(HermezUpdateBucketsParameters)
1983	if err := _Hermez.contract.UnpackLog(event, "UpdateBucketsParameters", log); err != nil {
1984		return nil, tracerr.Wrap(err)
1985	}
1986	return event, nil
1987}
1988
1989// HermezUpdateFeeAddTokenIterator is returned from FilterUpdateFeeAddToken and is used to iterate over the raw logs and unpacked data for UpdateFeeAddToken events raised by the Hermez contract.
1990type HermezUpdateFeeAddTokenIterator struct {
1991	Event *HermezUpdateFeeAddToken // Event containing the contract specifics and raw log
1992
1993	contract *bind.BoundContract // Generic contract to use for unpacking event data
1994	event    string              // Event name to use for unpacking event data
1995
1996	logs chan types.Log        // Log channel receiving the found contract events
1997	sub  ethereum.Subscription // Subscription for errors, completion and termination
1998	done bool                  // Whether the subscription completed delivering logs
1999	fail error                 // Occurred error to stop iteration
2000}
2001
2002// Next advances the iterator to the subsequent event, returning whether there
2003// are any more events found. In case of a retrieval or parsing error, false is
2004// returned and Error() can be queried for the exact failure.
2005func (it *HermezUpdateFeeAddTokenIterator) Next() bool {
2006	// If the iterator failed, stop iterating
2007	if it.fail != nil {
2008		return false
2009	}
2010	// If the iterator completed, deliver directly whatever's available
2011	if it.done {
2012		select {
2013		case log := <-it.logs:
2014			it.Event = new(HermezUpdateFeeAddToken)
2015			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
2016				it.fail = err
2017				return false
2018			}
2019			it.Event.Raw = log
2020			return true
2021
2022		default:
2023			return false
2024		}
2025	}
2026	// Iterator still in progress, wait for either a data or an error event
2027	select {
2028	case log := <-it.logs:
2029		it.Event = new(HermezUpdateFeeAddToken)
2030		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
2031			it.fail = err
2032			return false
2033		}
2034		it.Event.Raw = log
2035		return true
2036
2037	case err := <-it.sub.Err():
2038		it.done = true
2039		it.fail = err
2040		return it.Next()
2041	}
2042}
2043
2044// Error returns any retrieval or parsing error occurred during filtering.
2045func (it *HermezUpdateFeeAddTokenIterator) Error() error {
2046	return it.fail
2047}
2048
2049// Close terminates the iteration process, releasing any pending underlying
2050// resources.
2051func (it *HermezUpdateFeeAddTokenIterator) Close() error {
2052	it.sub.Unsubscribe()
2053	return nil
2054}
2055
2056// HermezUpdateFeeAddToken represents a UpdateFeeAddToken event raised by the Hermez contract.
2057type HermezUpdateFeeAddToken struct {
2058	NewFeeAddToken *big.Int
2059	Raw            types.Log // Blockchain specific contextual infos
2060}
2061
2062// FilterUpdateFeeAddToken is a free log retrieval operation binding the contract event 0xd1c873cd16013f0dc5f37992c0d12794389698512895ec036a568e393b46e3c1.
2063//
2064// Solidity: event UpdateFeeAddToken(uint256 newFeeAddToken)
2065func (_Hermez *HermezFilterer) FilterUpdateFeeAddToken(opts *bind.FilterOpts) (*HermezUpdateFeeAddTokenIterator, error) {
2066
2067	logs, sub, err := _Hermez.contract.FilterLogs(opts, "UpdateFeeAddToken")
2068	if err != nil {
2069		return nil, tracerr.Wrap(err)
2070	}
2071	return &HermezUpdateFeeAddTokenIterator{contract: _Hermez.contract, event: "UpdateFeeAddToken", logs: logs, sub: sub}, nil
2072}
2073
2074// WatchUpdateFeeAddToken is a free log subscription operation binding the contract event 0xd1c873cd16013f0dc5f37992c0d12794389698512895ec036a568e393b46e3c1.
2075//
2076// Solidity: event UpdateFeeAddToken(uint256 newFeeAddToken)
2077func (_Hermez *HermezFilterer) WatchUpdateFeeAddToken(opts *bind.WatchOpts, sink chan<- *HermezUpdateFeeAddToken) (event.Subscription, error) {
2078
2079	logs, sub, err := _Hermez.contract.WatchLogs(opts, "UpdateFeeAddToken")
2080	if err != nil {
2081		return nil, tracerr.Wrap(err)
2082	}
2083	return event.NewSubscription(func(quit <-chan struct{}) error {
2084		defer sub.Unsubscribe()
2085		for {
2086			select {
2087			case log := <-logs:
2088				// New log arrived, parse the event and forward to the user
2089				event := new(HermezUpdateFeeAddToken)
2090				if err := _Hermez.contract.UnpackLog(event, "UpdateFeeAddToken", log); err != nil {
2091					return tracerr.Wrap(err)
2092				}
2093				event.Raw = log
2094
2095				select {
2096				case sink <- event:
2097				case err := <-sub.Err():
2098					return tracerr.Wrap(err)
2099				case <-quit:
2100					return nil
2101				}
2102			case err := <-sub.Err():
2103				return tracerr.Wrap(err)
2104			case <-quit:
2105				return nil
2106			}
2107		}
2108	}), nil
2109}
2110
2111// ParseUpdateFeeAddToken is a log parse operation binding the contract event 0xd1c873cd16013f0dc5f37992c0d12794389698512895ec036a568e393b46e3c1.
2112//
2113// Solidity: event UpdateFeeAddToken(uint256 newFeeAddToken)
2114func (_Hermez *HermezFilterer) ParseUpdateFeeAddToken(log types.Log) (*HermezUpdateFeeAddToken, error) {
2115	event := new(HermezUpdateFeeAddToken)
2116	if err := _Hermez.contract.UnpackLog(event, "UpdateFeeAddToken", log); err != nil {
2117		return nil, tracerr.Wrap(err)
2118	}
2119	return event, nil
2120}
2121
2122// HermezUpdateForgeL1L2BatchTimeoutIterator is returned from FilterUpdateForgeL1L2BatchTimeout and is used to iterate over the raw logs and unpacked data for UpdateForgeL1L2BatchTimeout events raised by the Hermez contract.
2123type HermezUpdateForgeL1L2BatchTimeoutIterator struct {
2124	Event *HermezUpdateForgeL1L2BatchTimeout // Event containing the contract specifics and raw log
2125
2126	contract *bind.BoundContract // Generic contract to use for unpacking event data
2127	event    string              // Event name to use for unpacking event data
2128
2129	logs chan types.Log        // Log channel receiving the found contract events
2130	sub  ethereum.Subscription // Subscription for errors, completion and termination
2131	done bool                  // Whether the subscription completed delivering logs
2132	fail error                 // Occurred error to stop iteration
2133}
2134
2135// Next advances the iterator to the subsequent event, returning whether there
2136// are any more events found. In case of a retrieval or parsing error, false is
2137// returned and Error() can be queried for the exact failure.
2138func (it *HermezUpdateForgeL1L2BatchTimeoutIterator) Next() bool {
2139	// If the iterator failed, stop iterating
2140	if it.fail != nil {
2141		return false
2142	}
2143	// If the iterator completed, deliver directly whatever's available
2144	if it.done {
2145		select {
2146		case log := <-it.logs:
2147			it.Event = new(HermezUpdateForgeL1L2BatchTimeout)
2148			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
2149				it.fail = err
2150				return false
2151			}
2152			it.Event.Raw = log
2153			return true
2154
2155		default:
2156			return false
2157		}
2158	}
2159	// Iterator still in progress, wait for either a data or an error event
2160	select {
2161	case log := <-it.logs:
2162		it.Event = new(HermezUpdateForgeL1L2BatchTimeout)
2163		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
2164			it.fail = err
2165			return false
2166		}
2167		it.Event.Raw = log
2168		return true
2169
2170	case err := <-it.sub.Err():
2171		it.done = true
2172		it.fail = err
2173		return it.Next()
2174	}
2175}
2176
2177// Error returns any retrieval or parsing error occurred during filtering.
2178func (it *HermezUpdateForgeL1L2BatchTimeoutIterator) Error() error {
2179	return it.fail
2180}
2181
2182// Close terminates the iteration process, releasing any pending underlying
2183// resources.
2184func (it *HermezUpdateForgeL1L2BatchTimeoutIterator) Close() error {
2185	it.sub.Unsubscribe()
2186	return nil
2187}
2188
2189// HermezUpdateForgeL1L2BatchTimeout represents a UpdateForgeL1L2BatchTimeout event raised by the Hermez contract.
2190type HermezUpdateForgeL1L2BatchTimeout struct {
2191	NewForgeL1L2BatchTimeout uint8
2192	Raw                      types.Log // Blockchain specific contextual infos
2193}
2194
2195// FilterUpdateForgeL1L2BatchTimeout is a free log retrieval operation binding the contract event 0xff6221781ac525b04585dbb55cd2ebd2a92c828ca3e42b23813a1137ac974431.
2196//
2197// Solidity: event UpdateForgeL1L2BatchTimeout(uint8 newForgeL1L2BatchTimeout)
2198func (_Hermez *HermezFilterer) FilterUpdateForgeL1L2BatchTimeout(opts *bind.FilterOpts) (*HermezUpdateForgeL1L2BatchTimeoutIterator, error) {
2199
2200	logs, sub, err := _Hermez.contract.FilterLogs(opts, "UpdateForgeL1L2BatchTimeout")
2201	if err != nil {
2202		return nil, tracerr.Wrap(err)
2203	}
2204	return &HermezUpdateForgeL1L2BatchTimeoutIterator{contract: _Hermez.contract, event: "UpdateForgeL1L2BatchTimeout", logs: logs, sub: sub}, nil
2205}
2206
2207// WatchUpdateForgeL1L2BatchTimeout is a free log subscription operation binding the contract event 0xff6221781ac525b04585dbb55cd2ebd2a92c828ca3e42b23813a1137ac974431.
2208//
2209// Solidity: event UpdateForgeL1L2BatchTimeout(uint8 newForgeL1L2BatchTimeout)
2210func (_Hermez *HermezFilterer) WatchUpdateForgeL1L2BatchTimeout(opts *bind.WatchOpts, sink chan<- *HermezUpdateForgeL1L2BatchTimeout) (event.Subscription, error) {
2211
2212	logs, sub, err := _Hermez.contract.WatchLogs(opts, "UpdateForgeL1L2BatchTimeout")
2213	if err != nil {
2214		return nil, tracerr.Wrap(err)
2215	}
2216	return event.NewSubscription(func(quit <-chan struct{}) error {
2217		defer sub.Unsubscribe()
2218		for {
2219			select {
2220			case log := <-logs:
2221				// New log arrived, parse the event and forward to the user
2222				event := new(HermezUpdateForgeL1L2BatchTimeout)
2223				if err := _Hermez.contract.UnpackLog(event, "UpdateForgeL1L2BatchTimeout", log); err != nil {
2224					return tracerr.Wrap(err)
2225				}
2226				event.Raw = log
2227
2228				select {
2229				case sink <- event:
2230				case err := <-sub.Err():
2231					return tracerr.Wrap(err)
2232				case <-quit:
2233					return nil
2234				}
2235			case err := <-sub.Err():
2236				return tracerr.Wrap(err)
2237			case <-quit:
2238				return nil
2239			}
2240		}
2241	}), nil
2242}
2243
2244// ParseUpdateForgeL1L2BatchTimeout is a log parse operation binding the contract event 0xff6221781ac525b04585dbb55cd2ebd2a92c828ca3e42b23813a1137ac974431.
2245//
2246// Solidity: event UpdateForgeL1L2BatchTimeout(uint8 newForgeL1L2BatchTimeout)
2247func (_Hermez *HermezFilterer) ParseUpdateForgeL1L2BatchTimeout(log types.Log) (*HermezUpdateForgeL1L2BatchTimeout, error) {
2248	event := new(HermezUpdateForgeL1L2BatchTimeout)
2249	if err := _Hermez.contract.UnpackLog(event, "UpdateForgeL1L2BatchTimeout", log); err != nil {
2250		return nil, tracerr.Wrap(err)
2251	}
2252	return event, nil
2253}
2254
2255// HermezUpdateTokenExchangeIterator is returned from FilterUpdateTokenExchange and is used to iterate over the raw logs and unpacked data for UpdateTokenExchange events raised by the Hermez contract.
2256type HermezUpdateTokenExchangeIterator struct {
2257	Event *HermezUpdateTokenExchange // Event containing the contract specifics and raw log
2258
2259	contract *bind.BoundContract // Generic contract to use for unpacking event data
2260	event    string              // Event name to use for unpacking event data
2261
2262	logs chan types.Log        // Log channel receiving the found contract events
2263	sub  ethereum.Subscription // Subscription for errors, completion and termination
2264	done bool                  // Whether the subscription completed delivering logs
2265	fail error                 // Occurred error to stop iteration
2266}
2267
2268// Next advances the iterator to the subsequent event, returning whether there
2269// are any more events found. In case of a retrieval or parsing error, false is
2270// returned and Error() can be queried for the exact failure.
2271func (it *HermezUpdateTokenExchangeIterator) Next() bool {
2272	// If the iterator failed, stop iterating
2273	if it.fail != nil {
2274		return false
2275	}
2276	// If the iterator completed, deliver directly whatever's available
2277	if it.done {
2278		select {
2279		case log := <-it.logs:
2280			it.Event = new(HermezUpdateTokenExchange)
2281			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
2282				it.fail = err
2283				return false
2284			}
2285			it.Event.Raw = log
2286			return true
2287
2288		default:
2289			return false
2290		}
2291	}
2292	// Iterator still in progress, wait for either a data or an error event
2293	select {
2294	case log := <-it.logs:
2295		it.Event = new(HermezUpdateTokenExchange)
2296		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
2297			it.fail = err
2298			return false
2299		}
2300		it.Event.Raw = log
2301		return true
2302
2303	case err := <-it.sub.Err():
2304		it.done = true
2305		it.fail = err
2306		return it.Next()
2307	}
2308}
2309
2310// Error returns any retrieval or parsing error occurred during filtering.
2311func (it *HermezUpdateTokenExchangeIterator) Error() error {
2312	return it.fail
2313}
2314
2315// Close terminates the iteration process, releasing any pending underlying
2316// resources.
2317func (it *HermezUpdateTokenExchangeIterator) Close() error {
2318	it.sub.Unsubscribe()
2319	return nil
2320}
2321
2322// HermezUpdateTokenExchange represents a UpdateTokenExchange event raised by the Hermez contract.
2323type HermezUpdateTokenExchange struct {
2324	AddressArray []common.Address
2325	ValueArray   []uint64
2326	Raw          types.Log // Blockchain specific contextual infos
2327}
2328
2329// FilterUpdateTokenExchange is a free log retrieval operation binding the contract event 0x10ff643ebeca3e33002e61b76fa85e7e10091e30afa39295f91af9838b3033b3.
2330//
2331// Solidity: event UpdateTokenExchange(address[] addressArray, uint64[] valueArray)
2332func (_Hermez *HermezFilterer) FilterUpdateTokenExchange(opts *bind.FilterOpts) (*HermezUpdateTokenExchangeIterator, error) {
2333
2334	logs, sub, err := _Hermez.contract.FilterLogs(opts, "UpdateTokenExchange")
2335	if err != nil {
2336		return nil, tracerr.Wrap(err)
2337	}
2338	return &HermezUpdateTokenExchangeIterator{contract: _Hermez.contract, event: "UpdateTokenExchange", logs: logs, sub: sub}, nil
2339}
2340
2341// WatchUpdateTokenExchange is a free log subscription operation binding the contract event 0x10ff643ebeca3e33002e61b76fa85e7e10091e30afa39295f91af9838b3033b3.
2342//
2343// Solidity: event UpdateTokenExchange(address[] addressArray, uint64[] valueArray)
2344func (_Hermez *HermezFilterer) WatchUpdateTokenExchange(opts *bind.WatchOpts, sink chan<- *HermezUpdateTokenExchange) (event.Subscription, error) {
2345
2346	logs, sub, err := _Hermez.contract.WatchLogs(opts, "UpdateTokenExchange")
2347	if err != nil {
2348		return nil, tracerr.Wrap(err)
2349	}
2350	return event.NewSubscription(func(quit <-chan struct{}) error {
2351		defer sub.Unsubscribe()
2352		for {
2353			select {
2354			case log := <-logs:
2355				// New log arrived, parse the event and forward to the user
2356				event := new(HermezUpdateTokenExchange)
2357				if err := _Hermez.contract.UnpackLog(event, "UpdateTokenExchange", log); err != nil {
2358					return tracerr.Wrap(err)
2359				}
2360				event.Raw = log
2361
2362				select {
2363				case sink <- event:
2364				case err := <-sub.Err():
2365					return tracerr.Wrap(err)
2366				case <-quit:
2367					return nil
2368				}
2369			case err := <-sub.Err():
2370				return tracerr.Wrap(err)
2371			case <-quit:
2372				return nil
2373			}
2374		}
2375	}), nil
2376}
2377
2378// ParseUpdateTokenExchange is a log parse operation binding the contract event 0x10ff643ebeca3e33002e61b76fa85e7e10091e30afa39295f91af9838b3033b3.
2379//
2380// Solidity: event UpdateTokenExchange(address[] addressArray, uint64[] valueArray)
2381func (_Hermez *HermezFilterer) ParseUpdateTokenExchange(log types.Log) (*HermezUpdateTokenExchange, error) {
2382	event := new(HermezUpdateTokenExchange)
2383	if err := _Hermez.contract.UnpackLog(event, "UpdateTokenExchange", log); err != nil {
2384		return nil, tracerr.Wrap(err)
2385	}
2386	return event, nil
2387}
2388
2389// HermezUpdateWithdrawalDelayIterator is returned from FilterUpdateWithdrawalDelay and is used to iterate over the raw logs and unpacked data for UpdateWithdrawalDelay events raised by the Hermez contract.
2390type HermezUpdateWithdrawalDelayIterator struct {
2391	Event *HermezUpdateWithdrawalDelay // Event containing the contract specifics and raw log
2392
2393	contract *bind.BoundContract // Generic contract to use for unpacking event data
2394	event    string              // Event name to use for unpacking event data
2395
2396	logs chan types.Log        // Log channel receiving the found contract events
2397	sub  ethereum.Subscription // Subscription for errors, completion and termination
2398	done bool                  // Whether the subscription completed delivering logs
2399	fail error                 // Occurred error to stop iteration
2400}
2401
2402// Next advances the iterator to the subsequent event, returning whether there
2403// are any more events found. In case of a retrieval or parsing error, false is
2404// returned and Error() can be queried for the exact failure.
2405func (it *HermezUpdateWithdrawalDelayIterator) Next() bool {
2406	// If the iterator failed, stop iterating
2407	if it.fail != nil {
2408		return false
2409	}
2410	// If the iterator completed, deliver directly whatever's available
2411	if it.done {
2412		select {
2413		case log := <-it.logs:
2414			it.Event = new(HermezUpdateWithdrawalDelay)
2415			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
2416				it.fail = err
2417				return false
2418			}
2419			it.Event.Raw = log
2420			return true
2421
2422		default:
2423			return false
2424		}
2425	}
2426	// Iterator still in progress, wait for either a data or an error event
2427	select {
2428	case log := <-it.logs:
2429		it.Event = new(HermezUpdateWithdrawalDelay)
2430		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
2431			it.fail = err
2432			return false
2433		}
2434		it.Event.Raw = log
2435		return true
2436
2437	case err := <-it.sub.Err():
2438		it.done = true
2439		it.fail = err
2440		return it.Next()
2441	}
2442}
2443
2444// Error returns any retrieval or parsing error occurred during filtering.
2445func (it *HermezUpdateWithdrawalDelayIterator) Error() error {
2446	return it.fail
2447}
2448
2449// Close terminates the iteration process, releasing any pending underlying
2450// resources.
2451func (it *HermezUpdateWithdrawalDelayIterator) Close() error {
2452	it.sub.Unsubscribe()
2453	return nil
2454}
2455
2456// HermezUpdateWithdrawalDelay represents a UpdateWithdrawalDelay event raised by the Hermez contract.
2457type HermezUpdateWithdrawalDelay struct {
2458	NewWithdrawalDelay uint64
2459	Raw                types.Log // Blockchain specific contextual infos
2460}
2461
2462// FilterUpdateWithdrawalDelay is a free log retrieval operation binding the contract event 0x9db302c4547a21fb20a3a794e5f63ee87eb6e4afc3325ebdadba2d1fb4a90737.
2463//
2464// Solidity: event UpdateWithdrawalDelay(uint64 newWithdrawalDelay)
2465func (_Hermez *HermezFilterer) FilterUpdateWithdrawalDelay(opts *bind.FilterOpts) (*HermezUpdateWithdrawalDelayIterator, error) {
2466
2467	logs, sub, err := _Hermez.contract.FilterLogs(opts, "UpdateWithdrawalDelay")
2468	if err != nil {
2469		return nil, tracerr.Wrap(err)
2470	}
2471	return &HermezUpdateWithdrawalDelayIterator{contract: _Hermez.contract, event: "UpdateWithdrawalDelay", logs: logs, sub: sub}, nil
2472}
2473
2474// WatchUpdateWithdrawalDelay is a free log subscription operation binding the contract event 0x9db302c4547a21fb20a3a794e5f63ee87eb6e4afc3325ebdadba2d1fb4a90737.
2475//
2476// Solidity: event UpdateWithdrawalDelay(uint64 newWithdrawalDelay)
2477func (_Hermez *HermezFilterer) WatchUpdateWithdrawalDelay(opts *bind.WatchOpts, sink chan<- *HermezUpdateWithdrawalDelay) (event.Subscription, error) {
2478
2479	logs, sub, err := _Hermez.contract.WatchLogs(opts, "UpdateWithdrawalDelay")
2480	if err != nil {
2481		return nil, tracerr.Wrap(err)
2482	}
2483	return event.NewSubscription(func(quit <-chan struct{}) error {
2484		defer sub.Unsubscribe()
2485		for {
2486			select {
2487			case log := <-logs:
2488				// New log arrived, parse the event and forward to the user
2489				event := new(HermezUpdateWithdrawalDelay)
2490				if err := _Hermez.contract.UnpackLog(event, "UpdateWithdrawalDelay", log); err != nil {
2491					return tracerr.Wrap(err)
2492				}
2493				event.Raw = log
2494
2495				select {
2496				case sink <- event:
2497				case err := <-sub.Err():
2498					return tracerr.Wrap(err)
2499				case <-quit:
2500					return nil
2501				}
2502			case err := <-sub.Err():
2503				return tracerr.Wrap(err)
2504			case <-quit:
2505				return nil
2506			}
2507		}
2508	}), nil
2509}
2510
2511// ParseUpdateWithdrawalDelay is a log parse operation binding the contract event 0x9db302c4547a21fb20a3a794e5f63ee87eb6e4afc3325ebdadba2d1fb4a90737.
2512//
2513// Solidity: event UpdateWithdrawalDelay(uint64 newWithdrawalDelay)
2514func (_Hermez *HermezFilterer) ParseUpdateWithdrawalDelay(log types.Log) (*HermezUpdateWithdrawalDelay, error) {
2515	event := new(HermezUpdateWithdrawalDelay)
2516	if err := _Hermez.contract.UnpackLog(event, "UpdateWithdrawalDelay", log); err != nil {
2517		return nil, tracerr.Wrap(err)
2518	}
2519	return event, nil
2520}
2521
2522// HermezWithdrawEventIterator is returned from FilterWithdrawEvent and is used to iterate over the raw logs and unpacked data for WithdrawEvent events raised by the Hermez contract.
2523type HermezWithdrawEventIterator struct {
2524	Event *HermezWithdrawEvent // Event containing the contract specifics and raw log
2525
2526	contract *bind.BoundContract // Generic contract to use for unpacking event data
2527	event    string              // Event name to use for unpacking event data
2528
2529	logs chan types.Log        // Log channel receiving the found contract events
2530	sub  ethereum.Subscription // Subscription for errors, completion and termination
2531	done bool                  // Whether the subscription completed delivering logs
2532	fail error                 // Occurred error to stop iteration
2533}
2534
2535// Next advances the iterator to the subsequent event, returning whether there
2536// are any more events found. In case of a retrieval or parsing error, false is
2537// returned and Error() can be queried for the exact failure.
2538func (it *HermezWithdrawEventIterator) Next() bool {
2539	// If the iterator failed, stop iterating
2540	if it.fail != nil {
2541		return false
2542	}
2543	// If the iterator completed, deliver directly whatever's available
2544	if it.done {
2545		select {
2546		case log := <-it.logs:
2547			it.Event = new(HermezWithdrawEvent)
2548			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
2549				it.fail = err
2550				return false
2551			}
2552			it.Event.Raw = log
2553			return true
2554
2555		default:
2556			return false
2557		}
2558	}
2559	// Iterator still in progress, wait for either a data or an error event
2560	select {
2561	case log := <-it.logs:
2562		it.Event = new(HermezWithdrawEvent)
2563		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
2564			it.fail = err
2565			return false
2566		}
2567		it.Event.Raw = log
2568		return true
2569
2570	case err := <-it.sub.Err():
2571		it.done = true
2572		it.fail = err
2573		return it.Next()
2574	}
2575}
2576
2577// Error returns any retrieval or parsing error occurred during filtering.
2578func (it *HermezWithdrawEventIterator) Error() error {
2579	return it.fail
2580}
2581
2582// Close terminates the iteration process, releasing any pending underlying
2583// resources.
2584func (it *HermezWithdrawEventIterator) Close() error {
2585	it.sub.Unsubscribe()
2586	return nil
2587}
2588
2589// HermezWithdrawEvent represents a WithdrawEvent event raised by the Hermez contract.
2590type HermezWithdrawEvent struct {
2591	Idx             *big.Int
2592	NumExitRoot     uint32
2593	InstantWithdraw bool
2594	Raw             types.Log // Blockchain specific contextual infos
2595}
2596
2597// FilterWithdrawEvent is a free log retrieval operation binding the contract event 0x69177d798b38e27bcc4e0338307e4f1490e12d1006729d0e6e9cc82a8732f415.
2598//
2599// Solidity: event WithdrawEvent(uint48 indexed idx, uint32 indexed numExitRoot, bool indexed instantWithdraw)
2600func (_Hermez *HermezFilterer) FilterWithdrawEvent(opts *bind.FilterOpts, idx []*big.Int, numExitRoot []uint32, instantWithdraw []bool) (*HermezWithdrawEventIterator, error) {
2601
2602	var idxRule []interface{}
2603	for _, idxItem := range idx {
2604		idxRule = append(idxRule, idxItem)
2605	}
2606	var numExitRootRule []interface{}
2607	for _, numExitRootItem := range numExitRoot {
2608		numExitRootRule = append(numExitRootRule, numExitRootItem)
2609	}
2610	var instantWithdrawRule []interface{}
2611	for _, instantWithdrawItem := range instantWithdraw {
2612		instantWithdrawRule = append(instantWithdrawRule, instantWithdrawItem)
2613	}
2614
2615	logs, sub, err := _Hermez.contract.FilterLogs(opts, "WithdrawEvent", idxRule, numExitRootRule, instantWithdrawRule)
2616	if err != nil {
2617		return nil, tracerr.Wrap(err)
2618	}
2619	return &HermezWithdrawEventIterator{contract: _Hermez.contract, event: "WithdrawEvent", logs: logs, sub: sub}, nil
2620}
2621
2622// WatchWithdrawEvent is a free log subscription operation binding the contract event 0x69177d798b38e27bcc4e0338307e4f1490e12d1006729d0e6e9cc82a8732f415.
2623//
2624// Solidity: event WithdrawEvent(uint48 indexed idx, uint32 indexed numExitRoot, bool indexed instantWithdraw)
2625func (_Hermez *HermezFilterer) WatchWithdrawEvent(opts *bind.WatchOpts, sink chan<- *HermezWithdrawEvent, idx []*big.Int, numExitRoot []uint32, instantWithdraw []bool) (event.Subscription, error) {
2626
2627	var idxRule []interface{}
2628	for _, idxItem := range idx {
2629		idxRule = append(idxRule, idxItem)
2630	}
2631	var numExitRootRule []interface{}
2632	for _, numExitRootItem := range numExitRoot {
2633		numExitRootRule = append(numExitRootRule, numExitRootItem)
2634	}
2635	var instantWithdrawRule []interface{}
2636	for _, instantWithdrawItem := range instantWithdraw {
2637		instantWithdrawRule = append(instantWithdrawRule, instantWithdrawItem)
2638	}
2639
2640	logs, sub, err := _Hermez.contract.WatchLogs(opts, "WithdrawEvent", idxRule, numExitRootRule, instantWithdrawRule)
2641	if err != nil {
2642		return nil, tracerr.Wrap(err)
2643	}
2644	return event.NewSubscription(func(quit <-chan struct{}) error {
2645		defer sub.Unsubscribe()
2646		for {
2647			select {
2648			case log := <-logs:
2649				// New log arrived, parse the event and forward to the user
2650				event := new(HermezWithdrawEvent)
2651				if err := _Hermez.contract.UnpackLog(event, "WithdrawEvent", log); err != nil {
2652					return tracerr.Wrap(err)
2653				}
2654				event.Raw = log
2655
2656				select {
2657				case sink <- event:
2658				case err := <-sub.Err():
2659					return tracerr.Wrap(err)
2660				case <-quit:
2661					return nil
2662				}
2663			case err := <-sub.Err():
2664				return tracerr.Wrap(err)
2665			case <-quit:
2666				return nil
2667			}
2668		}
2669	}), nil
2670}
2671
2672// ParseWithdrawEvent is a log parse operation binding the contract event 0x69177d798b38e27bcc4e0338307e4f1490e12d1006729d0e6e9cc82a8732f415.
2673//
2674// Solidity: event WithdrawEvent(uint48 indexed idx, uint32 indexed numExitRoot, bool indexed instantWithdraw)
2675func (_Hermez *HermezFilterer) ParseWithdrawEvent(log types.Log) (*HermezWithdrawEvent, error) {
2676	event := new(HermezWithdrawEvent)
2677	if err := _Hermez.contract.UnpackLog(event, "WithdrawEvent", log); err != nil {
2678		return nil, tracerr.Wrap(err)
2679	}
2680	return event, nil
2681}