0 txs
2.6k calls
constructor
constructor()
functions
circulatingSupply
viewfunction circulatingSupply() view returns (uint256)
DEFAULT_PAYLOAD_SIZE_LIMIT
viewfunction DEFAULT_PAYLOAD_SIZE_LIMIT() view returns (uint256)
estimateSendAndCallFee
viewfunction estimateSendAndCallFee(uint16 _dstChainId, bytes _toAddress, uint256 _amount, bytes _payload, uint64 _dstGasForCall, bool _useZro, bytes _adapterParams) view returns (uint256 nativeFee, uint256 zroFee)
estimateSendFee
viewfunction estimateSendFee(uint16 _dstChainId, bytes _toAddress, uint256 _amount, bool _useZro, bytes _adapterParams) view returns (uint256 nativeFee, uint256 zroFee)
estimateSendFee
viewfunction estimateSendFee(uint16 dstChainId_, address to_, uint256 amount_) view returns (uint256 _nativeFee)
failedMessages
viewfunction failedMessages(uint16, bytes, uint64) view returns (bytes32)
failedOFTReceivedMessages
viewfunction failedOFTReceivedMessages(uint16, bytes, uint64) view returns (bytes32)
getConfig
viewfunction getConfig(uint16 _version, uint16 _chainId, address, uint256 _configType) view returns (bytes)
getProxyOFTOf
viewfunction getProxyOFTOf(uint16 chainId_) view returns (address _proxyOFT)
getTrustedRemoteAddress
viewfunction getTrustedRemoteAddress(uint16 _remoteChainId) view returns (bytes)
isTrustedRemote
viewfunction isTrustedRemote(uint16 _srcChainId, bytes _srcAddress) view returns (bool)
lzEndpoint
viewfunction lzEndpoint() view returns (address)
minDstGasLookup
viewfunction minDstGasLookup(uint16, uint16) view returns (uint256)
NO_EXTRA_GAS
viewfunction NO_EXTRA_GAS() view returns (uint256)
owner
viewfunction owner() view returns (address)
payloadSizeLimitLookup
viewfunction payloadSizeLimitLookup(uint16) view returns (uint256)
precrime
viewfunction precrime() view returns (address)
PT_SEND_AND_CALL
viewfunction PT_SEND_AND_CALL() view returns (uint16)
PT_SEND
viewfunction PT_SEND() view returns (uint16)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
token
viewfunction token() view returns (address)
trustedRemoteLookup
viewfunction trustedRemoteLookup(uint16) view returns (bytes)
useCustomAdapterParams
viewfunction useCustomAdapterParams() view returns (bool)
VERSION
viewfunction VERSION() view returns (string)
forceResumeReceive
nonpayablefunction forceResumeReceive(uint16 _srcChainId, bytes _srcAddress)
initialize
nonpayablefunction initialize(address lzEndpoint_, address syntheticToken_)
lzReceive
nonpayablefunction lzReceive(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload)
nonblockingLzReceive
nonpayablefunction nonblockingLzReceive(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload)
renounceOwnership
nonpayablefunction renounceOwnership()
retryMessage
payablefunction retryMessage(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload) payable
retryOFTReceived
nonpayablefunction retryOFTReceived(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _from, address _to, uint256 _amount, bytes _payload)
sendAndCall
payablefunction sendAndCall(address from_, uint16 dstChainId_, bytes toAddress_, uint256 amount_, bytes payload_, uint64 dstGasForCall_, address refundAddress_, address zroPaymentAddress_, bytes adapterParams_) payable
sendFrom
payablefunction sendFrom(address _from, uint16 _dstChainId, bytes _toAddress, uint256 _amount, address _refundAddress, address _zroPaymentAddress, bytes _adapterParams) payable
sendFrom
payablefunction sendFrom(address from_, uint16 dstChainId_, address to_, uint256 amount_) payable
setConfig
nonpayablefunction setConfig(uint16 _version, uint16 _chainId, uint256 _configType, bytes _config)
setMinDstGas
nonpayablefunction setMinDstGas(uint16 _dstChainId, uint16 _packetType, uint256 _minGas)
setPayloadSizeLimit
nonpayablefunction setPayloadSizeLimit(uint16 _dstChainId, uint256 _size)
setPrecrime
nonpayablefunction setPrecrime(address _precrime)
setReceiveVersion
nonpayablefunction setReceiveVersion(uint16 _version)
setSendVersion
nonpayablefunction setSendVersion(uint16 _version)
setTrustedRemote
nonpayablefunction setTrustedRemote(uint16 _srcChainId, bytes _path)
setTrustedRemoteAddress
nonpayablefunction setTrustedRemoteAddress(uint16 _remoteChainId, bytes _remoteAddress)
setUseCustomAdapterParams
nonpayablefunction setUseCustomAdapterParams(bool _useCustomAdapterParams)
transferOwnership
nonpayablefunction transferOwnership(address)
events
CallOFTReceivedFailure
event CallOFTReceivedFailure(uint16 indexed _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _from, address indexed _to, uint256 _amount, bytes _payload, bytes _reason)
CallOFTReceivedSuccess
event CallOFTReceivedSuccess(uint16 indexed _srcChainId, bytes _srcAddress, uint64 _nonce, bytes32 _hash)
Initialized
event Initialized(uint8 version)
MessageFailed
event MessageFailed(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload, bytes _reason)
NonContractAddress
event NonContractAddress(address _address)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ReceiveFromChain
event ReceiveFromChain(uint16 indexed _srcChainId, address indexed _to, uint256 _amount)
RetryMessageSuccess
event RetryMessageSuccess(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes32 _payloadHash)
RetryOFTReceivedSuccess
event RetryOFTReceivedSuccess(bytes32 _messageHash)
SendToChain
event SendToChain(uint16 indexed _dstChainId, address indexed _from, bytes _toAddress, uint256 _amount)
SetMinDstGas
event SetMinDstGas(uint16 _dstChainId, uint16 _type, uint256 _minDstGas)
SetPrecrime
event SetPrecrime(address precrime)
SetTrustedRemote
event SetTrustedRemote(uint16 _remoteChainId, bytes _path)
SetTrustedRemoteAddress
event SetTrustedRemoteAddress(uint16 _remoteChainId, bytes _remoteAddress)
SetUseCustomAdapterParams
event SetUseCustomAdapterParams(bool _useCustomAdapterParams)
errors
AddressIsNull
error AddressIsNull()
BridgingIsPaused
error BridgingIsPaused()
DestinationChainNotAllowed
error DestinationChainNotAllowed()
SenderIsNotCrossChainDispatcher
error SenderIsNotCrossChainDispatcher()
SenderIsNotTheOwner
error SenderIsNotTheOwner()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b62000152565b6200002e60ff62000031565b50565b60008054610100900460ff1615620000ca578160ff1660011480156200006a575062000068306200014360201b620023b31760201c565b155b620000c25760405162461bcd60e51b815260206004820152602e602482015260008051602062004a6483398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b506000919050565b60005460ff808416911610620001295760405162461bcd60e51b815260206004820152602e602482015260008051602062004a6483398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620000b9565b506000805460ff191660ff92909216919091179055600190565b6001600160a01b03163b151590565b61490280620001626000396000f3fe6080604052600436106102665760003560e01c8063950c8a7411610144578063df2a5b3b116100b6578063ed629c5c1161007a578063ed629c5c146107a1578063f2fde38b146107bb578063f5ecbdbc146107db578063fc0c546a146107fb578063ff0454e21461081a578063ffa1ad741461083a57600080fd5b8063df2a5b3b14610719578063e6a20ae614610739578063e7f0c59f1461074e578063eab45d9c14610761578063eb8d72b71461078157600080fd5b8063c223533a11610108578063c223533a14610670578063c446183414610690578063c8598dca146106a6578063cbed8b9c146106c6578063cfd6528e146106e6578063d1deba1f1461070657600080fd5b8063950c8a74146105d05780639f38369a146105f0578063a6c3d16514610610578063b353aaa714610630578063baf3292d1461065057600080fd5b80634c42899a116101dd57806366ad5c8a116101a157806366ad5c8a146104f4578063715018a6146105145780637533d788146105295780638cfd8f5c146105565780638da5cb5b1461058e5780639358928b146105bb57600080fd5b80634c42899a14610407578063519056361461042f5780635823f91b146104425780635b8c41e6146104555780636096cc58146104a457600080fd5b80632a205e3d1161022f5780632a205e3d146103225780633d8b38f6146103575780633f1f4fa41461037757806342d65a8d146103b257806344770515146103d2578063485cc955146103e757600080fd5b80621d35671461026b57806301ffc9a71461028d57806307e0db17146102c25780630df37483146102e257806310ddb13714610302575b600080fd5b34801561027757600080fd5b5061028b610286366004613693565b61086b565b005b34801561029957600080fd5b506102ad6102a8366004613729565b610a87565b60405190151581526020015b60405180910390f35b3480156102ce57600080fd5b5061028b6102dd366004613753565b610ab2565b3480156102ee57600080fd5b5061028b6102fd366004613770565b610b46565b34801561030e57600080fd5b5061028b61031d366004613753565b610b8c565b34801561032e57600080fd5b5061034261033d3660046137b5565b610bef565b604080519283526020830191909152016102b9565b34801561036357600080fd5b506102ad610372366004613855565b610cb4565b34801561038357600080fd5b506103a4610392366004613753565b60686020526000908152604090205481565b6040519081526020016102b9565b3480156103be57600080fd5b5061028b6103cd366004613855565b610d80565b3480156103de57600080fd5b506103a4600081565b3480156103f357600080fd5b5061028b6104023660046138c9565b610e11565b34801561041357600080fd5b5061041c600081565b60405161ffff90911681526020016102b9565b61028b61043d366004613902565b610ef4565b61028b6104503660046139cb565b610f79565b34801561046157600080fd5b506103a4610470366004613a89565b6097602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b3480156104b057600080fd5b506103a46104bf366004613a89565b61012d602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b34801561050057600080fd5b5061028b61050f366004613693565b611145565b34801561052057600080fd5b5061028b611221565b34801561053557600080fd5b50610549610544366004613753565b611254565b6040516102b99190613b87565b34801561056257600080fd5b506103a4610571366004613b9a565b606760209081526000928352604080842090915290825290205481565b34801561059a57600080fd5b506105a36112ee565b6040516001600160a01b0390911681526020016102b9565b3480156105c757600080fd5b506103a46113e1565b3480156105dc57600080fd5b506069546105a3906001600160a01b031681565b3480156105fc57600080fd5b5061054961060b366004613753565b61145f565b34801561061c57600080fd5b5061028b61062b366004613855565b611576565b34801561063c57600080fd5b506065546105a3906001600160a01b031681565b34801561065c57600080fd5b5061028b61066b366004613bc8565b611623565b34801561067c57600080fd5b506103a461068b366004613be5565b6116a7565b34801561069c57600080fd5b506103a461271081565b3480156106b257600080fd5b506103426106c1366004613c26565b6118ec565b3480156106d257600080fd5b5061028b6106e1366004613d04565b6119ed565b3480156106f257600080fd5b5061028b610701366004613d76565b611a82565b61028b610714366004613693565b611cca565b34801561072557600080fd5b5061028b610734366004613e30565b611ee0565b34801561074557600080fd5b5061041c600181565b61028b61075c366004613e60565b611fb9565b34801561076d57600080fd5b5061028b61077c366004613f69565b612170565b34801561078d57600080fd5b5061028b61079c366004613855565b6121e0565b3480156107ad57600080fd5b5060fb546102ad9060ff1681565b3480156107c757600080fd5b5061028b6107d6366004613bc8565b611221565b3480156107e757600080fd5b506105496107f6366004613f86565b612261565b34801561080757600080fd5b5061015f546001600160a01b03166105a3565b34801561082657600080fd5b506105a3610835366004613753565b612303565b34801561084657600080fd5b50610549604051806040016040528060058152602001640312e332e360dc1b81525081565b6065546001600160a01b0316336001600160a01b0316146108d35760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff8616600090815260666020526040812080546108f190613fa7565b80601f016020809104026020016040519081016040528092919081815260200182805461091d90613fa7565b801561096a5780601f1061093f5761010080835404028352916020019161096a565b820191906000526020600020905b81548152906001019060200180831161094d57829003601f168201915b50505050509050805186869050148015610985575060008151115b80156109ad5750805160208201206040516109a39088908890613fe2565b6040518091039020145b610a085760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b60648201526084016108ca565b610a7e8787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152506123c292505050565b50505050505050565b60006001600160e01b0319821663e07f1adb60e01b1480610aac5750610aac8261243b565b92915050565b33610abb6112ee565b6001600160a01b031614610ae15760405162461bcd60e51b81526004016108ca90613ff2565b6065546040516307e0db1760e01b815261ffff831660048201526001600160a01b03909116906307e0db17906024015b600060405180830381600087803b158015610b2b57600080fd5b505af1158015610b3f573d6000803e3d6000fd5b5050505050565b33610b4f6112ee565b6001600160a01b031614610b755760405162461bcd60e51b81526004016108ca90613ff2565b61ffff909116600090815260686020526040902055565b33610b956112ee565b6001600160a01b031614610bbb5760405162461bcd60e51b81526004016108ca90613ff2565b6065546040516310ddb13760e01b815261ffff831660048201526001600160a01b03909116906310ddb13790602401610b11565b600080600080898989604051602001610c0b9493929190614050565b60408051601f198184030181529082905260655463040a7bb160e41b83529092506001600160a01b0316906340a7bb1090610c54908d90309086908c908c908c9060040161407f565b604080518083038186803b158015610c6b57600080fd5b505afa158015610c7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca391906140d5565b925092505097509795505050505050565b61ffff831660009081526066602052604081208054829190610cd590613fa7565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0190613fa7565b8015610d4e5780601f10610d2357610100808354040283529160200191610d4e565b820191906000526020600020905b815481529060010190602001808311610d3157829003601f168201915b505050505090508383604051610d65929190613fe2565b60405180910390208180519060200120149150509392505050565b33610d896112ee565b6001600160a01b031614610daf5760405162461bcd60e51b81526004016108ca90613ff2565b6065546040516342d65a8d60e01b81526001600160a01b03909116906342d65a8d90610de3908690869086906004016140f9565b600060405180830381600087803b158015610dfd57600080fd5b505af1158015610a7e573d6000803e3d6000fd5b6000610e1d6001612470565b90508015610e35576000805461ff0019166101001790555b6001600160a01b038216610e5c5760405163fb7566d760e01b815260040160405180910390fd5b6001600160a01b038316610e835760405163fb7566d760e01b815260040160405180910390fd5b610e8c836124fd565b61015f80546001600160a01b0319166001600160a01b0384161790558015610eef576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b610f6e898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528c93508b92508a918a908a908190840183828082843760009201919091525061253092505050565b505050505050505050565b61113f848484604051602001610f8f9190614117565b60405160208183030381529060405284886000600161015f60009054906101000a90046001600160a01b03166001600160a01b031663afcff50f6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ff357600080fd5b505afa158015611007573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102b9190614134565b6001600160a01b03166332c615b46040518163ffffffff1660e01b815260040160206040518083038186803b15801561106357600080fd5b505afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b9190614134565b6001600160a01b0316636c77d24f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110d357600080fd5b505afa1580156110e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110b9190614151565b60405160f09290921b6001600160f01b03191660208301526022820152604201604051602081830303815290604052612530565b50505050565b3330146111a35760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b60648201526084016108ca565b6112198686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8901819004810282018101909252878152899350915087908790819084018382808284376000920191909152506125d792505050565b505050505050565b60405162461bcd60e51b8152602060048201526008602482015267191a5cd8589b195960c21b60448201526064016108ca565b6066602052600090815260409020805461126d90613fa7565b80601f016020809104026020016040519081016040528092919081815260200182805461129990613fa7565b80156112e65780601f106112bb576101008083540402835291602001916112e6565b820191906000526020600020905b8154815290600101906020018083116112c957829003601f168201915b505050505081565b61015f546040805163afcff50f60e01b815290516000926001600160a01b03169163afcff50f916004808301926020929190829003018186803b15801561133457600080fd5b505afa158015611348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136c9190614134565b6001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b1580156113a457600080fd5b505afa1580156113b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113dc9190614134565b905090565b61015f54604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561142757600080fd5b505afa15801561143b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113dc9190614151565b61ffff811660009081526066602052604081208054606092919061148290613fa7565b80601f01602080910402602001604051908101604052809291908181526020018280546114ae90613fa7565b80156114fb5780601f106114d0576101008083540402835291602001916114fb565b820191906000526020600020905b8154815290600101906020018083116114de57829003601f168201915b505050505090508051600014156115545760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f726400000060448201526064016108ca565b61156f6000601483516115679190614180565b839190612666565b9392505050565b3361157f6112ee565b6001600160a01b0316146115a55760405162461bcd60e51b81526004016108ca90613ff2565b8181306040516020016115ba93929190614197565b60408051601f1981840301815291815261ffff851660009081526066602090815291902082516115ef93919290910190613503565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce838383604051610ee6939291906140f9565b3361162c6112ee565b6001600160a01b0316146116525760405162461bcd60e51b81526004016108ca90613ff2565b606980546001600160a01b0319166001600160a01b0383169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b906020015b60405180910390a150565b6000306001600160a01b0316632a205e3d85856040516020016116ca9190614117565b604051602081830303815290604052856000600161015f60009054906101000a90046001600160a01b03166001600160a01b031663afcff50f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561172d57600080fd5b505afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190614134565b6001600160a01b03166332c615b46040518163ffffffff1660e01b815260040160206040518083038186803b15801561179d57600080fd5b505afa1580156117b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d59190614134565b6001600160a01b0316636c77d24f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561180d57600080fd5b505afa158015611821573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118459190614151565b60405160f09290921b6001600160f01b031916602083015260228201526042016040516020818303038152906040526040518663ffffffff1660e01b81526004016118949594939291906141bd565b604080518083038186803b1580156118ab57600080fd5b505afa1580156118bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e391906140d5565b50949350505050565b60008060006001336040516020016119049190614117565b60408051601f198184030181529082905261192e92918f908f908f908f908f908f90602001614206565b6040516020818303038152906040529050606560009054906101000a90046001600160a01b03166001600160a01b03166340a7bb108e30848a8a8a6040518763ffffffff1660e01b815260040161198a9695949392919061407f565b604080518083038186803b1580156119a157600080fd5b505afa1580156119b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d991906140d5565b92509250509a509a98505050505050505050565b336119f66112ee565b6001600160a01b031614611a1c5760405162461bcd60e51b81526004016108ca90613ff2565b6065546040516332fb62e760e21b81526001600160a01b039091169063cbed8b9c90611a549088908890889088908890600401614270565b600060405180830381600087803b158015611a6e57600080fd5b505af1158015610f6e573d6000803e3d6000fd5b61ffff8a16600090815261012d60205260408082209051611aa6908c908c90613fe2565b90815260408051602092819003830190206001600160401b038b1660009081529252902054905080611b305760405162461bcd60e51b815260206004820152602d60248201527f436f6d706f7361626c654f4654436f72653a206e6f206661696c6564206d657360448201526c7361676520746f20726574727960981b60648201526084016108ca565b6000878787878787604051602001611b4d969594939291906142a9565b604051602081830303815290604052805190602001209050818114611bcc5760405162461bcd60e51b815260206004820152602f60248201527f436f6d706f7361626c654f4654436f72653a206661696c6564206d657373616760448201526e0ca40d0c2e6d040dad2e6dac2e8c6d608b1b60648201526084016108ca565b61ffff8c16600090815261012d6020526040908190209051611bf1908d908d90613fe2565b9081526040805191829003602090810183206001600160401b038d16600090815291529081205563147a7d7160e01b81526001600160a01b0387169063147a7d7190611c51908f908f908f908f908f908f908e908e908e906004016142e6565b600060405180830381600087803b158015611c6b57600080fd5b505af1158015611c7f573d6000803e3d6000fd5b505050507f41ea88d75e53240e2c5ace3a3d7263efe6c8f4fe42c0e3ef269f71daef1001c881604051611cb491815260200190565b60405180910390a1505050505050505050505050565b61ffff86166000908152609760205260408082209051611ced9088908890613fe2565b90815260408051602092819003830190206001600160401b03871660009081529252902054905080611d6d5760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b60648201526084016108ca565b808383604051611d7e929190613fe2565b604051809103902014611ddd5760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b60648201526084016108ca565b61ffff87166000908152609760205260408082209051611e009089908990613fe2565b90815260408051602092819003830181206001600160401b038916600090815290845282902093909355601f88018290048202830182019052868252611e98918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152506125d792505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e58787878785604051611ecf959493929190614351565b60405180910390a150505050505050565b33611ee96112ee565b6001600160a01b031614611f0f5760405162461bcd60e51b81526004016108ca90613ff2565b60008111611f575760405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b60448201526064016108ca565b61ffff83811660008181526067602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac090606001610ee6565b61015f60009054906101000a90046001600160a01b03166001600160a01b031663afcff50f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561200857600080fd5b505afa15801561201c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120409190614134565b6001600160a01b03166332c615b46040518163ffffffff1660e01b815260040160206040518083038186803b15801561207857600080fd5b505afa15801561208c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b09190614134565b6001600160a01b0316336001600160a01b0316146120e157604051632b78ce1b60e11b815260040160405180910390fd5b6121628c8c8c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528f93508e92508d918d918d918d91908d908d908190840183828082843760009201919091525061277392505050565b505050505050505050505050565b336121796112ee565b6001600160a01b03161461219f5760405162461bcd60e51b81526004016108ca90613ff2565b60fb805460ff19168215159081179091556040519081527f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a49060200161169c565b336121e96112ee565b6001600160a01b03161461220f5760405162461bcd60e51b81526004016108ca90613ff2565b61ffff8316600090815260666020526040902061222d908383613587565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab838383604051610ee6939291906140f9565b606554604051633d7b2f6f60e21b815261ffff808716600483015285166024820152306044820152606481018390526060916001600160a01b03169063f5ecbdbc9060840160006040518083038186803b1580156122be57600080fd5b505afa1580156122d2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122fa91908101906143d9565b95945050505050565b61ffff811660009081526066602052604081208054610aac91839161232790613fa7565b80601f016020809104026020016040519081016040528092919081815260200182805461235390613fa7565b80156123a05780601f10612375576101008083540402835291602001916123a0565b820191906000526020600020905b81548152906001019060200180831161238357829003601f168201915b505050505061284b90919063ffffffff16565b6001600160a01b03163b151590565b6000806124255a60966366ad5c8a60e01b898989896040516024016123ea949392919061440d565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152309291906128b0565b915091508161121957611219868686868561293a565b60006001600160e01b03198216630a72677560e11b1480610aac57506301ffc9a760e01b6001600160e01b0319831614610aac565b60008054610100900460ff16156124b7578160ff1660011480156124935750303b155b6124af5760405162461bcd60e51b81526004016108ca9061444b565b506000919050565b60005460ff8084169116106124de5760405162461bcd60e51b81526004016108ca9061444b565b506000805460ff191660ff92909216919091179055600190565b919050565b600054610100900460ff166125245760405162461bcd60e51b81526004016108ca90614499565b61252d816129d7565b50565b61253e866000836000612a0f565b600061254c88888888612a89565b90506000808783604051602001612565939291906144e4565b6040516020818303038152906040529050612584888287878734612d45565b886001600160a01b03168861ffff167f39a4c66499bcf4b56d79f0dde8ed7a9d4925a0df55825206b2b8531e202be0d089856040516125c4929190614511565b60405180910390a3505050505050505050565b602081015161ffff81166125f6576125f185858585612ec1565b610b3f565b61ffff81166001141561260f576125f185858585612f4b565b60405162461bcd60e51b815260206004820152602660248201527f436f6d706f7361626c654f4654436f72653a20756e6b6e6f776e207061636b6560448201526574207479706560d01b60648201526084016108ca565b60608161267481601f614533565b10156126b35760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016108ca565b6126bd8284614533565b845110156127015760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016108ca565b60608215801561272057604051915060008252602082016040526118e3565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612759578051835260209283019201612741565b5050858452601f01601f1916604052505090509392505050565b61278989600183876001600160401b0316612a0f565b60006127978b8b8b8b612a89565b905060006001336040516020016127ae9190614117565b60408051601f19818403018152908290526127d692918d9086908d908d908d9060200161454b565b60405160208183030381529060405290506127f58b8287878734612d45565b8b6001600160a01b03168b61ffff167f39a4c66499bcf4b56d79f0dde8ed7a9d4925a0df55825206b2b8531e202be0d08c85604051612835929190614511565b60405180910390a3505050505050505050505050565b6000612858826014614533565b835110156128a05760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b60448201526064016108ca565b500160200151600160601b900490565b6000606060008060008661ffff166001600160401b038111156128d5576128d5613a1c565b6040519080825280601f01601f1916602001820160405280156128ff576020820181803683370190505b50905060008087516020890160008d8df191503d925086831115612921578692505b828152826000602083013e909890975095505050505050565b8180519060200120609760008761ffff1661ffff1681526020019081526020016000208560405161296b91906145b3565b9081526040805191829003602090810183206001600160401b0388166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c906129c890879087908790879087906145cf565b60405180910390a15050505050565b600054610100900460ff166129fe5760405162461bcd60e51b81526004016108ca90614499565b612a0661305a565b61252d8161308c565b60fb5460ff1615612a2b57612a26848484846130d5565b61113f565b81511561113f5760405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b60648201526084016108ca565b60008061015f60009054906101000a90046001600160a01b03166001600160a01b031663afcff50f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612adb57600080fd5b505afa158015612aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b139190614134565b6001600160a01b03166332c615b46040518163ffffffff1660e01b815260040160206040518083038186803b158015612b4b57600080fd5b505afa158015612b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b839190614134565b9050336001600160a01b03871614612bae576040516311fbe4a960e01b815260040160405180910390fd5b806001600160a01b0316632b80cc526040518163ffffffff1660e01b815260040160206040518083038186803b158015612be757600080fd5b505afa158015612bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1f9190614621565b612c3c57604051635621fccf60e01b815260040160405180910390fd5b6040516338d266a960e21b815261ffff861660048201526001600160a01b0382169063e3499aa49060240160206040518083038186803b158015612c7f57600080fd5b505afa158015612c93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb79190614621565b612cd45760405163334dc1fd60e01b815260040160405180910390fd5b61015f54604051632770a7eb60e21b81526001600160a01b0388811660048301526024820186905290911690639dc29fac90604401600060405180830381600087803b158015612d2357600080fd5b505af1158015612d37573d6000803e3d6000fd5b509498975050505050505050565b61ffff861660009081526066602052604081208054612d6390613fa7565b80601f0160208091040260200160405190810160405280929190818152602001828054612d8f90613fa7565b8015612ddc5780601f10612db157610100808354040283529160200191612ddc565b820191906000526020600020905b815481529060010190602001808311612dbf57829003601f168201915b50505050509050805160001415612e4e5760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b60648201526084016108ca565b612e598787516131b4565b60655460405162c5803160e81b81526001600160a01b039091169063c5803100908490612e94908b9086908c908c908c908c9060040161463e565b6000604051808303818588803b158015612ead57600080fd5b505af1158015612162573d6000803e3d6000fd5b60008082806020019051810190612ed89190614698565b909350915060009050612eeb838261284b565b9050612ef8878284613222565b9150806001600160a01b03168761ffff167fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf84604051612f3a91815260200190565b60405180910390a350505050505050565b600080600080600085806020019051810190612f6791906146f1565b95509550955095509550506000612f8860008661284b90919063ffffffff16565b9050612f958a8286613222565b9350806001600160a01b03168a61ffff167fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf86604051612fd791815260200190565b60405180910390a36001600160a01b0381163b613035576040516001600160a01b03821681527f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9060200160405180910390a150505050505061113f565b61304e8a8a8a89858989896001600160401b0316613292565b50505050505050505050565b600054610100900460ff166130815760405162461bcd60e51b81526004016108ca90614499565b61308a33613455565b565b600054610100900460ff166130b35760405162461bcd60e51b81526004016108ca90614499565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b60006130e0836134a7565b61ffff808716600090815260676020908152604080832093891683529290529081205491925090613112908490614533565b9050600081116131645760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f742073657400000000000060448201526064016108ca565b808210156112195760405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f77000000000060448201526064016108ca565b61ffff8216600090815260686020526040902054806131d257506127105b80821115610eef5760405162461bcd60e51b815260206004820181905260248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c6172676560448201526064016108ca565b61015f546040516340c10f1960e01b81526001600160a01b0384811660048301526024820184905260009216906340c10f1990604401600060405180830381600087803b15801561327257600080fd5b505af1158015613286573d6000803e3d6000fd5b50939695505050505050565b60008061330283609663147a7d7160e01b8d8d8d8d8c8c6040516024016132be969594939291906147a9565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526001600160a01b038a169291906128b0565b91509150816133d757868686866040516020016133229493929190614801565b60408051601f19818403018152828252805160209182012061ffff8e16600090815261012d909252919020909161335a908c906145b3565b9081526040805191829003602090810183206001600160401b038d166000908152915220919091556001600160a01b0387169061ffff8c16907f95c1ad3ef50dd05e668d7b80e9a723079395ac4867a4050552d5d9219e683d74906133ca908d908d908d908c908c908a9061483c565b60405180910390a361304e565b6000878787876040516020016133f09493929190614801565b6040516020818303038152906040528051906020012090508a61ffff167fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd8848b8b846040516134409392919061489e565b60405180910390a25050505050505050505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006022825110156134fb5760405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d730000000060448201526064016108ca565b506022015190565b82805461350f90613fa7565b90600052602060002090601f0160209004810192826135315760008555613577565b82601f1061354a57805160ff1916838001178555613577565b82800160010185558215613577579182015b8281111561357757825182559160200191906001019061355c565b506135839291506135fb565b5090565b82805461359390613fa7565b90600052602060002090601f0160209004810192826135b55760008555613577565b82601f106135ce5782800160ff19823516178555613577565b82800160010185558215613577579182015b828111156135775782358255916020019190600101906135e0565b5b8082111561358357600081556001016135fc565b61ffff8116811461252d57600080fd5b80356124f881613610565b60008083601f84011261363d57600080fd5b5081356001600160401b0381111561365457600080fd5b60208301915083602082850101111561366c57600080fd5b9250929050565b6001600160401b038116811461252d57600080fd5b80356124f881613673565b600080600080600080608087890312156136ac57600080fd5b86356136b781613610565b955060208701356001600160401b03808211156136d357600080fd5b6136df8a838b0161362b565b9097509550604089013591506136f482613673565b9093506060880135908082111561370a57600080fd5b5061371789828a0161362b565b979a9699509497509295939492505050565b60006020828403121561373b57600080fd5b81356001600160e01b03198116811461156f57600080fd5b60006020828403121561376557600080fd5b813561156f81613610565b6000806040838503121561378357600080fd5b823561378e81613610565b946020939093013593505050565b801515811461252d57600080fd5b80356124f88161379c565b600080600080600080600060a0888a0312156137d057600080fd5b87356137db81613610565b965060208801356001600160401b03808211156137f757600080fd5b6138038b838c0161362b565b909850965060408a0135955060608a0135915061381f8261379c565b9093506080890135908082111561383557600080fd5b506138428a828b0161362b565b989b979a50959850939692959293505050565b60008060006040848603121561386a57600080fd5b833561387581613610565b925060208401356001600160401b0381111561389057600080fd5b61389c8682870161362b565b9497909650939450505050565b6001600160a01b038116811461252d57600080fd5b80356124f8816138a9565b600080604083850312156138dc57600080fd5b82356138e7816138a9565b915060208301356138f7816138a9565b809150509250929050565b600080600080600080600080600060e08a8c03121561392057600080fd5b893561392b816138a9565b985060208a013561393b81613610565b975060408a01356001600160401b038082111561395757600080fd5b6139638d838e0161362b565b909950975060608c0135965060808c0135915061397f826138a9565b90945060a08b013590613991826138a9565b90935060c08b013590808211156139a757600080fd5b506139b48c828d0161362b565b915080935050809150509295985092959850929598565b600080600080608085870312156139e157600080fd5b84356139ec816138a9565b935060208501356139fc81613610565b92506040850135613a0c816138a9565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613a5a57613a5a613a1c565b604052919050565b60006001600160401b03821115613a7b57613a7b613a1c565b50601f01601f191660200190565b600080600060608486031215613a9e57600080fd5b8335613aa981613610565b925060208401356001600160401b03811115613ac457600080fd5b8401601f81018613613ad557600080fd5b8035613ae8613ae382613a62565b613a32565b818152876020838501011115613afd57600080fd5b816020840160208301376000602083830101528094505050506040840135613b2481613673565b809150509250925092565b60005b83811015613b4a578181015183820152602001613b32565b8381111561113f5750506000910152565b60008151808452613b73816020860160208601613b2f565b601f01601f19169290920160200192915050565b60208152600061156f6020830184613b5b565b60008060408385031215613bad57600080fd5b8235613bb881613610565b915060208301356138f781613610565b600060208284031215613bda57600080fd5b813561156f816138a9565b600080600060608486031215613bfa57600080fd5b8335613c0581613610565b92506020840135613c15816138a9565b929592945050506040919091013590565b60008060008060008060008060008060e08b8d031215613c4557600080fd5b8a35613c5081613610565b995060208b01356001600160401b0380821115613c6c57600080fd5b613c788e838f0161362b565b909b50995060408d0135985060608d0135915080821115613c9857600080fd5b613ca48e838f0161362b565b909850965060808d01359150613cb982613673565b819550613cc860a08e016137aa565b945060c08d0135915080821115613cde57600080fd5b50613ceb8d828e0161362b565b915080935050809150509295989b9194979a5092959850565b600080600080600060808688031215613d1c57600080fd5b8535613d2781613610565b94506020860135613d3781613610565b93506040860135925060608601356001600160401b03811115613d5957600080fd5b613d658882890161362b565b969995985093965092949392505050565b60008060008060008060008060008060e08b8d031215613d9557600080fd5b8a35613da081613610565b995060208b01356001600160401b0380821115613dbc57600080fd5b613dc88e838f0161362b565b909b50995060408d01359150613ddd82613673565b90975060608c01359080821115613df357600080fd5b613dff8e838f0161362b565b9098509650869150613e1360808e016138be565b955060a08d0135945060c08d0135915080821115613cde57600080fd5b600080600060608486031215613e4557600080fd5b8335613e5081613610565b92506020840135613c1581613610565b6000806000806000806000806000806000806101208d8f031215613e8357600080fd5b613e8c8d6138be565b9b50613e9a60208e01613620565b9a506001600160401b0360408e01351115613eb457600080fd5b613ec48e60408f01358f0161362b565b909a50985060608d013597506001600160401b0360808e01351115613ee857600080fd5b613ef88e60808f01358f0161362b565b9097509550613f0960a08e01613688565b9450613f1760c08e016138be565b9350613f2560e08e016138be565b92506001600160401b036101008e01351115613f4057600080fd5b613f518e6101008f01358f0161362b565b81935080925050509295989b509295989b509295989b565b600060208284031215613f7b57600080fd5b813561156f8161379c565b60008060008060808587031215613f9c57600080fd5b84356139ec81613610565b600181811c90821680613fbb57607f821691505b60208210811415613fdc57634e487b7160e01b600052602260045260246000fd5b50919050565b8183823760009101908152919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff8516815260606020820152600061406e606083018587614027565b905082604083015295945050505050565b61ffff871681526001600160a01b038616602082015260a0604082018190526000906140ad90830187613b5b565b851515606084015282810360808401526140c8818587614027565b9998505050505050505050565b600080604083850312156140e857600080fd5b505080516020909101519092909150565b61ffff841681526040602082015260006122fa604083018486614027565b60609190911b6bffffffffffffffffffffffff1916815260140190565b60006020828403121561414657600080fd5b815161156f816138a9565b60006020828403121561416357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156141925761419261416a565b500390565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b61ffff8616815260a0602082015260006141da60a0830187613b5b565b856040840152841515606084015282810360808401526141fa8185613b5b565b98975050505050505050565b61ffff8916815260c06020820152600061422360c083018a613b5b565b828103604084015261423681898b614027565b90508660608401528281036080840152614251818688614027565b9150506001600160401b03831660a08301529998505050505050505050565b600061ffff80881683528087166020840152508460408301526080606083015261429e608083018486614027565b979650505050505050565b6080815260006142bd60808301888a614027565b6001600160a01b03871660208401526040830186905282810360608401526140c8818587614027565b61ffff8a16815260c06020820152600061430460c083018a8c614027565b6001600160401b0389166040840152828103606084015261432681888a614027565b905085608084015282810360a0840152614341818587614027565b9c9b505050505050505050505050565b61ffff8616815260806020820152600061436f608083018688614027565b6001600160401b0394909416604083015250606001529392505050565b600082601f83011261439d57600080fd5b81516143ab613ae382613a62565b8181528460208386010111156143c057600080fd5b6143d1826020830160208701613b2f565b949350505050565b6000602082840312156143eb57600080fd5b81516001600160401b0381111561440157600080fd5b6143d18482850161438c565b61ffff8516815260806020820152600061442a6080830186613b5b565b6001600160401b0385166040840152828103606084015261429e8185613b5b565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b61ffff841681526060602082015260006145016060830185613b5b565b9050826040830152949350505050565b6040815260006145246040830185613b5b565b90508260208301529392505050565b600082198211156145465761454661416a565b500190565b61ffff8816815260c06020820152600061456860c0830189613b5b565b828103604084015261457a8189613b5b565b90508660608401528281036080840152614595818688614027565b9150506001600160401b03831660a083015298975050505050505050565b600082516145c5818460208701613b2f565b9190910192915050565b61ffff8616815260a0602082015260006145ec60a0830187613b5b565b6001600160401b0386166040840152828103606084015261460d8186613b5b565b905082810360808401526141fa8185613b5b565b60006020828403121561463357600080fd5b815161156f8161379c565b61ffff8716815260c06020820152600061465b60c0830188613b5b565b828103604084015261466d8188613b5b565b6001600160a01b0387811660608601528616608085015283810360a085015290506140c88185613b5b565b6000806000606084860312156146ad57600080fd5b83516146b881613610565b60208501519093506001600160401b038111156146d457600080fd5b6146e08682870161438c565b925050604084015190509250925092565b60008060008060008060c0878903121561470a57600080fd5b865161471581613610565b60208801519096506001600160401b038082111561473257600080fd5b61473e8a838b0161438c565b9650604089015191508082111561475457600080fd5b6147608a838b0161438c565b955060608901519450608089015191508082111561477d57600080fd5b5061478a89828a0161438c565b92505060a087015161479b81613673565b809150509295509295509295565b61ffff8716815260c0602082015260006147c660c0830188613b5b565b6001600160401b038716604084015282810360608401526147e78187613b5b565b905084608084015282810360a08401526140c88185613b5b565b6080815260006148146080830187613b5b565b6001600160a01b038616602084015260408301859052828103606084015261429e8185613b5b565b60c08152600061484f60c0830189613b5b565b6001600160401b038816602084015282810360408401526148708188613b5b565b9050856060840152828103608084015261488a8186613b5b565b905082810360a08401526140c88185613b5b565b6060815260006148b16060830186613b5b565b6001600160401b03949094166020830152506040015291905056fea26469706673582212201cea9e1efea156ac443ced363b9a56886a3aaee82de7bc3b0e60cc328bf3975864736f6c63430008090033496e697469616c697a61626c653a20636f6e747261637420697320616c726561