From 12873e581948c74b66210a65a321aeffbfa96435 Mon Sep 17 00:00:00 2001 From: Leo Date: Mon, 17 Aug 2020 23:01:59 +0200 Subject: [PATCH] Add tooling to regenerate the Go ABI --- Tiltfile | 4 +- bridge/pkg/ethereum/abi/abi.go | 552 +++++++++++++----------------- ethereum/package.json | 1 + ethereum/truffle-config.js | 4 + generate-abi.sh | 13 + generate.sh => generate-protos.sh | 0 third_party/abigen/Dockerfile | 10 + third_party/abigen/abigen.go | 4 + third_party/abigen/go.mod | 5 + third_party/abigen/go.sum | 216 ++++++++++++ 10 files changed, 492 insertions(+), 317 deletions(-) create mode 100755 generate-abi.sh rename generate.sh => generate-protos.sh (100%) create mode 100644 third_party/abigen/Dockerfile create mode 100644 third_party/abigen/abigen.go create mode 100644 third_party/abigen/go.mod create mode 100644 third_party/abigen/go.sum diff --git a/Tiltfile b/Tiltfile index d897a00fe..5281a1e44 100644 --- a/Tiltfile +++ b/Tiltfile @@ -3,7 +3,7 @@ local_resource( name = "proto-gen", deps = "./proto", - cmd = "./generate.sh", + cmd = "./generate-protos.sh", ) # bridge @@ -16,7 +16,7 @@ docker_build( k8s_yaml("devnet/bridge.yaml") -k8s_resource("guardian") +k8s_resource("guardian", resource_deps=["proto-gen"]) # solana smart contract components diff --git a/bridge/pkg/ethereum/abi/abi.go b/bridge/pkg/ethereum/abi/abi.go index 72ee19ab5..25e9b802a 100644 --- a/bridge/pkg/ethereum/abi/abi.go +++ b/bridge/pkg/ethereum/abi/abi.go @@ -1,7 +1,5 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -// -// TODO(leo): document how to regenerate package abi @@ -30,112 +28,111 @@ var ( // WormholeGuardianSet is an auto generated low-level Go binding around an user-defined struct. type WormholeGuardianSet struct { - X *big.Int - Parity uint8 + Keys []common.Address ExpirationTime uint32 } -// WormholeBridgeABI is the input ABI used to generate the binding from. -const WormholeBridgeABI = "[{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"parity\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"internalType\":\"structWormhole.GuardianSet\",\"name\":\"initial_guardian_set\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"wrapped_asset_master\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"parity\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"indexed\":true,\"internalType\":\"structWormhole.GuardianSet\",\"name\":\"oldGuardian\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"parity\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"indexed\":true,\"internalType\":\"structWormhole.GuardianSet\",\"name\":\"newGuardian\",\"type\":\"tuple\"}],\"name\":\"LogGuardianSetChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"target_chain\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"token_chain\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"token\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LogTokensLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LogTokensUnlocked\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"guardian_set_index\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"target_chain\",\"type\":\"uint8\"}],\"name\":\"lockAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"target_chain\",\"type\":\"uint8\"}],\"name\":\"lockETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"vaa\",\"type\":\"bytes\"}],\"name\":\"submitVAA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vaa_expiry\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrappedAssetMaster\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]" +// AbiABI is the input ABI used to generate the binding from. +const AbiABI = "[{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"keys\",\"type\":\"address[]\"},{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"internalType\":\"structWormhole.GuardianSet\",\"name\":\"initial_guardian_set\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"wrapped_asset_master\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_vaa_expiry\",\"type\":\"uint32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"keys\",\"type\":\"address[]\"},{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"indexed\":true,\"internalType\":\"structWormhole.GuardianSet\",\"name\":\"oldGuardian\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"keys\",\"type\":\"address[]\"},{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"indexed\":true,\"internalType\":\"structWormhole.GuardianSet\",\"name\":\"newGuardian\",\"type\":\"tuple\"}],\"name\":\"LogGuardianSetChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"target_chain\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"token_chain\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"token\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LogTokensLocked\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\",\"payable\":true},{\"inputs\":[],\"name\":\"guardian_set_index\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"guardian_sets\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isWrappedAsset\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[],\"name\":\"vaa_expiry\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[],\"name\":\"wrappedAssetMaster\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"wrappedAssets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"stateMutability\":\"payable\",\"type\":\"receive\",\"payable\":true},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"vaa\",\"type\":\"bytes\"}],\"name\":\"submitVAA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"target_chain\",\"type\":\"uint8\"}],\"name\":\"lockAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"target_chain\",\"type\":\"uint8\"}],\"name\":\"lockETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\",\"payable\":true}]" -// WormholeBridge is an auto generated Go binding around an Ethereum contract. -type WormholeBridge struct { - WormholeBridgeCaller // Read-only binding to the contract - WormholeBridgeTransactor // Write-only binding to the contract - WormholeBridgeFilterer // Log filterer for contract events +// Abi is an auto generated Go binding around an Ethereum contract. +type Abi struct { + AbiCaller // Read-only binding to the contract + AbiTransactor // Write-only binding to the contract + AbiFilterer // Log filterer for contract events } -// WormholeBridgeCaller is an auto generated read-only Go binding around an Ethereum contract. -type WormholeBridgeCaller struct { +// AbiCaller is an auto generated read-only Go binding around an Ethereum contract. +type AbiCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// WormholeBridgeTransactor is an auto generated write-only Go binding around an Ethereum contract. -type WormholeBridgeTransactor struct { +// AbiTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AbiTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// WormholeBridgeFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type WormholeBridgeFilterer struct { +// AbiFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AbiFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// WormholeBridgeSession is an auto generated Go binding around an Ethereum contract, +// AbiSession is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type WormholeBridgeSession struct { - Contract *WormholeBridge // Generic contract binding to set the session for +type AbiSession struct { + Contract *Abi // Generic contract binding to set the session for CallOpts bind.CallOpts // Call options to use throughout this session TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// WormholeBridgeCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// AbiCallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type WormholeBridgeCallerSession struct { - Contract *WormholeBridgeCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type AbiCallerSession struct { + Contract *AbiCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// WormholeBridgeTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// AbiTransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type WormholeBridgeTransactorSession struct { - Contract *WormholeBridgeTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type AbiTransactorSession struct { + Contract *AbiTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// WormholeBridgeRaw is an auto generated low-level Go binding around an Ethereum contract. -type WormholeBridgeRaw struct { - Contract *WormholeBridge // Generic contract binding to access the raw methods on +// AbiRaw is an auto generated low-level Go binding around an Ethereum contract. +type AbiRaw struct { + Contract *Abi // Generic contract binding to access the raw methods on } -// WormholeBridgeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type WormholeBridgeCallerRaw struct { - Contract *WormholeBridgeCaller // Generic read-only contract binding to access the raw methods on +// AbiCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AbiCallerRaw struct { + Contract *AbiCaller // Generic read-only contract binding to access the raw methods on } -// WormholeBridgeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type WormholeBridgeTransactorRaw struct { - Contract *WormholeBridgeTransactor // Generic write-only contract binding to access the raw methods on +// AbiTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AbiTransactorRaw struct { + Contract *AbiTransactor // Generic write-only contract binding to access the raw methods on } -// NewWormholeBridge creates a new instance of WormholeBridge, bound to a specific deployed contract. -func NewWormholeBridge(address common.Address, backend bind.ContractBackend) (*WormholeBridge, error) { - contract, err := bindWormholeBridge(address, backend, backend, backend) +// NewAbi creates a new instance of Abi, bound to a specific deployed contract. +func NewAbi(address common.Address, backend bind.ContractBackend) (*Abi, error) { + contract, err := bindAbi(address, backend, backend, backend) if err != nil { return nil, err } - return &WormholeBridge{WormholeBridgeCaller: WormholeBridgeCaller{contract: contract}, WormholeBridgeTransactor: WormholeBridgeTransactor{contract: contract}, WormholeBridgeFilterer: WormholeBridgeFilterer{contract: contract}}, nil + return &Abi{AbiCaller: AbiCaller{contract: contract}, AbiTransactor: AbiTransactor{contract: contract}, AbiFilterer: AbiFilterer{contract: contract}}, nil } -// NewWormholeBridgeCaller creates a new read-only instance of WormholeBridge, bound to a specific deployed contract. -func NewWormholeBridgeCaller(address common.Address, caller bind.ContractCaller) (*WormholeBridgeCaller, error) { - contract, err := bindWormholeBridge(address, caller, nil, nil) +// NewAbiCaller creates a new read-only instance of Abi, bound to a specific deployed contract. +func NewAbiCaller(address common.Address, caller bind.ContractCaller) (*AbiCaller, error) { + contract, err := bindAbi(address, caller, nil, nil) if err != nil { return nil, err } - return &WormholeBridgeCaller{contract: contract}, nil + return &AbiCaller{contract: contract}, nil } -// NewWormholeBridgeTransactor creates a new write-only instance of WormholeBridge, bound to a specific deployed contract. -func NewWormholeBridgeTransactor(address common.Address, transactor bind.ContractTransactor) (*WormholeBridgeTransactor, error) { - contract, err := bindWormholeBridge(address, nil, transactor, nil) +// NewAbiTransactor creates a new write-only instance of Abi, bound to a specific deployed contract. +func NewAbiTransactor(address common.Address, transactor bind.ContractTransactor) (*AbiTransactor, error) { + contract, err := bindAbi(address, nil, transactor, nil) if err != nil { return nil, err } - return &WormholeBridgeTransactor{contract: contract}, nil + return &AbiTransactor{contract: contract}, nil } -// NewWormholeBridgeFilterer creates a new log filterer instance of WormholeBridge, bound to a specific deployed contract. -func NewWormholeBridgeFilterer(address common.Address, filterer bind.ContractFilterer) (*WormholeBridgeFilterer, error) { - contract, err := bindWormholeBridge(address, nil, nil, filterer) +// NewAbiFilterer creates a new log filterer instance of Abi, bound to a specific deployed contract. +func NewAbiFilterer(address common.Address, filterer bind.ContractFilterer) (*AbiFilterer, error) { + contract, err := bindAbi(address, nil, nil, filterer) if err != nil { return nil, err } - return &WormholeBridgeFilterer{contract: contract}, nil + return &AbiFilterer{contract: contract}, nil } -// bindWormholeBridge binds a generic wrapper to an already deployed contract. -func bindWormholeBridge(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := abi.JSON(strings.NewReader(WormholeBridgeABI)) +// bindAbi binds a generic wrapper to an already deployed contract. +func bindAbi(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(AbiABI)) if err != nil { return nil, err } @@ -146,226 +143,304 @@ func bindWormholeBridge(address common.Address, caller bind.ContractCaller, tran // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_WormholeBridge *WormholeBridgeRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { - return _WormholeBridge.Contract.WormholeBridgeCaller.contract.Call(opts, result, method, params...) +func (_Abi *AbiRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { + return _Abi.Contract.AbiCaller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_WormholeBridge *WormholeBridgeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _WormholeBridge.Contract.WormholeBridgeTransactor.contract.Transfer(opts) +func (_Abi *AbiRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Abi.Contract.AbiTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_WormholeBridge *WormholeBridgeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _WormholeBridge.Contract.WormholeBridgeTransactor.contract.Transact(opts, method, params...) +func (_Abi *AbiRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Abi.Contract.AbiTransactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_WormholeBridge *WormholeBridgeCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { - return _WormholeBridge.Contract.contract.Call(opts, result, method, params...) +func (_Abi *AbiCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { + return _Abi.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_WormholeBridge *WormholeBridgeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _WormholeBridge.Contract.contract.Transfer(opts) +func (_Abi *AbiTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Abi.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_WormholeBridge *WormholeBridgeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _WormholeBridge.Contract.contract.Transact(opts, method, params...) +func (_Abi *AbiTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Abi.Contract.contract.Transact(opts, method, params...) } // GuardianSetIndex is a free data retrieval call binding the contract method 0x822d82b3. // // Solidity: function guardian_set_index() view returns(uint32) -func (_WormholeBridge *WormholeBridgeCaller) GuardianSetIndex(opts *bind.CallOpts) (uint32, error) { +func (_Abi *AbiCaller) GuardianSetIndex(opts *bind.CallOpts) (uint32, error) { var ( ret0 = new(uint32) ) out := ret0 - err := _WormholeBridge.contract.Call(opts, out, "guardian_set_index") + err := _Abi.contract.Call(opts, out, "guardian_set_index") return *ret0, err } // GuardianSetIndex is a free data retrieval call binding the contract method 0x822d82b3. // // Solidity: function guardian_set_index() view returns(uint32) -func (_WormholeBridge *WormholeBridgeSession) GuardianSetIndex() (uint32, error) { - return _WormholeBridge.Contract.GuardianSetIndex(&_WormholeBridge.CallOpts) +func (_Abi *AbiSession) GuardianSetIndex() (uint32, error) { + return _Abi.Contract.GuardianSetIndex(&_Abi.CallOpts) } // GuardianSetIndex is a free data retrieval call binding the contract method 0x822d82b3. // // Solidity: function guardian_set_index() view returns(uint32) -func (_WormholeBridge *WormholeBridgeCallerSession) GuardianSetIndex() (uint32, error) { - return _WormholeBridge.Contract.GuardianSetIndex(&_WormholeBridge.CallOpts) +func (_Abi *AbiCallerSession) GuardianSetIndex() (uint32, error) { + return _Abi.Contract.GuardianSetIndex(&_Abi.CallOpts) +} + +// GuardianSets is a free data retrieval call binding the contract method 0x42b0aefa. +// +// Solidity: function guardian_sets(uint32 ) view returns(uint32 expiration_time) +func (_Abi *AbiCaller) GuardianSets(opts *bind.CallOpts, arg0 uint32) (uint32, error) { + var ( + ret0 = new(uint32) + ) + out := ret0 + err := _Abi.contract.Call(opts, out, "guardian_sets", arg0) + return *ret0, err +} + +// GuardianSets is a free data retrieval call binding the contract method 0x42b0aefa. +// +// Solidity: function guardian_sets(uint32 ) view returns(uint32 expiration_time) +func (_Abi *AbiSession) GuardianSets(arg0 uint32) (uint32, error) { + return _Abi.Contract.GuardianSets(&_Abi.CallOpts, arg0) +} + +// GuardianSets is a free data retrieval call binding the contract method 0x42b0aefa. +// +// Solidity: function guardian_sets(uint32 ) view returns(uint32 expiration_time) +func (_Abi *AbiCallerSession) GuardianSets(arg0 uint32) (uint32, error) { + return _Abi.Contract.GuardianSets(&_Abi.CallOpts, arg0) +} + +// IsWrappedAsset is a free data retrieval call binding the contract method 0x1a2be4da. +// +// Solidity: function isWrappedAsset(address ) view returns(bool) +func (_Abi *AbiCaller) IsWrappedAsset(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var ( + ret0 = new(bool) + ) + out := ret0 + err := _Abi.contract.Call(opts, out, "isWrappedAsset", arg0) + return *ret0, err +} + +// IsWrappedAsset is a free data retrieval call binding the contract method 0x1a2be4da. +// +// Solidity: function isWrappedAsset(address ) view returns(bool) +func (_Abi *AbiSession) IsWrappedAsset(arg0 common.Address) (bool, error) { + return _Abi.Contract.IsWrappedAsset(&_Abi.CallOpts, arg0) +} + +// IsWrappedAsset is a free data retrieval call binding the contract method 0x1a2be4da. +// +// Solidity: function isWrappedAsset(address ) view returns(bool) +func (_Abi *AbiCallerSession) IsWrappedAsset(arg0 common.Address) (bool, error) { + return _Abi.Contract.IsWrappedAsset(&_Abi.CallOpts, arg0) } // VaaExpiry is a free data retrieval call binding the contract method 0x7f04d9e6. // // Solidity: function vaa_expiry() view returns(uint32) -func (_WormholeBridge *WormholeBridgeCaller) VaaExpiry(opts *bind.CallOpts) (uint32, error) { +func (_Abi *AbiCaller) VaaExpiry(opts *bind.CallOpts) (uint32, error) { var ( ret0 = new(uint32) ) out := ret0 - err := _WormholeBridge.contract.Call(opts, out, "vaa_expiry") + err := _Abi.contract.Call(opts, out, "vaa_expiry") return *ret0, err } // VaaExpiry is a free data retrieval call binding the contract method 0x7f04d9e6. // // Solidity: function vaa_expiry() view returns(uint32) -func (_WormholeBridge *WormholeBridgeSession) VaaExpiry() (uint32, error) { - return _WormholeBridge.Contract.VaaExpiry(&_WormholeBridge.CallOpts) +func (_Abi *AbiSession) VaaExpiry() (uint32, error) { + return _Abi.Contract.VaaExpiry(&_Abi.CallOpts) } // VaaExpiry is a free data retrieval call binding the contract method 0x7f04d9e6. // // Solidity: function vaa_expiry() view returns(uint32) -func (_WormholeBridge *WormholeBridgeCallerSession) VaaExpiry() (uint32, error) { - return _WormholeBridge.Contract.VaaExpiry(&_WormholeBridge.CallOpts) +func (_Abi *AbiCallerSession) VaaExpiry() (uint32, error) { + return _Abi.Contract.VaaExpiry(&_Abi.CallOpts) } // WrappedAssetMaster is a free data retrieval call binding the contract method 0x99da1d3c. // // Solidity: function wrappedAssetMaster() view returns(address) -func (_WormholeBridge *WormholeBridgeCaller) WrappedAssetMaster(opts *bind.CallOpts) (common.Address, error) { +func (_Abi *AbiCaller) WrappedAssetMaster(opts *bind.CallOpts) (common.Address, error) { var ( ret0 = new(common.Address) ) out := ret0 - err := _WormholeBridge.contract.Call(opts, out, "wrappedAssetMaster") + err := _Abi.contract.Call(opts, out, "wrappedAssetMaster") return *ret0, err } // WrappedAssetMaster is a free data retrieval call binding the contract method 0x99da1d3c. // // Solidity: function wrappedAssetMaster() view returns(address) -func (_WormholeBridge *WormholeBridgeSession) WrappedAssetMaster() (common.Address, error) { - return _WormholeBridge.Contract.WrappedAssetMaster(&_WormholeBridge.CallOpts) +func (_Abi *AbiSession) WrappedAssetMaster() (common.Address, error) { + return _Abi.Contract.WrappedAssetMaster(&_Abi.CallOpts) } // WrappedAssetMaster is a free data retrieval call binding the contract method 0x99da1d3c. // // Solidity: function wrappedAssetMaster() view returns(address) -func (_WormholeBridge *WormholeBridgeCallerSession) WrappedAssetMaster() (common.Address, error) { - return _WormholeBridge.Contract.WrappedAssetMaster(&_WormholeBridge.CallOpts) +func (_Abi *AbiCallerSession) WrappedAssetMaster() (common.Address, error) { + return _Abi.Contract.WrappedAssetMaster(&_Abi.CallOpts) +} + +// WrappedAssets is a free data retrieval call binding the contract method 0xb6694c2a. +// +// Solidity: function wrappedAssets(bytes32 ) view returns(address) +func (_Abi *AbiCaller) WrappedAssets(opts *bind.CallOpts, arg0 [32]byte) (common.Address, error) { + var ( + ret0 = new(common.Address) + ) + out := ret0 + err := _Abi.contract.Call(opts, out, "wrappedAssets", arg0) + return *ret0, err +} + +// WrappedAssets is a free data retrieval call binding the contract method 0xb6694c2a. +// +// Solidity: function wrappedAssets(bytes32 ) view returns(address) +func (_Abi *AbiSession) WrappedAssets(arg0 [32]byte) (common.Address, error) { + return _Abi.Contract.WrappedAssets(&_Abi.CallOpts, arg0) +} + +// WrappedAssets is a free data retrieval call binding the contract method 0xb6694c2a. +// +// Solidity: function wrappedAssets(bytes32 ) view returns(address) +func (_Abi *AbiCallerSession) WrappedAssets(arg0 [32]byte) (common.Address, error) { + return _Abi.Contract.WrappedAssets(&_Abi.CallOpts, arg0) } // LockAssets is a paid mutator transaction binding the contract method 0xe66fd373. // // Solidity: function lockAssets(address asset, uint256 amount, bytes32 recipient, uint8 target_chain) returns() -func (_WormholeBridge *WormholeBridgeTransactor) LockAssets(opts *bind.TransactOpts, asset common.Address, amount *big.Int, recipient [32]byte, target_chain uint8) (*types.Transaction, error) { - return _WormholeBridge.contract.Transact(opts, "lockAssets", asset, amount, recipient, target_chain) +func (_Abi *AbiTransactor) LockAssets(opts *bind.TransactOpts, asset common.Address, amount *big.Int, recipient [32]byte, target_chain uint8) (*types.Transaction, error) { + return _Abi.contract.Transact(opts, "lockAssets", asset, amount, recipient, target_chain) } // LockAssets is a paid mutator transaction binding the contract method 0xe66fd373. // // Solidity: function lockAssets(address asset, uint256 amount, bytes32 recipient, uint8 target_chain) returns() -func (_WormholeBridge *WormholeBridgeSession) LockAssets(asset common.Address, amount *big.Int, recipient [32]byte, target_chain uint8) (*types.Transaction, error) { - return _WormholeBridge.Contract.LockAssets(&_WormholeBridge.TransactOpts, asset, amount, recipient, target_chain) +func (_Abi *AbiSession) LockAssets(asset common.Address, amount *big.Int, recipient [32]byte, target_chain uint8) (*types.Transaction, error) { + return _Abi.Contract.LockAssets(&_Abi.TransactOpts, asset, amount, recipient, target_chain) } // LockAssets is a paid mutator transaction binding the contract method 0xe66fd373. // // Solidity: function lockAssets(address asset, uint256 amount, bytes32 recipient, uint8 target_chain) returns() -func (_WormholeBridge *WormholeBridgeTransactorSession) LockAssets(asset common.Address, amount *big.Int, recipient [32]byte, target_chain uint8) (*types.Transaction, error) { - return _WormholeBridge.Contract.LockAssets(&_WormholeBridge.TransactOpts, asset, amount, recipient, target_chain) +func (_Abi *AbiTransactorSession) LockAssets(asset common.Address, amount *big.Int, recipient [32]byte, target_chain uint8) (*types.Transaction, error) { + return _Abi.Contract.LockAssets(&_Abi.TransactOpts, asset, amount, recipient, target_chain) } // LockETH is a paid mutator transaction binding the contract method 0x780e2183. // // Solidity: function lockETH(bytes32 recipient, uint8 target_chain) payable returns() -func (_WormholeBridge *WormholeBridgeTransactor) LockETH(opts *bind.TransactOpts, recipient [32]byte, target_chain uint8) (*types.Transaction, error) { - return _WormholeBridge.contract.Transact(opts, "lockETH", recipient, target_chain) +func (_Abi *AbiTransactor) LockETH(opts *bind.TransactOpts, recipient [32]byte, target_chain uint8) (*types.Transaction, error) { + return _Abi.contract.Transact(opts, "lockETH", recipient, target_chain) } // LockETH is a paid mutator transaction binding the contract method 0x780e2183. // // Solidity: function lockETH(bytes32 recipient, uint8 target_chain) payable returns() -func (_WormholeBridge *WormholeBridgeSession) LockETH(recipient [32]byte, target_chain uint8) (*types.Transaction, error) { - return _WormholeBridge.Contract.LockETH(&_WormholeBridge.TransactOpts, recipient, target_chain) +func (_Abi *AbiSession) LockETH(recipient [32]byte, target_chain uint8) (*types.Transaction, error) { + return _Abi.Contract.LockETH(&_Abi.TransactOpts, recipient, target_chain) } // LockETH is a paid mutator transaction binding the contract method 0x780e2183. // // Solidity: function lockETH(bytes32 recipient, uint8 target_chain) payable returns() -func (_WormholeBridge *WormholeBridgeTransactorSession) LockETH(recipient [32]byte, target_chain uint8) (*types.Transaction, error) { - return _WormholeBridge.Contract.LockETH(&_WormholeBridge.TransactOpts, recipient, target_chain) +func (_Abi *AbiTransactorSession) LockETH(recipient [32]byte, target_chain uint8) (*types.Transaction, error) { + return _Abi.Contract.LockETH(&_Abi.TransactOpts, recipient, target_chain) } // SubmitVAA is a paid mutator transaction binding the contract method 0x3bc0aee6. // // Solidity: function submitVAA(bytes vaa) returns() -func (_WormholeBridge *WormholeBridgeTransactor) SubmitVAA(opts *bind.TransactOpts, vaa []byte) (*types.Transaction, error) { - return _WormholeBridge.contract.Transact(opts, "submitVAA", vaa) +func (_Abi *AbiTransactor) SubmitVAA(opts *bind.TransactOpts, vaa []byte) (*types.Transaction, error) { + return _Abi.contract.Transact(opts, "submitVAA", vaa) } // SubmitVAA is a paid mutator transaction binding the contract method 0x3bc0aee6. // // Solidity: function submitVAA(bytes vaa) returns() -func (_WormholeBridge *WormholeBridgeSession) SubmitVAA(vaa []byte) (*types.Transaction, error) { - return _WormholeBridge.Contract.SubmitVAA(&_WormholeBridge.TransactOpts, vaa) +func (_Abi *AbiSession) SubmitVAA(vaa []byte) (*types.Transaction, error) { + return _Abi.Contract.SubmitVAA(&_Abi.TransactOpts, vaa) } // SubmitVAA is a paid mutator transaction binding the contract method 0x3bc0aee6. // // Solidity: function submitVAA(bytes vaa) returns() -func (_WormholeBridge *WormholeBridgeTransactorSession) SubmitVAA(vaa []byte) (*types.Transaction, error) { - return _WormholeBridge.Contract.SubmitVAA(&_WormholeBridge.TransactOpts, vaa) +func (_Abi *AbiTransactorSession) SubmitVAA(vaa []byte) (*types.Transaction, error) { + return _Abi.Contract.SubmitVAA(&_Abi.TransactOpts, vaa) } // Fallback is a paid mutator transaction binding the contract fallback function. // // Solidity: fallback() payable returns() -func (_WormholeBridge *WormholeBridgeTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { - return _WormholeBridge.contract.RawTransact(opts, calldata) +func (_Abi *AbiTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { + return _Abi.contract.RawTransact(opts, calldata) } // Fallback is a paid mutator transaction binding the contract fallback function. // // Solidity: fallback() payable returns() -func (_WormholeBridge *WormholeBridgeSession) Fallback(calldata []byte) (*types.Transaction, error) { - return _WormholeBridge.Contract.Fallback(&_WormholeBridge.TransactOpts, calldata) +func (_Abi *AbiSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _Abi.Contract.Fallback(&_Abi.TransactOpts, calldata) } // Fallback is a paid mutator transaction binding the contract fallback function. // // Solidity: fallback() payable returns() -func (_WormholeBridge *WormholeBridgeTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { - return _WormholeBridge.Contract.Fallback(&_WormholeBridge.TransactOpts, calldata) +func (_Abi *AbiTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _Abi.Contract.Fallback(&_Abi.TransactOpts, calldata) } // Receive is a paid mutator transaction binding the contract receive function. // // Solidity: receive() payable returns() -func (_WormholeBridge *WormholeBridgeTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { - return _WormholeBridge.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +func (_Abi *AbiTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Abi.contract.RawTransact(opts, nil) // calldata is disallowed for receive function } // Receive is a paid mutator transaction binding the contract receive function. // // Solidity: receive() payable returns() -func (_WormholeBridge *WormholeBridgeSession) Receive() (*types.Transaction, error) { - return _WormholeBridge.Contract.Receive(&_WormholeBridge.TransactOpts) +func (_Abi *AbiSession) Receive() (*types.Transaction, error) { + return _Abi.Contract.Receive(&_Abi.TransactOpts) } // Receive is a paid mutator transaction binding the contract receive function. // // Solidity: receive() payable returns() -func (_WormholeBridge *WormholeBridgeTransactorSession) Receive() (*types.Transaction, error) { - return _WormholeBridge.Contract.Receive(&_WormholeBridge.TransactOpts) +func (_Abi *AbiTransactorSession) Receive() (*types.Transaction, error) { + return _Abi.Contract.Receive(&_Abi.TransactOpts) } -// WormholeBridgeLogGuardianSetChangedIterator is returned from FilterLogGuardianSetChanged and is used to iterate over the raw logs and unpacked data for LogGuardianSetChanged events raised by the WormholeBridge contract. -type WormholeBridgeLogGuardianSetChangedIterator struct { - Event *WormholeBridgeLogGuardianSetChanged // Event containing the contract specifics and raw log +// AbiLogGuardianSetChangedIterator is returned from FilterLogGuardianSetChanged and is used to iterate over the raw logs and unpacked data for LogGuardianSetChanged events raised by the Abi contract. +type AbiLogGuardianSetChangedIterator struct { + Event *AbiLogGuardianSetChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -379,7 +454,7 @@ type WormholeBridgeLogGuardianSetChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *WormholeBridgeLogGuardianSetChangedIterator) Next() bool { +func (it *AbiLogGuardianSetChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -388,7 +463,7 @@ func (it *WormholeBridgeLogGuardianSetChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(WormholeBridgeLogGuardianSetChanged) + it.Event = new(AbiLogGuardianSetChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -403,7 +478,7 @@ func (it *WormholeBridgeLogGuardianSetChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(WormholeBridgeLogGuardianSetChanged) + it.Event = new(AbiLogGuardianSetChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -419,28 +494,28 @@ func (it *WormholeBridgeLogGuardianSetChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *WormholeBridgeLogGuardianSetChangedIterator) Error() error { +func (it *AbiLogGuardianSetChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *WormholeBridgeLogGuardianSetChangedIterator) Close() error { +func (it *AbiLogGuardianSetChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// WormholeBridgeLogGuardianSetChanged represents a LogGuardianSetChanged event raised by the WormholeBridge contract. -type WormholeBridgeLogGuardianSetChanged struct { +// AbiLogGuardianSetChanged represents a LogGuardianSetChanged event raised by the Abi contract. +type AbiLogGuardianSetChanged struct { OldGuardian WormholeGuardianSet NewGuardian WormholeGuardianSet Raw types.Log // Blockchain specific contextual infos } -// FilterLogGuardianSetChanged is a free log retrieval operation binding the contract event 0x776a7721d091beb15fb219d7be3c92b83fa7c10428af15a7312461bc3bc52e0b. +// FilterLogGuardianSetChanged is a free log retrieval operation binding the contract event 0xffd222fffe5bc3841c76607f52e3101e111286ab95f24f199ba39e0d5df72acb. // -// Solidity: event LogGuardianSetChanged((uint256,uint8,uint32) indexed oldGuardian, (uint256,uint8,uint32) indexed newGuardian) -func (_WormholeBridge *WormholeBridgeFilterer) FilterLogGuardianSetChanged(opts *bind.FilterOpts, oldGuardian []WormholeGuardianSet, newGuardian []WormholeGuardianSet) (*WormholeBridgeLogGuardianSetChangedIterator, error) { +// Solidity: event LogGuardianSetChanged((address[],uint32) indexed oldGuardian, (address[],uint32) indexed newGuardian) +func (_Abi *AbiFilterer) FilterLogGuardianSetChanged(opts *bind.FilterOpts, oldGuardian []WormholeGuardianSet, newGuardian []WormholeGuardianSet) (*AbiLogGuardianSetChangedIterator, error) { var oldGuardianRule []interface{} for _, oldGuardianItem := range oldGuardian { @@ -451,17 +526,17 @@ func (_WormholeBridge *WormholeBridgeFilterer) FilterLogGuardianSetChanged(opts newGuardianRule = append(newGuardianRule, newGuardianItem) } - logs, sub, err := _WormholeBridge.contract.FilterLogs(opts, "LogGuardianSetChanged", oldGuardianRule, newGuardianRule) + logs, sub, err := _Abi.contract.FilterLogs(opts, "LogGuardianSetChanged", oldGuardianRule, newGuardianRule) if err != nil { return nil, err } - return &WormholeBridgeLogGuardianSetChangedIterator{contract: _WormholeBridge.contract, event: "LogGuardianSetChanged", logs: logs, sub: sub}, nil + return &AbiLogGuardianSetChangedIterator{contract: _Abi.contract, event: "LogGuardianSetChanged", logs: logs, sub: sub}, nil } -// WatchLogGuardianSetChanged is a free log subscription operation binding the contract event 0x776a7721d091beb15fb219d7be3c92b83fa7c10428af15a7312461bc3bc52e0b. +// WatchLogGuardianSetChanged is a free log subscription operation binding the contract event 0xffd222fffe5bc3841c76607f52e3101e111286ab95f24f199ba39e0d5df72acb. // -// Solidity: event LogGuardianSetChanged((uint256,uint8,uint32) indexed oldGuardian, (uint256,uint8,uint32) indexed newGuardian) -func (_WormholeBridge *WormholeBridgeFilterer) WatchLogGuardianSetChanged(opts *bind.WatchOpts, sink chan<- *WormholeBridgeLogGuardianSetChanged, oldGuardian []WormholeGuardianSet, newGuardian []WormholeGuardianSet) (event.Subscription, error) { +// Solidity: event LogGuardianSetChanged((address[],uint32) indexed oldGuardian, (address[],uint32) indexed newGuardian) +func (_Abi *AbiFilterer) WatchLogGuardianSetChanged(opts *bind.WatchOpts, sink chan<- *AbiLogGuardianSetChanged, oldGuardian []WormholeGuardianSet, newGuardian []WormholeGuardianSet) (event.Subscription, error) { var oldGuardianRule []interface{} for _, oldGuardianItem := range oldGuardian { @@ -472,7 +547,7 @@ func (_WormholeBridge *WormholeBridgeFilterer) WatchLogGuardianSetChanged(opts * newGuardianRule = append(newGuardianRule, newGuardianItem) } - logs, sub, err := _WormholeBridge.contract.WatchLogs(opts, "LogGuardianSetChanged", oldGuardianRule, newGuardianRule) + logs, sub, err := _Abi.contract.WatchLogs(opts, "LogGuardianSetChanged", oldGuardianRule, newGuardianRule) if err != nil { return nil, err } @@ -482,8 +557,8 @@ func (_WormholeBridge *WormholeBridgeFilterer) WatchLogGuardianSetChanged(opts * select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(WormholeBridgeLogGuardianSetChanged) - if err := _WormholeBridge.contract.UnpackLog(event, "LogGuardianSetChanged", log); err != nil { + event := new(AbiLogGuardianSetChanged) + if err := _Abi.contract.UnpackLog(event, "LogGuardianSetChanged", log); err != nil { return err } event.Raw = log @@ -504,20 +579,20 @@ func (_WormholeBridge *WormholeBridgeFilterer) WatchLogGuardianSetChanged(opts * }), nil } -// ParseLogGuardianSetChanged is a log parse operation binding the contract event 0x776a7721d091beb15fb219d7be3c92b83fa7c10428af15a7312461bc3bc52e0b. +// ParseLogGuardianSetChanged is a log parse operation binding the contract event 0xffd222fffe5bc3841c76607f52e3101e111286ab95f24f199ba39e0d5df72acb. // -// Solidity: event LogGuardianSetChanged((uint256,uint8,uint32) indexed oldGuardian, (uint256,uint8,uint32) indexed newGuardian) -func (_WormholeBridge *WormholeBridgeFilterer) ParseLogGuardianSetChanged(log types.Log) (*WormholeBridgeLogGuardianSetChanged, error) { - event := new(WormholeBridgeLogGuardianSetChanged) - if err := _WormholeBridge.contract.UnpackLog(event, "LogGuardianSetChanged", log); err != nil { +// Solidity: event LogGuardianSetChanged((address[],uint32) indexed oldGuardian, (address[],uint32) indexed newGuardian) +func (_Abi *AbiFilterer) ParseLogGuardianSetChanged(log types.Log) (*AbiLogGuardianSetChanged, error) { + event := new(AbiLogGuardianSetChanged) + if err := _Abi.contract.UnpackLog(event, "LogGuardianSetChanged", log); err != nil { return nil, err } return event, nil } -// WormholeBridgeLogTokensLockedIterator is returned from FilterLogTokensLocked and is used to iterate over the raw logs and unpacked data for LogTokensLocked events raised by the WormholeBridge contract. -type WormholeBridgeLogTokensLockedIterator struct { - Event *WormholeBridgeLogTokensLocked // Event containing the contract specifics and raw log +// AbiLogTokensLockedIterator is returned from FilterLogTokensLocked and is used to iterate over the raw logs and unpacked data for LogTokensLocked events raised by the Abi contract. +type AbiLogTokensLockedIterator struct { + Event *AbiLogTokensLocked // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -531,7 +606,7 @@ type WormholeBridgeLogTokensLockedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *WormholeBridgeLogTokensLockedIterator) Next() bool { +func (it *AbiLogTokensLockedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -540,7 +615,7 @@ func (it *WormholeBridgeLogTokensLockedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(WormholeBridgeLogTokensLocked) + it.Event = new(AbiLogTokensLocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -555,7 +630,7 @@ func (it *WormholeBridgeLogTokensLockedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(WormholeBridgeLogTokensLocked) + it.Event = new(AbiLogTokensLocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -571,19 +646,19 @@ func (it *WormholeBridgeLogTokensLockedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *WormholeBridgeLogTokensLockedIterator) Error() error { +func (it *AbiLogTokensLockedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *WormholeBridgeLogTokensLockedIterator) Close() error { +func (it *AbiLogTokensLockedIterator) Close() error { it.sub.Unsubscribe() return nil } -// WormholeBridgeLogTokensLocked represents a LogTokensLocked event raised by the WormholeBridge contract. -type WormholeBridgeLogTokensLocked struct { +// AbiLogTokensLocked represents a LogTokensLocked event raised by the Abi contract. +type AbiLogTokensLocked struct { TargetChain uint8 TokenChain uint8 Token [32]byte @@ -596,7 +671,7 @@ type WormholeBridgeLogTokensLocked struct { // FilterLogTokensLocked is a free log retrieval operation binding the contract event 0x84b445260a99044cc9529b3033663c078031a14e31f3c255ff02c62667bab14b. // // Solidity: event LogTokensLocked(uint8 target_chain, uint8 token_chain, bytes32 indexed token, bytes32 indexed sender, bytes32 recipient, uint256 amount) -func (_WormholeBridge *WormholeBridgeFilterer) FilterLogTokensLocked(opts *bind.FilterOpts, token [][32]byte, sender [][32]byte) (*WormholeBridgeLogTokensLockedIterator, error) { +func (_Abi *AbiFilterer) FilterLogTokensLocked(opts *bind.FilterOpts, token [][32]byte, sender [][32]byte) (*AbiLogTokensLockedIterator, error) { var tokenRule []interface{} for _, tokenItem := range token { @@ -607,17 +682,17 @@ func (_WormholeBridge *WormholeBridgeFilterer) FilterLogTokensLocked(opts *bind. senderRule = append(senderRule, senderItem) } - logs, sub, err := _WormholeBridge.contract.FilterLogs(opts, "LogTokensLocked", tokenRule, senderRule) + logs, sub, err := _Abi.contract.FilterLogs(opts, "LogTokensLocked", tokenRule, senderRule) if err != nil { return nil, err } - return &WormholeBridgeLogTokensLockedIterator{contract: _WormholeBridge.contract, event: "LogTokensLocked", logs: logs, sub: sub}, nil + return &AbiLogTokensLockedIterator{contract: _Abi.contract, event: "LogTokensLocked", logs: logs, sub: sub}, nil } // WatchLogTokensLocked is a free log subscription operation binding the contract event 0x84b445260a99044cc9529b3033663c078031a14e31f3c255ff02c62667bab14b. // // Solidity: event LogTokensLocked(uint8 target_chain, uint8 token_chain, bytes32 indexed token, bytes32 indexed sender, bytes32 recipient, uint256 amount) -func (_WormholeBridge *WormholeBridgeFilterer) WatchLogTokensLocked(opts *bind.WatchOpts, sink chan<- *WormholeBridgeLogTokensLocked, token [][32]byte, sender [][32]byte) (event.Subscription, error) { +func (_Abi *AbiFilterer) WatchLogTokensLocked(opts *bind.WatchOpts, sink chan<- *AbiLogTokensLocked, token [][32]byte, sender [][32]byte) (event.Subscription, error) { var tokenRule []interface{} for _, tokenItem := range token { @@ -628,7 +703,7 @@ func (_WormholeBridge *WormholeBridgeFilterer) WatchLogTokensLocked(opts *bind.W senderRule = append(senderRule, senderItem) } - logs, sub, err := _WormholeBridge.contract.WatchLogs(opts, "LogTokensLocked", tokenRule, senderRule) + logs, sub, err := _Abi.contract.WatchLogs(opts, "LogTokensLocked", tokenRule, senderRule) if err != nil { return nil, err } @@ -638,8 +713,8 @@ func (_WormholeBridge *WormholeBridgeFilterer) WatchLogTokensLocked(opts *bind.W select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(WormholeBridgeLogTokensLocked) - if err := _WormholeBridge.contract.UnpackLog(event, "LogTokensLocked", log); err != nil { + event := new(AbiLogTokensLocked) + if err := _Abi.contract.UnpackLog(event, "LogTokensLocked", log); err != nil { return err } event.Raw = log @@ -663,164 +738,11 @@ func (_WormholeBridge *WormholeBridgeFilterer) WatchLogTokensLocked(opts *bind.W // ParseLogTokensLocked is a log parse operation binding the contract event 0x84b445260a99044cc9529b3033663c078031a14e31f3c255ff02c62667bab14b. // // Solidity: event LogTokensLocked(uint8 target_chain, uint8 token_chain, bytes32 indexed token, bytes32 indexed sender, bytes32 recipient, uint256 amount) -func (_WormholeBridge *WormholeBridgeFilterer) ParseLogTokensLocked(log types.Log) (*WormholeBridgeLogTokensLocked, error) { - event := new(WormholeBridgeLogTokensLocked) - if err := _WormholeBridge.contract.UnpackLog(event, "LogTokensLocked", log); err != nil { +func (_Abi *AbiFilterer) ParseLogTokensLocked(log types.Log) (*AbiLogTokensLocked, error) { + event := new(AbiLogTokensLocked) + if err := _Abi.contract.UnpackLog(event, "LogTokensLocked", log); err != nil { return nil, err } return event, nil } -// WormholeBridgeLogTokensUnlockedIterator is returned from FilterLogTokensUnlocked and is used to iterate over the raw logs and unpacked data for LogTokensUnlocked events raised by the WormholeBridge contract. -type WormholeBridgeLogTokensUnlockedIterator struct { - Event *WormholeBridgeLogTokensUnlocked // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *WormholeBridgeLogTokensUnlockedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(WormholeBridgeLogTokensUnlocked) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(WormholeBridgeLogTokensUnlocked) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *WormholeBridgeLogTokensUnlockedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *WormholeBridgeLogTokensUnlockedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// WormholeBridgeLogTokensUnlocked represents a LogTokensUnlocked event raised by the WormholeBridge contract. -type WormholeBridgeLogTokensUnlocked struct { - Token common.Address - Sender [32]byte - Recipient common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterLogTokensUnlocked is a free log retrieval operation binding the contract event 0x762f40dceecda77485ebb6a807ba1ba35b861c5d34fe9bffbb94826a0dc0f101. -// -// Solidity: event LogTokensUnlocked(address indexed token, bytes32 indexed sender, address recipient, uint256 amount) -func (_WormholeBridge *WormholeBridgeFilterer) FilterLogTokensUnlocked(opts *bind.FilterOpts, token []common.Address, sender [][32]byte) (*WormholeBridgeLogTokensUnlockedIterator, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - - logs, sub, err := _WormholeBridge.contract.FilterLogs(opts, "LogTokensUnlocked", tokenRule, senderRule) - if err != nil { - return nil, err - } - return &WormholeBridgeLogTokensUnlockedIterator{contract: _WormholeBridge.contract, event: "LogTokensUnlocked", logs: logs, sub: sub}, nil -} - -// WatchLogTokensUnlocked is a free log subscription operation binding the contract event 0x762f40dceecda77485ebb6a807ba1ba35b861c5d34fe9bffbb94826a0dc0f101. -// -// Solidity: event LogTokensUnlocked(address indexed token, bytes32 indexed sender, address recipient, uint256 amount) -func (_WormholeBridge *WormholeBridgeFilterer) WatchLogTokensUnlocked(opts *bind.WatchOpts, sink chan<- *WormholeBridgeLogTokensUnlocked, token []common.Address, sender [][32]byte) (event.Subscription, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - - logs, sub, err := _WormholeBridge.contract.WatchLogs(opts, "LogTokensUnlocked", tokenRule, senderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(WormholeBridgeLogTokensUnlocked) - if err := _WormholeBridge.contract.UnpackLog(event, "LogTokensUnlocked", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseLogTokensUnlocked is a log parse operation binding the contract event 0x762f40dceecda77485ebb6a807ba1ba35b861c5d34fe9bffbb94826a0dc0f101. -// -// Solidity: event LogTokensUnlocked(address indexed token, bytes32 indexed sender, address recipient, uint256 amount) -func (_WormholeBridge *WormholeBridgeFilterer) ParseLogTokensUnlocked(log types.Log) (*WormholeBridgeLogTokensUnlocked, error) { - event := new(WormholeBridgeLogTokensUnlocked) - if err := _WormholeBridge.contract.UnpackLog(event, "LogTokensUnlocked", log); err != nil { - return nil, err - } - return event, nil -} diff --git a/ethereum/package.json b/ethereum/package.json index 7e44c9d52..fbd6c8047 100644 --- a/ethereum/package.json +++ b/ethereum/package.json @@ -8,6 +8,7 @@ "@openzeppelin/contracts": "^3.1.0", "@openzeppelin/test-environment": "^0.1.4", "@openzeppelin/test-helpers": "^0.5.6", + "@chainsafe/truffle-plugin-abigen": "0.0.1", "chai": "^4.2.0", "mocha": "^8.1.1", "truffle-assertions": "^0.9.2", diff --git a/ethereum/truffle-config.js b/ethereum/truffle-config.js index e7f5bed18..7c02cb274 100644 --- a/ethereum/truffle-config.js +++ b/ethereum/truffle-config.js @@ -91,4 +91,8 @@ module.exports = { // } }, }, + + plugins: [ + "@chainsafe/truffle-plugin-abigen" + ], }; diff --git a/generate-abi.sh b/generate-abi.sh new file mode 100755 index 000000000..dd0423453 --- /dev/null +++ b/generate-abi.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# Regenerate bridge/pkg/ethereum/abi using a running eth-devnet's state. + +( + cd third_party/abigen + docker build -t localhost/certusone/wormhole-abigen:latest . +) + +kubectl exec -c tests eth-devnet-0 -- npx truffle run abigen Wormhole + +kubectl exec -c tests eth-devnet-0 -- cat abigenBindings/abi/Wormhole.abi | \ + docker run --rm -i localhost/certusone/wormhole-abigen:latest /bin/abigen --abi - --pkg abi > \ + bridge/pkg/ethereum/abi/abi.go diff --git a/generate.sh b/generate-protos.sh similarity index 100% rename from generate.sh rename to generate-protos.sh diff --git a/third_party/abigen/Dockerfile b/third_party/abigen/Dockerfile new file mode 100644 index 000000000..cf8bb3506 --- /dev/null +++ b/third_party/abigen/Dockerfile @@ -0,0 +1,10 @@ +FROM golang:1.14.7-alpine + +RUN apk add curl git gcc libc-dev linux-headers + +WORKDIR /app + +ADD go.mod . +ADD go.sum . + +RUN go build -mod=readonly -o /bin/abigen github.com/ethereum/go-ethereum/cmd/abigen diff --git a/third_party/abigen/abigen.go b/third_party/abigen/abigen.go new file mode 100644 index 000000000..7da2f46c1 --- /dev/null +++ b/third_party/abigen/abigen.go @@ -0,0 +1,4 @@ +package main + +//noinspection ALL +import _ "github.com/ethereum/go-ethereum/cmd/abigen" diff --git a/third_party/abigen/go.mod b/third_party/abigen/go.mod new file mode 100644 index 000000000..92814ca6f --- /dev/null +++ b/third_party/abigen/go.mod @@ -0,0 +1,5 @@ +module github.com/certusone/wormhole/third_party/abigen + +go 1.15 + +require github.com/ethereum/go-ethereum v1.9.19 diff --git a/third_party/abigen/go.sum b/third_party/abigen/go.sum new file mode 100644 index 000000000..093459c0d --- /dev/null +++ b/third_party/abigen/go.sum @@ -0,0 +1,216 @@ +github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= +github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= +github.com/Azure/azure-storage-blob-go v0.7.0/go.mod h1:f9YQKtsG1nMisotuTPpO0tjNuEjKRYAcJU8/ydDI++4= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8= +github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/VictoriaMetrics/fastcache v1.5.7 h1:4y6y0G8PRzszQUYIQHHssv/jgPHAb5qQuuDNdCbyAgw= +github.com/VictoriaMetrics/fastcache v1.5.7/go.mod h1:ptDBkNMQI4RtmVo8VS/XwRY6RoTu1dAWCbrk+6WsEM8= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8= +github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= +github.com/aristanetworks/goarista v0.0.0-20170210015632-ea17b1a17847 h1:rtI0fD4oG/8eVokGVPYJEW1F88p1ZNgXiEIs9thEE4A= +github.com/aristanetworks/goarista v0.0.0-20170210015632-ea17b1a17847/go.mod h1:D/tb0zPVXnP7fmsLZjtdUhSsumbK/ij54UXjjVgMGxQ= +github.com/aws/aws-sdk-go v1.25.48/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/btcsuite/btcd v0.0.0-20171128150713-2e60448ffcc6 h1:Eey/GGQ/E5Xp1P2Lyx1qj007hLZfbi0+CoVeJruGCtI= +github.com/btcsuite/btcd v0.0.0-20171128150713-2e60448ffcc6/go.mod h1:Dmm/EzmjnCiweXmzRIAiUWCInVmPgjkzgv5k4tVyXiQ= +github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= +github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cloudflare/cloudflare-go v0.10.2-0.20190916151808-a80f83b9add9/go.mod h1:1MxXX1Ux4x6mqPmjkUgTP1CdXIBXKX7T+Jk9Gxrmx+U= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea h1:j4317fAZh7X6GqbFowYdYdI0L9bwxL07jyPZIdepyZ0= +github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf h1:sh8rkQZavChcmakYiSlqu2425CHyFXLZZnvm7PDpU8M= +github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/dop251/goja v0.0.0-20200219165308-d1232e640a87/go.mod h1:Mw6PkjjMXWbTj+nnj4s3QPXq1jaT0s5pC0iFD4+BOAA= +github.com/edsrzf/mmap-go v0.0.0-20160512033002-935e0e8a636c h1:JHHhtb9XWJrGNMcrVP6vyzO4dusgi/HnceHTgxSejUM= +github.com/edsrzf/mmap-go v0.0.0-20160512033002-935e0e8a636c/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/ethereum/go-ethereum v1.9.19 h1:c9IrhzqPKY+ZkS/YhXCO3rgNzlxsVrCYIRvrIAFmIWM= +github.com/ethereum/go-ethereum v1.9.19/go.mod h1:JSSTypSMTkGZtAdAChH2wP5dZEvPGh3nUTuDpH+hNrg= +github.com/fatih/color v1.3.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fjl/memsize v0.0.0-20180418122429-ca190fb6ffbc h1:jtW8jbpkO4YirRSyepBOH8E+2HEw6/hKkBvFPwhUN8c= +github.com/fjl/memsize v0.0.0-20180418122429-ca190fb6ffbc/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= +github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= +github.com/go-kit/kit v0.8.0 h1:Wz+5lgoB0kkuqLEc6NVmwRknTKP6dTGbSqvhZtBI/j0= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0 h1:8HUsc87TaSWLKwrnumgC8/YconD2fJQsRJAsWaPg2ic= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-ole/go-ole v1.2.1 h1:2lOsA72HgjxAuMlKpFiCbHTvu44PIVkZ5hqm3RSdI/E= +github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= +github.com/go-sourcemap/sourcemap v2.1.2+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= +github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2-0.20190517061210-b285ee9cfc6c h1:zqAKixg3cTcIasAMJV+EcfVbWwLpOZ7LeoWJvcuD/5Q= +github.com/golang/protobuf v1.3.2-0.20190517061210-b285ee9cfc6c/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.2-0.20200707131729-196ae77b8a26 h1:lMm2hD9Fy0ynom5+85/pbdkiYcBqM1JWmhpAXLmy0fw= +github.com/golang/snappy v0.0.2-0.20200707131729-196ae77b8a26/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/gorilla/websocket v1.4.1-0.20190629185528-ae1634f6a989 h1:giknQ4mEuDFmmHSrGcbargOuLHQGtywqo4mheITex54= +github.com/gorilla/websocket v1.4.1-0.20190629185528-ae1634f6a989/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/graph-gophers/graphql-go v0.0.0-20191115155744-f33e81362277 h1:E0whKxgp2ojts0FDgUA8dl62bmH0LxKanMoBr6MDTDM= +github.com/graph-gophers/graphql-go v0.0.0-20191115155744-f33e81362277/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= +github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/holiman/uint256 v1.1.1 h1:4JywC80b+/hSfljFlEBLHrrh+CIONLDz9NuFl0af4Mw= +github.com/holiman/uint256 v1.1.1/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huin/goupnp v1.0.0 h1:wg75sLpL6DZqwHQN6E1Cfk6mtfzS45z8OV+ic+DtHRo= +github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= +github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= +github.com/influxdata/influxdb v1.2.3-0.20180221223340-01288bdb0883 h1:FSeK4fZCo8u40n2JMnyAsd6x7+SbvoOMHvQOU/n10P4= +github.com/influxdata/influxdb v1.2.3-0.20180221223340-01288bdb0883/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= +github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458 h1:6OvNmYgJyexcZ3pYbTI9jWx5tHo1Dee/tWbLMfPe2TA= +github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/julienschmidt/httprouter v1.1.1-0.20170430222011-975b5c4c7c21 h1:F/iKcka0K2LgnKy/fgSBf235AETtm1n1TvBzqu40LE0= +github.com/julienschmidt/httprouter v1.1.1-0.20170430222011-975b5c4c7c21/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356 h1:I/yrLt2WilKxlQKCM52clh5rGzTKpVctGT1lH4Dc8Jw= +github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/mattn/go-colorable v0.1.0 h1:v2XXALHHh6zHfYTJ+cSkwtyffnaOyR1MXaA91mTrb8o= +github.com/mattn/go-colorable v0.1.0/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= +github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= +github.com/mattn/go-isatty v0.0.5-0.20180830101745-3fb116b82035 h1:USWjF42jDCSEeikX/G1g40ZWnsPXN5WkZ4jMHZWyBK4= +github.com/mattn/go-isatty v0.0.5-0.20180830101745-3fb116b82035/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= +github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.2-0.20190409134802-7e037d187b0c h1:1RHs3tNxjXGHeul8z2t6H2N2TlAqpKe5yryJztRx4Jk= +github.com/olekukonko/tablewriter v0.0.2-0.20190409134802-7e037d187b0c/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pborman/uuid v0.0.0-20170112150404-1b00554d8222 h1:goeTyGkArOZIVOMA0dQbyuPWGNQJZGPwPu/QS9GlpnA= +github.com/pborman/uuid v0.0.0-20170112150404-1b00554d8222/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34= +github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7 h1:oYW+YCJ1pachXTQmzR3rNLYGGz4g/UgFcjb28p/viDM= +github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/tsdb v0.6.2-0.20190402121629-4f204dcbc150 h1:ZeU+auZj1iNzN8iVhff6M38Mfu73FQiJve/GEXYJBjE= +github.com/prometheus/tsdb v0.6.2-0.20190402121629-4f204dcbc150/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rjeczalik/notify v0.9.1 h1:CLCKso/QK1snAlnhNR/CNvNiFU2saUtjV0bx3EwNeCE= +github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= +github.com/rs/cors v0.0.0-20160617231935-a62a804a8a00 h1:8DPul/X0IT/1TNMIxoKLwdemEOBBHDC/K4EB16Cw5WE= +github.com/rs/cors v0.0.0-20160617231935-a62a804a8a00/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rs/xhandler v0.0.0-20160618193221-ed27b6fd6521 h1:3hxavr+IHMsQBrYUPQM5v0CgENFktkkbg1sfpgM3h20= +github.com/rs/xhandler v0.0.0-20160618193221-ed27b6fd6521/go.mod h1:RvLn4FgxWubrpZHtQLnOf6EwhN2hEMusxZOhcW9H3UQ= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shirou/gopsutil v2.20.5+incompatible h1:tYH07UPoQt0OCQdgWWMgYHy3/a9bcxNpBIysykNIP7I= +github.com/shirou/gopsutil v2.20.5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4 h1:Gb2Tyox57NRNuZ2d3rmvB3pcmbu7O1RS3m8WRx7ilrg= +github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= +github.com/steakknife/bloomfilter v0.0.0-20180922174646-6819c0d2a570 h1:gIlAHnH1vJb5vwEjIp5kBj/eu99p/bl0Ay2goiPe5xE= +github.com/steakknife/bloomfilter v0.0.0-20180922174646-6819c0d2a570/go.mod h1:8OR4w3TdeIHIh1g6EMY5p0gVNOovcWC+1vpc7naMuAw= +github.com/steakknife/hamming v0.0.0-20180906055917-c99c65617cd3 h1:njlZPzLwU639dk2kqnCPPv+wNjq7Xb6EfUxe/oX0/NM= +github.com/steakknife/hamming v0.0.0-20180906055917-c99c65617cd3/go.mod h1:hpGUWaI9xL8pRQCTXQgocU38Qw1g0Us7n5PxxTwTCYU= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/syndtr/goleveldb v1.0.1-0.20190923125748-758128399b1d h1:gZZadD8H+fF+n9CmNhYL1Y0dJB+kLOmKd7FbPJLeGHs= +github.com/syndtr/goleveldb v1.0.1-0.20190923125748-758128399b1d/go.mod h1:9OrXJhf154huy1nPWmuSrkgjPUtUNhA+Zmy+6AESzuA= +github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef h1:wHSqTBrZW24CsNJDfeh9Ex6Pm0Rcpc7qrgKBiL44vF4= +github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208 h1:1cngl9mPEoITZG8s8cVcUy5CeIBYhEESkOB7m6Gmkrk= +github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208/go.mod h1:IotVbo4F+mw0EzQ08zFqg7pK3FebNXpaMsRy2RT+Ees= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20200625001655-4c5254603344 h1:vGXIOMxbNfDTk/aXCmfdLgkrSV+Z2tcbze+pEc3v5W4= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= +gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6 h1:a6cXbcDDUkSBlpnkWV1bJ+vv3mOgQEltEJ2rPxroVu0= +gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/urfave/cli.v1 v1.20.0 h1:NdAVW6RYxDif9DhDHaAortIu956m2c0v+09AZBPTbE0= +gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=