UNPKG

@wormhole-foundation/sdk-evm-tokenbridge

Version:

SDK for EVM chains, used in conjunction with @wormhole-foundation/sdk

1,218 lines 75.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Bridge__factory = void 0; /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ const ethers_1 = require("ethers"); const _abi = [ { anonymous: false, inputs: [ { indexed: false, internalType: 'address', name: 'previousAdmin', type: 'address', }, { indexed: false, internalType: 'address', name: 'newAdmin', type: 'address', }, ], name: 'AdminChanged', type: 'event', }, { anonymous: false, inputs: [ { indexed: true, internalType: 'address', name: 'beacon', type: 'address', }, ], name: 'BeaconUpgraded', type: 'event', }, { anonymous: false, inputs: [ { indexed: true, internalType: 'address', name: 'oldContract', type: 'address', }, { indexed: true, internalType: 'address', name: 'newContract', type: 'address', }, ], name: 'ContractUpgraded', type: 'event', }, { anonymous: false, inputs: [ { indexed: true, internalType: 'uint16', name: 'emitterChainId', type: 'uint16', }, { indexed: true, internalType: 'bytes32', name: 'emitterAddress', type: 'bytes32', }, { indexed: true, internalType: 'uint64', name: 'sequence', type: 'uint64', }, ], name: 'TransferRedeemed', type: 'event', }, { anonymous: false, inputs: [ { indexed: true, internalType: 'address', name: 'implementation', type: 'address', }, ], name: 'Upgraded', type: 'event', }, { inputs: [], name: 'WETH', outputs: [ { internalType: 'contract IWETH', name: '', type: 'address', }, ], stateMutability: 'view', type: 'function', }, { inputs: [ { internalType: 'bytes', name: 'encoded', type: 'bytes', }, ], name: '_parseTransferCommon', outputs: [ { components: [ { internalType: 'uint8', name: 'payloadID', type: 'uint8', }, { internalType: 'uint256', name: 'amount', type: 'uint256', }, { internalType: 'bytes32', name: 'tokenAddress', type: 'bytes32', }, { internalType: 'uint16', name: 'tokenChain', type: 'uint16', }, { internalType: 'bytes32', name: 'to', type: 'bytes32', }, { internalType: 'uint16', name: 'toChain', type: 'uint16', }, { internalType: 'uint256', name: 'fee', type: 'uint256', }, ], internalType: 'struct BridgeStructs.Transfer', name: 'transfer', type: 'tuple', }, ], stateMutability: 'pure', type: 'function', }, { inputs: [ { internalType: 'address', name: 'tokenAddress', type: 'address', }, { internalType: 'uint32', name: 'nonce', type: 'uint32', }, ], name: 'attestToken', outputs: [ { internalType: 'uint64', name: 'sequence', type: 'uint64', }, ], stateMutability: 'payable', type: 'function', }, { inputs: [ { internalType: 'uint16', name: 'chainId_', type: 'uint16', }, ], name: 'bridgeContracts', outputs: [ { internalType: 'bytes32', name: '', type: 'bytes32', }, ], stateMutability: 'view', type: 'function', }, { inputs: [], name: 'chainId', outputs: [ { internalType: 'uint16', name: '', type: 'uint16', }, ], stateMutability: 'view', type: 'function', }, { inputs: [ { internalType: 'bytes', name: 'encodedVm', type: 'bytes', }, ], name: 'completeTransfer', outputs: [], stateMutability: 'nonpayable', type: 'function', }, { inputs: [ { internalType: 'bytes', name: 'encodedVm', type: 'bytes', }, ], name: 'completeTransferAndUnwrapETH', outputs: [], stateMutability: 'nonpayable', type: 'function', }, { inputs: [ { internalType: 'bytes', name: 'encodedVm', type: 'bytes', }, ], name: 'completeTransferAndUnwrapETHWithPayload', outputs: [ { internalType: 'bytes', name: '', type: 'bytes', }, ], stateMutability: 'nonpayable', type: 'function', }, { inputs: [ { internalType: 'bytes', name: 'encodedVm', type: 'bytes', }, ], name: 'completeTransferWithPayload', outputs: [ { internalType: 'bytes', name: '', type: 'bytes', }, ], stateMutability: 'nonpayable', type: 'function', }, { inputs: [ { internalType: 'bytes', name: 'encodedVm', type: 'bytes', }, ], name: 'createWrapped', outputs: [ { internalType: 'address', name: 'token', type: 'address', }, ], stateMutability: 'nonpayable', type: 'function', }, { inputs: [ { components: [ { internalType: 'uint8', name: 'payloadID', type: 'uint8', }, { internalType: 'bytes32', name: 'tokenAddress', type: 'bytes32', }, { internalType: 'uint16', name: 'tokenChain', type: 'uint16', }, { internalType: 'uint8', name: 'decimals', type: 'uint8', }, { internalType: 'bytes32', name: 'symbol', type: 'bytes32', }, { internalType: 'bytes32', name: 'name', type: 'bytes32', }, ], internalType: 'struct BridgeStructs.AssetMeta', name: 'meta', type: 'tuple', }, ], name: 'encodeAssetMeta', outputs: [ { internalType: 'bytes', name: 'encoded', type: 'bytes', }, ], stateMutability: 'pure', type: 'function', }, { inputs: [ { components: [ { internalType: 'uint8', name: 'payloadID', type: 'uint8', }, { internalType: 'uint256', name: 'amount', type: 'uint256', }, { internalType: 'bytes32', name: 'tokenAddress', type: 'bytes32', }, { internalType: 'uint16', name: 'tokenChain', type: 'uint16', }, { internalType: 'bytes32', name: 'to', type: 'bytes32', }, { internalType: 'uint16', name: 'toChain', type: 'uint16', }, { internalType: 'uint256', name: 'fee', type: 'uint256', }, ], internalType: 'struct BridgeStructs.Transfer', name: 'transfer', type: 'tuple', }, ], name: 'encodeTransfer', outputs: [ { internalType: 'bytes', name: 'encoded', type: 'bytes', }, ], stateMutability: 'pure', type: 'function', }, { inputs: [ { components: [ { internalType: 'uint8', name: 'payloadID', type: 'uint8', }, { internalType: 'uint256', name: 'amount', type: 'uint256', }, { internalType: 'bytes32', name: 'tokenAddress', type: 'bytes32', }, { internalType: 'uint16', name: 'tokenChain', type: 'uint16', }, { internalType: 'bytes32', name: 'to', type: 'bytes32', }, { internalType: 'uint16', name: 'toChain', type: 'uint16', }, { internalType: 'bytes32', name: 'fromAddress', type: 'bytes32', }, { internalType: 'bytes', name: 'payload', type: 'bytes', }, ], internalType: 'struct BridgeStructs.TransferWithPayload', name: 'transfer', type: 'tuple', }, ], name: 'encodeTransferWithPayload', outputs: [ { internalType: 'bytes', name: 'encoded', type: 'bytes', }, ], stateMutability: 'pure', type: 'function', }, { inputs: [], name: 'evmChainId', outputs: [ { internalType: 'uint256', name: '', type: 'uint256', }, ], stateMutability: 'view', type: 'function', }, { inputs: [], name: 'finality', outputs: [ { internalType: 'uint8', name: '', type: 'uint8', }, ], stateMutability: 'view', type: 'function', }, { inputs: [ { internalType: 'bytes32', name: 'hash', type: 'bytes32', }, ], name: 'governanceActionIsConsumed', outputs: [ { internalType: 'bool', name: '', type: 'bool', }, ], stateMutability: 'view', type: 'function', }, { inputs: [], name: 'governanceChainId', outputs: [ { internalType: 'uint16', name: '', type: 'uint16', }, ], stateMutability: 'view', type: 'function', }, { inputs: [], name: 'governanceContract', outputs: [ { internalType: 'bytes32', name: '', type: 'bytes32', }, ], stateMutability: 'view', type: 'function', }, { inputs: [], name: 'isFork', outputs: [ { internalType: 'bool', name: '', type: 'bool', }, ], stateMutability: 'view', type: 'function', }, { inputs: [ { internalType: 'address', name: 'impl', type: 'address', }, ], name: 'isInitialized', outputs: [ { internalType: 'bool', name: '', type: 'bool', }, ], stateMutability: 'view', type: 'function', }, { inputs: [ { internalType: 'bytes32', name: 'hash', type: 'bytes32', }, ], name: 'isTransferCompleted', outputs: [ { internalType: 'bool', name: '', type: 'bool', }, ], stateMutability: 'view', type: 'function', }, { inputs: [ { internalType: 'address', name: 'token', type: 'address', }, ], name: 'isWrappedAsset', outputs: [ { internalType: 'bool', name: '', type: 'bool', }, ], stateMutability: 'view', type: 'function', }, { inputs: [ { internalType: 'address', name: 'token', type: 'address', }, ], name: 'outstandingBridged', outputs: [ { internalType: 'uint256', name: '', type: 'uint256', }, ], stateMutability: 'view', type: 'function', }, { inputs: [ { internalType: 'bytes', name: 'encoded', type: 'bytes', }, ], name: 'parseAssetMeta', outputs: [ { components: [ { internalType: 'uint8', name: 'payloadID', type: 'uint8', }, { internalType: 'bytes32', name: 'tokenAddress', type: 'bytes32', }, { internalType: 'uint16', name: 'tokenChain', type: 'uint16', }, { internalType: 'uint8', name: 'decimals', type: 'uint8', }, { internalType: 'bytes32', name: 'symbol', type: 'bytes32', }, { internalType: 'bytes32', name: 'name', type: 'bytes32', }, ], internalType: 'struct BridgeStructs.AssetMeta', name: 'meta', type: 'tuple', }, ], stateMutability: 'pure', type: 'function', }, { inputs: [ { internalType: 'bytes', name: 'encoded', type: 'bytes', }, ], name: 'parsePayloadID', outputs: [ { internalType: 'uint8', name: 'payloadID', type: 'uint8', }, ], stateMutability: 'pure', type: 'function', }, { inputs: [ { internalType: 'bytes', name: 'encodedRecoverChainId', type: 'bytes', }, ], name: 'parseRecoverChainId', outputs: [ { components: [ { internalType: 'bytes32', name: 'module', type: 'bytes32', }, { internalType: 'uint8', name: 'action', type: 'uint8', }, { internalType: 'uint256', name: 'evmChainId', type: 'uint256', }, { internalType: 'uint16', name: 'newChainId', type: 'uint16', }, ], internalType: 'struct BridgeStructs.RecoverChainId', name: 'rci', type: 'tuple', }, ], stateMutability: 'pure', type: 'function', }, { inputs: [ { internalType: 'bytes', name: 'encoded', type: 'bytes', }, ], name: 'parseRegisterChain', outputs: [ { components: [ { internalType: 'bytes32', name: 'module', type: 'bytes32', }, { internalType: 'uint8', name: 'action', type: 'uint8', }, { internalType: 'uint16', name: 'chainId', type: 'uint16', }, { internalType: 'uint16', name: 'emitterChainID', type: 'uint16', }, { internalType: 'bytes32', name: 'emitterAddress', type: 'bytes32', }, ], internalType: 'struct BridgeStructs.RegisterChain', name: 'chain', type: 'tuple', }, ], stateMutability: 'pure', type: 'function', }, { inputs: [ { internalType: 'bytes', name: 'encoded', type: 'bytes', }, ], name: 'parseTransfer', outputs: [ { components: [ { internalType: 'uint8', name: 'payloadID', type: 'uint8', }, { internalType: 'uint256', name: 'amount', type: 'uint256', }, { internalType: 'bytes32', name: 'tokenAddress', type: 'bytes32', }, { internalType: 'uint16', name: 'tokenChain', type: 'uint16', }, { internalType: 'bytes32', name: 'to', type: 'bytes32', }, { internalType: 'uint16', name: 'toChain', type: 'uint16', }, { internalType: 'uint256', name: 'fee', type: 'uint256', }, ], internalType: 'struct BridgeStructs.Transfer', name: 'transfer', type: 'tuple', }, ], stateMutability: 'pure', type: 'function', }, { inputs: [ { internalType: 'bytes', name: 'encoded', type: 'bytes', }, ], name: 'parseTransferWithPayload', outputs: [ { components: [ { internalType: 'uint8', name: 'payloadID', type: 'uint8', }, { internalType: 'uint256', name: 'amount', type: 'uint256', }, { internalType: 'bytes32', name: 'tokenAddress', type: 'bytes32', }, { internalType: 'uint16', name: 'tokenChain', type: 'uint16', }, { internalType: 'bytes32', name: 'to', type: 'bytes32', }, { internalType: 'uint16', name: 'toChain', type: 'uint16', }, { internalType: 'bytes32', name: 'fromAddress', type: 'bytes32', }, { internalType: 'bytes', name: 'payload', type: 'bytes', }, ], internalType: 'struct BridgeStructs.TransferWithPayload', name: 'transfer', type: 'tuple', }, ], stateMutability: 'pure', type: 'function', }, { inputs: [ { internalType: 'bytes', name: 'encoded', type: 'bytes', }, ], name: 'parseUpgrade', outputs: [ { components: [ { internalType: 'bytes32', name: 'module', type: 'bytes32', }, { internalType: 'uint8', name: 'action', type: 'uint8', }, { internalType: 'uint16', name: 'chainId', type: 'uint16', }, { internalType: 'bytes32', name: 'newContract', type: 'bytes32', }, ], internalType: 'struct BridgeStructs.UpgradeContract', name: 'chain', type: 'tuple', }, ], stateMutability: 'pure', type: 'function', }, { inputs: [ { internalType: 'bytes', name: 'encodedVM', type: 'bytes', }, ], name: 'registerChain', outputs: [], stateMutability: 'nonpayable', type: 'function', }, { inputs: [ { internalType: 'bytes', name: 'encodedVM', type: 'bytes', }, ], name: 'submitRecoverChainId', outputs: [], stateMutability: 'nonpayable', type: 'function', }, { inputs: [], name: 'tokenImplementation', outputs: [ { internalType: 'address', name: '', type: 'address', }, ], stateMutability: 'view', type: 'function', }, { inputs: [ { internalType: 'address', name: 'token', type: 'address', }, { internalType: 'uint256', name: 'amount', type: 'uint256', }, { internalType: 'uint16', name: 'recipientChain', type: 'uint16', }, { internalType: 'bytes32', name: 'recipient', type: 'bytes32', }, { internalType: 'uint256', name: 'arbiterFee', type: 'uint256', }, { internalType: 'uint32', name: 'nonce', type: 'uint32', }, ], name: 'transferTokens', outputs: [ { internalType: 'uint64', name: 'sequence', type: 'uint64', }, ], stateMutability: 'payable', type: 'function', }, { inputs: [ { internalType: 'address', name: 'token', type: 'address', }, { internalType: 'uint256', name: 'amount', type: 'uint256', }, { internalType: 'uint16', name: 'recipientChain', type: 'uint16', }, { internalType: 'bytes32', name: 'recipient', type: 'bytes32', }, { internalType: 'uint32', name: 'nonce', type: 'uint32', }, { internalType: 'bytes', name: 'payload', type: 'bytes', }, ], name: 'transferTokensWithPayload', outputs: [ { internalType: 'uint64', name: 'sequence', type: 'uint64', }, ], stateMutability: 'payable', type: 'function', }, { inputs: [ { internalType: 'bytes', name: 'encodedVm', type: 'bytes', }, ], name: 'updateWrapped', outputs: [ { internalType: 'address', name: 'token', type: 'address', }, ], stateMutability: 'nonpayable', type: 'function', }, { inputs: [ { internalType: 'bytes', name: 'encodedVM', type: 'bytes', }, ], name: 'upgrade', outputs: [], stateMutability: 'nonpayable', type: 'function', }, { inputs: [], name: 'wormhole', outputs: [ { internalType: 'contract IWormhole', name: '', type: 'address', }, ], stateMutability: 'view', type: 'function', }, { inputs: [ { internalType: 'uint16', name: 'recipientChain', type: 'uint16', }, { internalType: 'bytes32', name: 'recipient', type: 'bytes32', }, { internalType: 'uint256', name: 'arbiterFee', type: 'uint256', }, { internalType: 'uint32', name: 'nonce', type: 'uint32', }, ], name: 'wrapAndTransferETH', outputs: [ { internalType: 'uint64', name: 'sequence', type: 'uint64', }, ], stateMutability: 'payable', type: 'function', }, { inputs: [ { internalType: 'uint16', name: 'recipientChain', type: 'uint16', }, { internalType: 'bytes32', name: 'recipient', type: 'bytes32', }, { internalType: 'uint32', name: 'nonce', type: 'uint32', }, { internalType: 'bytes', name: 'payload', type: 'bytes', }, ], name: 'wrapAndTransferETHWithPayload', outputs: [ { internalType: 'uint64', name: 'sequence', type: 'uint64', }, ], stateMutability: 'payable', type: 'function', }, { inputs: [ { internalType: 'uint16', name: 'tokenChainId', type: 'uint16', }, { internalType: 'bytes32', name: 'tokenAddress', type: 'bytes32', }, ], name: 'wrappedAsset', outputs: [ { internalType: 'address', name: '', type: 'address', }, ], stateMutability: 'view', type: 'function', }, { stateMutability: 'payable', type: 'receive', }, ]; const _bytecode = '0x6080806040523461001b576001600d5561522990816100218239f35b600080fdfe608060405260043610156200001d575b36156200001b57600080fd5b005b60003560e01c806301f5325514620002fe57806307dfd8fb14620002f85780630f50900814620002f25780630f5287b014620002ec578063178149e714620002e65780631a2be4da14620002e05780631c8475e414620002da5780631ff1e28614620002d45780632539464514620002ce5780632b51137514620002c85780632c3c02a414620002c25780632f3a3d5d14620002bc5780635f85426614620002b657806364d42b1714620002b0578063739fc8d114620002aa57806384acd1bb14620002a45780639981509f146200029e5780639a8a05921462000298578063a5799f931462000292578063aa4efa5b146200028c578063ad5c46481462000286578063ad66a5f11462000280578063b046223b146200027a578063b172b2221462000274578063b96c7e4d146200026e578063bee9cdfc1462000268578063c3f511c11462000262578063c48fa115146200025c578063c5a5ebda1462000256578063c68785191462000250578063cb4cfea8146200024a578063d56e2e241462000244578063d60b347f146200023e578063e039f2241462000238578063e80598101462000232578063e89bc401146200022c578063ea63738d1462000226578063f768441f1462000220578063fbe3c2cd146200021a578063fbeeacd914620002145763ff200cde036200000f5762001a10565b620019c5565b6200199e565b62001903565b6200186e565b6200184f565b6200174c565b62001729565b620016e6565b62001616565b620015cb565b620015b6565b6200150d565b62001305565b620012e6565b620010ae565b62001070565b62001050565b62000fd3565b62000fa4565b62000f79565b62000f49565b62000e2b565b62000e07565b62000bb6565b62000b8b565b62000b66565b62000b46565b62000ab8565b62000a74565b62000a2e565b620009b7565b620008e2565b6200088f565b6200085b565b620007b9565b620006df565b62000632565b620005bb565b62000559565b62000502565b634e487b7160e01b600052604160045260246000fd5b60e081019081106001600160401b038211176200033657604052565b62000304565b60c081019081106001600160401b038211176200033657604052565b6001600160401b0381116200033657604052565b608081019081106001600160401b038211176200033657604052565b60a081019081106001600160401b038211176200033657604052565b604081019081106001600160401b038211176200033657604052565b90601f801991011681019081106001600160401b038211176200033657604052565b60405190620003f1826200033c565b565b6040519061010082018281106001600160401b038211176200033657604052565b60405190620003f18262000388565b60405190620003f1826200031a565b6040519061016082018281106001600160401b038211176200033657604052565b90620003f16040519283620003c0565b6001600160401b0381116200033657601f01601f191660200190565b81601f82011215620004cc57803590620004998262000463565b92620004a96040519485620003c0565b82845260208383010111620004cc57816000926020809301838601378301015290565b600080fd5b6020600319820112620004cc57600435906001600160401b038211620004cc57620004ff916004016200047f565b90565b34620004cc5760a06200051f6200051936620004d1565b62004421565b6080604051918051835260ff602082015116602084015261ffff806040830151166040850152606082015116606084015201516080820152f35b34620004cc5760c0620005766200057036620004d1565b62003a18565b60a06040519160ff81511683526020810151602084015261ffff604082015116604084015260ff606082015116606084015260808101516080840152015160a0820152f35b34620004cc576020620005d8620005d236620004d1565b620047a1565b60ff60405191168152f35b600435906001600160a01b0382168203620004cc57565b61ffff811603620004cc57565b60a43590620003f182620005fa565b3590620003f182620005fa565b63ffffffff811603620004cc57565b60c0366003190112620004cc57620006db620006bc62000651620005e3565b6044356200065f81620005fa565b6200069660a43592620006728462000623565b620006836002600d54141562001cbd565b6002600d5560843590602435906200208d565b61ffff815116602082015192604083015160806060850151940151946064359362002421565b6001600d556040516001600160401b0390911681529081906020820190565b0390f35b34620004cc57620006f036620004d1565b600c54461462000787576200077560606200074f60e062000723620007196200001b966200410f565b909291926200276b565b6200074761014082015160005260056020526040600020600160ff19825416179055565b015162004591565b6200076c60408201620007654682511462003fa3565b5162004645565b015161ffff1690565b61ffff1661ffff196002541617600255565b60405162461bcd60e51b815260206004820152600a6024820152696e6f74206120666f726b60b01b6044820152606490fd5b34620004cc576020366003190112620004cc576001600160a01b03620007de620005e3565b166000526009602052602060ff604060002054166040519015158152f35b60005b838110620008105750506000910152565b8181015183820152602001620007ff565b906020916200083c81518092818552858086019101620007fc565b601f01601f1916010190565b906020620004ff92818152019062000821565b34620004cc57620006db6200087a6200087436620004d1565b62002e3d565b60405191829160208352602083019062000821565b34620004cc576040366003190112620004cc5761ffff600435620008b381620005fa565b1660005260086020526040600020602435600052602052602060018060a01b0360406000205416604051908152f35b34620004cc576200094260e062000916620007196200090136620004d1565b62000910600c544614620037ea565b6200410f565b6200093a61014082015160005260056020526040600020600160ff19825416179055565b01516200451f565b61ffff806040830151169060025416036200098157606001516200001b906200097b906001600160a01b03165b6001600160a01b031690565b62004236565b60405162461bcd60e51b815260206004820152600e60248201526d1ddc9bdb99c818da185a5b881a5960921b6044820152606490fd5b34620004cc57620006db620009d6620009d036620004d1565b62003b94565b6040519182918291909160c08060e083019460ff8151168452602081015160208501526040810151604085015261ffff8060608301511660608601526080820151608086015260a08201511660a08501520151910152565b34620004cc576020366003190112620004cc57602062000a5e600435600052600560205260ff6040600020541690565b6040519015158152f35b6000910312620004cc57565b34620004cc576000366003190112620004cc576001546040516001600160a01b039091168152602090f35b60ff811603620004cc57565b3590620003f18262000a9f565b34620004cc5760e0366003190112620004cc57620006db62000b3960405162000ae1816200031a565b60043562000aef8162000a9f565b81526024356020820152604435604082015260643562000b0f81620005fa565b6060820152608435608082015262000b2662000607565b60a082015260c43560c0820152620038c9565b6040519182918262000848565b34620004cc576000366003190112620004cc576020600c54604051908152f35b34620004cc576000366003190112620004cc57602060025460ff60405191831c168152f35b34620004cc576000366003190112620004cc576000546040516001600160a01b039091168152602090f35b6080366003190112620004cc576004803562000bd281620005fa565b604435916064359062000be58262000623565b62000bef62001b7d565b50600080546001600160a01b0394839160209062000c0f9088166200096f565b604051631a90a21960e01b815295869182905afa93841562000d9b57839462000dd0575b5062000c4134851062001bc9565b62000c4d843462001c4d565b9662000c5c8882111562001c5b565b6402540be40080890491049362000c7e62000c77836200238f565b8a62001c4d565b818115801562000da5575b5050845462000cb0919062000ca9908b166001600160a01b03166200096f565b9a62001c4d565b98803b1562000da15784604051809b8193630d0e30db60e41b83525af196871562000d9b5760209862000d6c9862000d7d575b50835462000d0990839062000d039084166001600160a01b03166200096f565b620036f6565b62000d306200096f6200096f6200096f61ffff94856002541698541660018060a01b031690565b9062000d4962000d3f62000414565b61ffff9096168652565b818a86015282604086015285606086015286608086015260243594511662002421565b6001600160401b0360405191168152f35b8062000d8d62000d949262000358565b8062000a68565b3862000ce3565b62001b71565b5080fd5b82829162000dc5575b8280929181923390f11562000d9b57813862000c89565b6108fc915062000dae565b62000df791945060203d811162000dff575b62000dee8183620003c0565b81019062001bb9565b923862000c33565b503d62000de2565b34620004cc576000366003190112620004cc57602061ffff60025416604051908152f35b34620004cc576200001b62000e7a60e062000e4e620007196200091036620004d1565b62000e7261014082015160005260056020526040600020600160ff19825416179055565b015162004421565b62000ec662000e8e604083015161ffff1690565b61ffff62000eaa62000ea360025461ffff1690565b61ffff1690565b9116908114908162000f2b575b811562000f21575b5062003f16565b608062000f096060830162000f0162000efa62000ee5835161ffff1690565b61ffff16600052600b60205260406000205490565b1562003f56565b5161ffff1690565b9101519061ffff16600052600b602052604060002055565b9050153862000ebf565b905062000f4262000f3e600c5446141590565b1590565b9062000eb7565b34620004cc576020366003190112620004cc57602062000a5e600435600052600660205260ff6040600020541690565b34620004cc576000366003190112620004cc576004546040516001600160a01b039091168152602090f35b34620004cc576020366003190112620004cc57602062000fcb60043562000ee581620005fa565b604051908152f35b34620004cc5760c0366003190112620004cc57620006db62000b3960405162000ffc816200033c565b6004356200100a8162000a9f565b815260243560208201526044356200102281620005fa565b6040820152606435620010358162000a9f565b6060820152608435608082015260a43560a082015262003860565b34620004cc576000366003190112620004cc576020600354604051908152f35b34620004cc576020366003190112620004cc576001600160a01b0362001095620005e3565b16600052600a6020526020604060002054604051908152f35b6080366003190112620004cc576004803590620010cb82620005fa565b604435620010d98162000623565b6064356001600160401b038111620004cc57620010fa90369084016200047f565b906200110562001b7d565b506000805490946001600160a01b039491829190602090620011299088166200096f565b604051631a90a21960e01b815294859182905afa92831562000d9b578793620012c1575b506200115b34841062001bc9565b62001167833462001c4d565b966402540be4008804906200118062000c77836200238f565b818115801562001296575b50508454620011ab919062000ca9908b166001600160a01b03166200096f565b98803b1562000da157819085604051809c8193630d0e30db60e41b83525af197881562000d9b57620006db9962001265996200127f575b5084546200120290849062000d039084166001600160a01b03166200096f565b620012296200096f6200096f6200096f61ffff94856002541699541660018060a01b031690565b91620012426200123862000414565b61ffff9097168752565b8260208701528360408701526060860152856080860152602435945116620024fd565b6040516001600160401b0390911681529081906020820190565b8062000d8d6200128f9262000358565b38620011e2565b828291620012b6575b8280929181923390f11562000d9b5781386200118b565b6108fc91506200129f565b620012de91935060203d811162000dff5762000dee8183620003c0565b91386200114d565b34620004cc57620006db6200087a620012ff36620004d1565b62003263565b604080600319360112620004cc576200131d620005e3565b602435916200132c8362000623565b805192602080938186019563313ce56760e01b8752600481526200135081620003a4565b6000809781925190845afa506200136662001a49565b86808651858101906395d89b4160e01b8252600481526200138781620003a4565b5190855afa5060ff6200147d6200096f6200146c88620013a662001a49565b958c8083518b8101906306fdde0360e01b825260048152620013c881620003a4565b51908b5afa5088806200141662001406620013f6620013e662001a49565b9584808251830101910162001a8b565b9a83808251830101910162001aed565b9382808251830101910162001aed565b920151910151906200145c600254986200145262001433620003e2565b60028152956001600160a01b039c8d16878f015261ffff8c1690870152565b60ff166060850152565b608083015260a082015262003860565b8a549095166001600160a01b031690565b91620014a38751968795869485946358cd21bf60e11b8652891c16916004850162001b42565b039134905af192831562000d9b57620006db9493620014d7575b5050516001600160401b0390911681529081906020820190565b620014fc929350803d1062001505575b620014f38183620003c0565b81019062001b2b565b903880620014bd565b503d620014e7565b60c0366003190112620004cc5762001524620005e3565b604435906200153382620005fa565b60843590620015428262000623565b60a435916001600160401b038311620004cc57620006db936200159362001572620006bc9536906004016200047f565b93620015846002600d54141562001cbd565b6002600d556024359062001d2f565b9061ffff82511690602083015192608060408201519101519360643593620024fd565b34620004cc576200001b620012ff36620004d1565b34620004cc576080620015e8620015e236620004d1565b62004591565b61ffff6060604051928051845260ff6020820151166020850152604081015160408501520151166060820152f35b34620004cc57600319602036820112620004cc576004356001600160401b0391828211620004cc57610100908236030112620004cc5762001656620003f3565b620016648260040162000aab565b81526024820135602082015260448201356040820152620016886064830162000616565b606082015260848201356080820152620016a560a4830162000616565b60a082015260c482013560c082015260e4820135928311620004cc57620016db62000b39926004620006db95369201016200047f565b60e08201526200393f565b34620004cc576020366003190112620004cc576001600160a01b036200170b620005e3565b166000526007602052602060ff604060002054166040519015158152f35b34620004cc576000366003190112620004cc576020600c54604051904614158152f35b34620004cc57620017916200176136620004d1565b6000805460405163607ec5ef60e11b8152939192839285926001600160a01b031691839182916004830162000848565b03915afa90811562000d9b57620006db9262001801928291839084926200181b575b50620017c19293506200276b565b620017d6620017d08262003826565b6200279e565b620017fa60a0620017eb60e084015162003a18565b9201516001600160401b031690565b9062002a65565b6040516001600160a01b0390911681529081906020820190565b915050620018439150620017c1923d8091833e6200183a8183620003c0565b81019062002632565b909291928392620017b3565b34620004cc57620006db620009d66200186836620004d1565b62003d2e565b34620004cc5760e06200188b6200188536620004d1565b62003c3f565b620006db6040519283926020845260ff8151166020850152602081015160408501526040810151606085015261ffff6060820151166080850152608081015160a0850152620018e560a082015160c086019061ffff169052565b60c08101518285015201516101008084015261012083019062000821565b34620004cc57620019186200176136620004d1565b03915afa90811562000d9b57620006db92620018019282918390849262001973575b50620019489293506200276b565b62001957620017d08262003826565b6200196c60a0620017eb60e084015162003a18565b9062002813565b91505062001992915062001948923d8091833e6200183a8183620003c0565b9092919283926200193a565b34620004cc576000366003190112620004cc57602061ffff60025460101c16604051908152f35b34620004cc576080620019e2620019dc36620004d1565b6200451f565b6060604051918051835260ff602082015116602084015261ffff604082015116604084015201516060820152f35b34620004cc576200001b6200087436620004d1565b60405190602082018281106001600160401b03821117620003365760405260008252565b3d1562001a79573d9062001a5d8262000463565b9162001a6d6040519384620003c0565b82523d6000602084013e565b606090565b5190620003f18262000a9f565b90816020910312620004cc5751620004ff8162000a9f565b81601f82011215620004cc57805162001abc8162000463565b9262001acc6040519485620003c0565b81845260208284010111620004cc57620004ff9160208085019101620007fc565b90602082820312620004cc5781516001600160401b038111620004cc57620004ff920162001aa3565b51906001600160401b0382168203620004cc57565b90816020910312620004cc57620004ff9062001b16565b9162001b6a60ff9163ffffffff60409497969716855260606020860152606085019062000821565b9416910152565b6040513d6000823e3d90fd5b6040519060a082018281106001600160401b03821117620003365760405260006080838281528260208201528260408201528260608201520152565b90816020910312620004cc575190565b1562001bd157565b60405162461bcd60e51b815260206004820152602260248201527f76616c756520697320736d616c6c6572207468616e20776f726d686f6c652066604482015261656560f01b6064820152608490fd5b634e487b7160e01b600052601160045260246000fd5b60841981019190821162001c4757565b62001c21565b9190820391821162001c4757565b1562001c6357565b60405162461bcd60e51b815260206004820152602c60248201527f66656520697320626967676572207468616e20616d6f756e74206d696e75732060448201526b776f726d686f6c652066656560a01b6064820152608490fd5b1562001cc557565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b5190620003f182620005fa565b90816020910312620004cc5751620004ff81620005fa565b9062001d3a62001b7d565b506001600160a01b038216600090815260096020526040902062001d60905b5460ff1690565b156200206f57604051634d4502c960e11b81526001600160a01b0383169260209290918381600481885afa90811562000d9b5760049185916000916200203b575b509560405192838092633d6c043b60e01b82525afa90811562000d9b5762001e289460009262002019575b5050905b62001e2e604051916000806020948581019063313ce56760e01b82526004815262001dfb81620003a4565b5190885afa5062001e1e62001e0f62001a49565b84808251830101910162001a8b565b958680926200234d565b620023aa565b9261ffff9462001e43866002541661ffff1690565b87871690810362001f935762001f5362001f3e8362001f388660008062001f479c8b62001f0f60405162001eed8382019486806370a0823160e01b978881528562001ea03060248301919091602081019260018060a01b03169052565b039562001eb6601f1997888101835282620003c0565b51908c5afa5062001ed962001eca62001a49565b86808251830101910162001bb9565b98309033906001600160a01b031662004942565b60405192830193845230602484015282604481015b03908101835282620003c0565b51908b5afa5062001f3262001f2362001a49565b8a808251830101910162001bb9565b62001c4d565b6200234d565b96879362002308565b976002541661ffff1690565b1462001f80575b505062001f6a62000d3f62000414565b8401526040830152606082015234608082015290565b62001f8b91620036f6565b388362001f5a565b6001600160a01b0383169562001fac8130338a62004942565b863b15620004cc57604051632770a7eb60e21b815230600482015260248101829052966000908890604490829084905af196871562000d9b578362001f539262001f3e9262001f479a62002002575b506200234d565b8062000d8d620020129262000358565b3862001ffb565b620020339250803d1062000dff5762000dee8183620003c0565b388062001dcc565b620020609150823d841162002067575b620020578183620003c0565b81019062001d17565b3862001da1565b503d6200204b565b60025461ffff169162001e28916001600160a01b0382169062001dd0565b91906200209962001b7d565b506001600160a01b0383166000908152600960205260409020620020bd9062001d59565b15620022c457604051634d4502c960e11b81526001600160a01b0384169360209290918381600481895afa90811562000d9b576004918591600091620022a2575b509660405192838092633d6c043b60e01b82525afa90811562000d9b5762001e289460009262002280575b5050915b6200217b604051926000806020958681019063313ce56760e01b8252600481526200215881620003a4565b5190865afa5062001e1e6200216c62001a49565b85808251830101910162001a8b565b60025461ffff969188881691879085908a16840362002210576040516370a0823160e01b81890181815230602484015262001f539562001f47956200220795909462001f389491936000938493928f92620021e49262001eed9187908190856044810162001ea0565b51908c5afa5062001f32620021f862001a49565b8b808251830101910162001bb9565b9788946200234d565b50506001600160a01b038416906200222b8130338562004942565b813b15620004cc57604051632770a7eb60e21b815230600482015260248101829052916000908390604490829084905af191821562000d9b578862001f47926200220792