More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 6,364 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Forward Tokens | 70628885 | 10 hrs ago | IN | 0 POL | 0.00214777 | ||||
Forward Tokens | 70620343 | 15 hrs ago | IN | 0 POL | 0.00354845 | ||||
Forward Tokens | 70582739 | 37 hrs ago | IN | 0 POL | 0.00218838 | ||||
Forward Tokens | 70582476 | 38 hrs ago | IN | 0 POL | 0.00218729 | ||||
Forward Tokens | 70580742 | 39 hrs ago | IN | 0 POL | 0.00219605 | ||||
Forward Tokens | 70579059 | 40 hrs ago | IN | 0 POL | 0.00218363 | ||||
Forward Tokens | 70579010 | 40 hrs ago | IN | 0 POL | 0.00279483 | ||||
Forward Tokens | 70573416 | 43 hrs ago | IN | 0 POL | 0.0027412 | ||||
Forward Tokens | 70573392 | 43 hrs ago | IN | 0 POL | 0.0027412 | ||||
Forward Tokens | 70556789 | 2 days ago | IN | 0 POL | 0.0018267 | ||||
Forward Tokens | 70556012 | 2 days ago | IN | 0 POL | 0.00182634 | ||||
Forward Tokens | 70555575 | 2 days ago | IN | 0 POL | 0.00182634 | ||||
Forward Tokens | 70547524 | 2 days ago | IN | 0 POL | 0.0020878 | ||||
Forward Tokens | 70533384 | 2 days ago | IN | 0 POL | 0.0021916 | ||||
Forward Tokens | 70502526 | 3 days ago | IN | 0 POL | 0.00219204 | ||||
Forward Tokens | 70493183 | 3 days ago | IN | 0 POL | 0.00204915 | ||||
Forward Tokens | 70461800 | 4 days ago | IN | 0 POL | 0.00204005 | ||||
Forward Tokens | 70459052 | 4 days ago | IN | 0 POL | 0.0019626 | ||||
Forward Tokens | 70350889 | 7 days ago | IN | 0 POL | 0.00182634 | ||||
Forward Tokens | 70345581 | 7 days ago | IN | 0 POL | 0.00216958 | ||||
Forward Tokens | 70344753 | 7 days ago | IN | 0 POL | 0.00213097 | ||||
Forward Tokens | 70344647 | 7 days ago | IN | 0 POL | 0.00213097 | ||||
Forward Tokens | 70344526 | 7 days ago | IN | 0 POL | 0.00213139 | ||||
Forward Tokens | 70336146 | 7 days ago | IN | 0 POL | 0.00169848 | ||||
Forward Tokens | 70323216 | 7 days ago | IN | 0 POL | 0.00199582 |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x2acaebFb...C8B66b170 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
TokenHub
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: -- DG -- pragma solidity =0.8.21; import "./Interfaces.sol"; import "./TransferHelper.sol"; import "./AccessController.sol"; import "./EIP712MetaTransaction.sol"; contract TokenHub is AccessController, TransferHelper, EIP712MetaTransaction { uint256 public forwardFrame; address public forwardAddress; receive() external payable { emit ReceiveNative( msg.value ); } mapping(address => bool) public supportedTokens; mapping(address => uint256) public forwardFrames; event Forward( address indexed depositorAddress, address indexed paymentTokenAddress, uint256 indexed paymentTokenAmount ); event ForwardNative( address indexed depositorAddress, uint256 indexed paymentTokenAmount ); event ReceiveNative( uint256 indexed nativeAmount ); constructor( address _defaultToken, uint256 _defaultFrame, address _defaultAddress ) EIP712Base( "TokenHub", "v3.0" ) { forwardFrame = _defaultFrame; forwardAddress = _defaultAddress; supportedTokens[_defaultToken] = true; } function forwardNative() external payable { address _depositorAddress = msg.sender; require( canDepositAgain(_depositorAddress), "TokenHub: DEPOSIT_COOLDOWN" ); forwardFrames[_depositorAddress] = block.number; payable(forwardAddress).transfer( msg.value ); emit ForwardNative( msg.sender, msg.value ); } function forwardTokens( address _paymentToken, uint256 _paymentTokenAmount ) external { address _depositorAddress = msg.sender; require( canDepositAgain(_depositorAddress), "TokenHub: DEPOSIT_COOLDOWN" ); forwardFrames[_depositorAddress] = block.number; require( supportedTokens[_paymentToken], "TokenHub: UNSUPPORTED_TOKEN" ); safeTransferFrom( _paymentToken, _depositorAddress, forwardAddress, _paymentTokenAmount ); emit Forward( msg.sender, _paymentToken, _paymentTokenAmount ); } function forwardTokensByWorker( address _depositorAddress, address _paymentTokenAddress, uint256 _paymentTokenAmount ) external onlyWorker { require( canDepositAgain(_depositorAddress), "TokenHub: DEPOSIT_COOLDOWN" ); forwardFrames[_depositorAddress] = block.number; require( supportedTokens[_paymentTokenAddress], "TokenHub: UNSUPPORTED_TOKEN" ); safeTransferFrom( _paymentTokenAddress, _depositorAddress, forwardAddress, _paymentTokenAmount ); emit Forward( _depositorAddress, _paymentTokenAddress, _paymentTokenAmount ); } function changeForwardFrame( uint256 _newDepositFrame ) external onlyCEO { forwardFrame = _newDepositFrame; } function changeForwardAddress( address _newForwardAddress ) external onlyCEO { forwardAddress = _newForwardAddress; } function changeSupportedToken( address _tokenAddress, bool _supportStatus ) external onlyCEO { supportedTokens[_tokenAddress] = _supportStatus; } function canDepositAgain( address _depositorAddress ) public view returns (bool) { return block.number - forwardFrames[_depositorAddress] >= forwardFrame; } function rescueToken( address _tokenAddress ) external onlyCEO { uint256 tokenBalance = safeBalance( _tokenAddress, address(this) ); safeTransfer( _tokenAddress, msg.sender, tokenBalance ); } function rescueNative() external onlyCEO { uint256 etherBalance = address(this).balance; require(etherBalance > 0, "No Ether balance to rescue"); payable(msg.sender).transfer(etherBalance); } }
// SPDX-License-Identifier: -- DG -- pragma solidity =0.8.21; contract AccessController { address public ceoAddress; mapping (address => bool) public isWorker; event CEOSet( address newCEO ); event WorkerAdded( address newWorker ); event WorkerRemoved( address existingWorker ); constructor() { address creator = msg.sender; ceoAddress = creator; isWorker[creator] = true; emit CEOSet( creator ); emit WorkerAdded( creator ); } modifier onlyCEO() { require( msg.sender == ceoAddress, "AccessControl: CEO_DENIED" ); _; } modifier onlyWorker() { require( isWorker[msg.sender] == true, "AccessControl: WORKER_DENIED" ); _; } modifier nonZeroAddress( address checkingAddress ) { require( checkingAddress != address(0x0), "AccessControl: INVALID_ADDRESS" ); _; } function setCEO( address _newCEO ) external nonZeroAddress(_newCEO) onlyCEO { ceoAddress = _newCEO; emit CEOSet( ceoAddress ); } function addWorker( address _newWorker ) external onlyCEO { _addWorker( _newWorker ); } function addWorkerBulk( address[] calldata _newWorkers ) external onlyCEO { for (uint8 index = 0; index < _newWorkers.length; index++) { _addWorker(_newWorkers[index]); } } function _addWorker( address _newWorker ) internal nonZeroAddress(_newWorker) { require( isWorker[_newWorker] == false, 'AccessControl: worker already exist' ); isWorker[_newWorker] = true; emit WorkerAdded( _newWorker ); } function removeWorker( address _existingWorker ) external onlyCEO { _removeWorker( _existingWorker ); } function removeWorkerBulk( address[] calldata _workerArray ) external onlyCEO { for (uint8 index = 0; index < _workerArray.length; index++) { _removeWorker(_workerArray[index]); } } function _removeWorker( address _existingWorker ) internal nonZeroAddress(_existingWorker) { require( isWorker[_existingWorker] == true, "AccessControl: worker not detected" ); isWorker[_existingWorker] = false; emit WorkerRemoved( _existingWorker ); } }
// SPDX-License-Identifier: -- DG -- pragma solidity =0.8.21; contract EIP712Base { struct EIP712Domain { string name; string version; uint256 chainId; address verifyingContract; } bytes32 internal constant EIP712_DOMAIN_TYPEHASH = keccak256( bytes( "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" ) ); bytes32 internal domainSeperator; constructor( string memory _name, string memory _version ) { domainSeperator = keccak256(abi.encode( EIP712_DOMAIN_TYPEHASH, keccak256(bytes(_name)), keccak256(bytes(_version)), getChainID(), address(this) )); } function getChainID() internal pure returns (uint256 id) { assembly { id := 1 } } function getDomainSeperator() private view returns(bytes32) { return domainSeperator; } function toTypedMessageHash( bytes32 _messageHash ) internal view returns(bytes32) { return keccak256( abi.encodePacked( "\x19\x01", getDomainSeperator(), _messageHash ) ); } }
// SPDX-License-Identifier: -- DG -- pragma solidity =0.8.21; import "./EIP712Base.sol"; abstract contract EIP712MetaTransaction is EIP712Base { bytes32 private constant META_TRANSACTION_TYPEHASH = keccak256( bytes( "MetaTransaction(uint256 nonce,address from,bytes functionSignature)" ) ); event MetaTransactionExecuted( address userAddress, address payable relayerAddress, bytes functionSignature ); mapping(address => uint256) internal nonces; struct MetaTransaction { uint256 nonce; address from; bytes functionSignature; } function executeMetaTransaction( address _userAddress, bytes memory _functionSignature, bytes32 _sigR, bytes32 _sigS, uint8 _sigV ) public payable returns(bytes memory) { MetaTransaction memory metaTx = MetaTransaction( { nonce: nonces[_userAddress], from: _userAddress, functionSignature: _functionSignature } ); require( verify( _userAddress, metaTx, _sigR, _sigS, _sigV ), "EIP712MetaTransaction: INVALID_SIGNATURE" ); nonces[_userAddress] = nonces[_userAddress] + 1; (bool success, bytes memory returnData) = address(this).call( abi.encodePacked( _functionSignature, _userAddress ) ); require( success, "EIP712MetaTransaction: INVALID_CALL" ); emit MetaTransactionExecuted( _userAddress, payable(msg.sender), _functionSignature ); return returnData; } function hashMetaTransaction( MetaTransaction memory _metaTx ) internal pure returns (bytes32) { return keccak256( abi.encode( META_TRANSACTION_TYPEHASH, _metaTx.nonce, _metaTx.from, keccak256(_metaTx.functionSignature) ) ); } function verify( address _user, MetaTransaction memory _metaTx, bytes32 _sigR, bytes32 _sigS, uint8 _sigV ) internal view returns (bool) { address signer = ecrecover( toTypedMessageHash( hashMetaTransaction(_metaTx) ), _sigV, _sigR, _sigS ); require( signer != address(0x0), "EIP712MetaTransaction: INVALID_SIGNATURE" ); return signer == _user; } function msgSender() internal view returns(address sender) { if (msg.sender == address(this)) { bytes memory array = msg.data; uint256 index = msg.data.length; assembly { // Load the 32 bytes word from memory with the address on the lower 20 bytes, and mask those. sender := and(mload(add(array, index)), 0xffffffffffffffffffffffffffffffffffffffff) } } else { sender = msg.sender; } return sender; } function getNonce( address _user ) external view returns(uint256 nonce) { nonce = nonces[_user]; } }
// SPDX-License-Identifier: -- DG -- pragma solidity =0.8.21; interface ERC721 { function ownerOf( uint256 _tokenId ) external view returns (address); function transferFrom( address _from, address _to, uint256 _tokenId ) external; } interface ERC20 { function approve( address spender, uint256 amount ) external returns (bool); function burn( uint256 _amount ) external; } interface DGAccessories { function issueTokens( address[] calldata _beneficiaries, uint256[] calldata _itemIds ) external; function encodeTokenId( uint256 _itemId, uint256 _issuedId ) external pure returns (uint256 id); function decodeTokenId( uint256 _tokenId ) external pure returns ( uint256 itemId, uint256 issuedId ); function items( uint256 _id ) external view returns ( string memory rarity, uint256 maxSupply, uint256 totalSupply, uint256 price, address beneficiary, string memory metadata, string memory contentHash ); function itemsCount() external view returns (uint256); }
// SPDX-License-Identifier: -- DG -- pragma solidity =0.8.21; contract TransferHelper { bytes4 private constant TRANSFER = bytes4( keccak256( bytes( "transfer(address,uint256)" // 0xa9059cbb ) ) ); bytes4 private constant TRANSFER_FROM = bytes4( keccak256( bytes( "transferFrom(address,address,uint256)" // 0x23b872dd ) ) ); bytes4 private constant BALANCE_OF = bytes4( keccak256( bytes( "balanceOf(address)" ) ) ); function safeTransfer( address _token, address _to, uint256 _value ) internal { (bool success, bytes memory data) = _token.call( abi.encodeWithSelector( TRANSFER, // 0xa9059cbb _to, _value ) ); require( success && ( data.length == 0 || abi.decode( data, (bool) ) ), "TransferHelper: TRANSFER_FAILED" ); } function safeTransferFrom( address _token, address _from, address _to, uint _value ) internal { (bool success, bytes memory data) = _token.call( abi.encodeWithSelector( TRANSFER_FROM, _from, _to, _value ) ); require( success && ( data.length == 0 || abi.decode( data, (bool) ) ), "TransferHelper: TRANSFER_FROM_FAILED" ); } function safeBalance( address _token, address _owner ) internal returns (uint256) { (bool success, bytes memory data) = _token.call( abi.encodeWithSelector( BALANCE_OF, _owner ) ); if (success == false) return 0; return abi.decode( data, (uint256) ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_defaultToken","type":"address"},{"internalType":"uint256","name":"_defaultFrame","type":"uint256"},{"internalType":"address","name":"_defaultAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newCEO","type":"address"}],"name":"CEOSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"depositorAddress","type":"address"},{"indexed":true,"internalType":"address","name":"paymentTokenAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"paymentTokenAmount","type":"uint256"}],"name":"Forward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"depositorAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"paymentTokenAmount","type":"uint256"}],"name":"ForwardNative","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"userAddress","type":"address"},{"indexed":false,"internalType":"address payable","name":"relayerAddress","type":"address"},{"indexed":false,"internalType":"bytes","name":"functionSignature","type":"bytes"}],"name":"MetaTransactionExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"nativeAmount","type":"uint256"}],"name":"ReceiveNative","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newWorker","type":"address"}],"name":"WorkerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"existingWorker","type":"address"}],"name":"WorkerRemoved","type":"event"},{"inputs":[{"internalType":"address","name":"_newWorker","type":"address"}],"name":"addWorker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_newWorkers","type":"address[]"}],"name":"addWorkerBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_depositorAddress","type":"address"}],"name":"canDepositAgain","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ceoAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newForwardAddress","type":"address"}],"name":"changeForwardAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newDepositFrame","type":"uint256"}],"name":"changeForwardFrame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"bool","name":"_supportStatus","type":"bool"}],"name":"changeSupportedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_userAddress","type":"address"},{"internalType":"bytes","name":"_functionSignature","type":"bytes"},{"internalType":"bytes32","name":"_sigR","type":"bytes32"},{"internalType":"bytes32","name":"_sigS","type":"bytes32"},{"internalType":"uint8","name":"_sigV","type":"uint8"}],"name":"executeMetaTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"forwardAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forwardFrame","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"forwardFrames","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forwardNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_paymentToken","type":"address"},{"internalType":"uint256","name":"_paymentTokenAmount","type":"uint256"}],"name":"forwardTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_depositorAddress","type":"address"},{"internalType":"address","name":"_paymentTokenAddress","type":"address"},{"internalType":"uint256","name":"_paymentTokenAmount","type":"uint256"}],"name":"forwardTokensByWorker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getNonce","outputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWorker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_existingWorker","type":"address"}],"name":"removeWorker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_workerArray","type":"address[]"}],"name":"removeWorkerBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"rescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newCEO","type":"address"}],"name":"setCEO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"supportedTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Deployed Bytecode
0x608060405260043610610134575f3560e01c8063806ad57e116100a8578063c4f987a51161006d578063c4f987a5146103bf578063c5b3ffe9146103de578063d239c97314610409578063e6adfe3714610428578063efd00e8a14610447578063fc82f0841461044f575f80fd5b8063806ad57e14610315578063877f210c14610334578063983c45cf14610353578063aa15664514610372578063c3170007146103a0575f80fd5b80634460d3cf116100f95780634460d3cf1461024657806345e0e412146102655780635af2e9fb146102845780635eae21fa146102a357806368c4ac26146102c2578063799bf3f914610300575f80fd5b80630a0f8168146101695780630c53c51c146101a457806321507b4e146101c457806327d7874c146101e35780632d0335ab14610204575f80fd5b366101655760405134907f5e168818916f1fd9e52c6751cc95b7117e0d0e2d5d4f3868f21ce415555b9b40905f90a2005b5f80fd5b348015610174575f80fd5b505f54610187906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101b76101b2366004611402565b610463565b60405161019b919061152d565b3480156101cf575f80fd5b50600554610187906001600160a01b031681565b3480156101ee575f80fd5b506102026101fd366004611546565b610619565b005b34801561020f575f80fd5b5061023861021e366004611546565b6001600160a01b03165f9081526003602052604090205490565b60405190815260200161019b565b348015610251575f80fd5b50610202610260366004611546565b6106be565b348015610270575f80fd5b5061020261027f36600461155f565b610703565b34801561028f575f80fd5b5061020261029e366004611546565b6107f7565b3480156102ae575f80fd5b506102026102bd366004611594565b610842565b3480156102cd575f80fd5b506102f06102dc366004611546565b60066020525f908152604090205460ff1681565b604051901515815260200161019b565b34801561030b575f80fd5b5061023860045481565b348015610320575f80fd5b5061020261032f366004611546565b610895565b34801561033f575f80fd5b5061020261034e3660046115c9565b6108ca565b34801561035e575f80fd5b5061020261036d366004611602565b610a2b565b34801561037d575f80fd5b506102f061038c366004611546565b60016020525f908152604090205460ff1681565b3480156103ab575f80fd5b506102026103ba366004611619565b610a59565b3480156103ca575f80fd5b506102026103d9366004611546565b610ad8565b3480156103e9575f80fd5b506102386103f8366004611546565b60076020525f908152604090205481565b348015610414575f80fd5b506102f0610423366004611546565b610b0a565b348015610433575f80fd5b50610202610442366004611619565b610b3a565b610202610bb4565b34801561045a575f80fd5b50610202610c54565b60408051606081810183526001600160a01b0388165f81815260036020908152908590205484528301529181018690526104a08782878787610cf5565b6104c55760405162461bcd60e51b81526004016104bc90611688565b60405180910390fd5b6001600160a01b0387165f908152600360205260409020546104e89060016116e4565b6001600160a01b0388165f90815260036020908152604080832093909355915190918291309161051c918b918d91016116f7565b60408051601f19818403018152908290526105369161172d565b5f604051808303815f865af19150503d805f811461056f576040519150601f19603f3d011682016040523d82523d5f602084013e610574565b606091505b5091509150816105d25760405162461bcd60e51b815260206004820152602360248201527f4549503731324d6574615472616e73616374696f6e3a20494e56414c49445f4360448201526210531360ea1b60648201526084016104bc565b7f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b89338a60405161060593929190611748565b60405180910390a198975050505050505050565b806001600160a01b0381166106405760405162461bcd60e51b81526004016104bc9061177c565b5f546001600160a01b031633146106695760405162461bcd60e51b81526004016104bc906117b3565b5f80546001600160a01b0319166001600160a01b0384169081179091556040519081527ff97cbb4246b709036319093e5ff31674b9f6759076d153e1bea1f60392170fc0906020015b60405180910390a15050565b5f546001600160a01b031633146106e75760405162461bcd60e51b81526004016104bc906117b3565b5f6106f28230610da9565b90506106ff823383610e9d565b5050565b3361070d81610b0a565b6107295760405162461bcd60e51b81526004016104bc906117ea565b6001600160a01b038082165f908152600760209081526040808320439055928616825260069052205460ff166107a15760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e4875623a20554e535550504f525445445f544f4b454e000000000060448201526064016104bc565b6005546107bb90849083906001600160a01b031685610fe3565b60405182906001600160a01b0385169033907fceac81a6cfb44e1614ce02f28d4c280e6e9f4c9cf2585ab625f5e182caf7023d905f90a4505050565b5f546001600160a01b031633146108205760405162461bcd60e51b81526004016104bc906117b3565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461086b5760405162461bcd60e51b81526004016104bc906117b3565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146108be5760405162461bcd60e51b81526004016104bc906117b3565b6108c78161113a565b50565b335f9081526001602081905260409091205460ff1615151461092e5760405162461bcd60e51b815260206004820152601c60248201527f416363657373436f6e74726f6c3a20574f524b45525f44454e4945440000000060448201526064016104bc565b61093783610b0a565b6109535760405162461bcd60e51b81526004016104bc906117ea565b6001600160a01b038084165f908152600760209081526040808320439055928516825260069052205460ff166109cb5760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e4875623a20554e535550504f525445445f544f4b454e000000000060448201526064016104bc565b6005546109e590839085906001600160a01b031684610fe3565b80826001600160a01b0316846001600160a01b03167fceac81a6cfb44e1614ce02f28d4c280e6e9f4c9cf2585ab625f5e182caf7023d60405160405180910390a4505050565b5f546001600160a01b03163314610a545760405162461bcd60e51b81526004016104bc906117b3565b600455565b5f546001600160a01b03163314610a825760405162461bcd60e51b81526004016104bc906117b3565b5f5b60ff8116821115610ad357610ac183838360ff16818110610aa757610aa7611821565b9050602002016020810190610abc9190611546565b61113a565b80610acb81611835565b915050610a84565b505050565b5f546001600160a01b03163314610b015760405162461bcd60e51b81526004016104bc906117b3565b6108c781611229565b6004546001600160a01b0382165f90815260076020526040812054909190610b329043611853565b101592915050565b5f546001600160a01b03163314610b635760405162461bcd60e51b81526004016104bc906117b3565b5f5b60ff8116821115610ad357610ba283838360ff16818110610b8857610b88611821565b9050602002016020810190610b9d9190611546565b611229565b80610bac81611835565b915050610b65565b33610bbe81610b0a565b610bda5760405162461bcd60e51b81526004016104bc906117ea565b6001600160a01b038082165f9081526007602052604080822043905560055490519216913480156108fc0292909190818181858888f19350505050158015610c24573d5f803e3d5ffd5b50604051349033907f2f0094ad9640858ffa87c59b7086fb03a519c627e74993edab801eb7a1503f55905f90a350565b5f546001600160a01b03163314610c7d5760405162461bcd60e51b81526004016104bc906117b3565b4780610ccb5760405162461bcd60e51b815260206004820152601a60248201527f4e6f2045746865722062616c616e636520746f2072657363756500000000000060448201526064016104bc565b604051339082156108fc029083905f818181858888f193505050501580156106ff573d5f803e3d5ffd5b5f806001610d0a610d0588611318565b611394565b604080515f8152602081018083529290925260ff861690820152606081018790526080810186905260a0016020604051602081039080840390855afa158015610d55573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610d885760405162461bcd60e51b81526004016104bc90611688565b866001600160a01b0316816001600160a01b03161491505095945050505050565b604080518082018252601281527162616c616e63654f6628616464726573732960701b60209182015281516001600160a01b03848116602480840191909152845180840390910181526044909201845291810180516001600160e01b03166370a0823160e01b17905291515f928392839290871691610e279161172d565b5f604051808303815f865af19150503d805f8114610e60576040519150601f19603f3d011682016040523d82523d5f602084013e610e65565b606091505b5090925090508115155f03610e7e575f92505050610e97565b80806020019051810190610e929190611866565b925050505b92915050565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b17905291515f928392871691610f28919061172d565b5f604051808303815f865af19150503d805f8114610f61576040519150601f19603f3d011682016040523d82523d5f602084013e610f66565b606091505b5091509150818015610f90575080511580610f90575080806020019051810190610f90919061187d565b610fdc5760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016104bc565b5050505050565b5f80856001600160a01b03166040518060600160405280602581526020016118996025913980516020909101206040516001600160a01b038089166024830152871660448201526064810186905260840160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611072919061172d565b5f604051808303815f865af19150503d805f81146110ab576040519150601f19603f3d011682016040523d82523d5f602084013e6110b0565b606091505b50915091508180156110da5750805115806110da5750808060200190518101906110da919061187d565b6111325760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b60648201526084016104bc565b505050505050565b806001600160a01b0381166111615760405162461bcd60e51b81526004016104bc9061177c565b6001600160a01b0382165f9081526001602052604090205460ff16156111d55760405162461bcd60e51b815260206004820152602360248201527f416363657373436f6e74726f6c3a20776f726b657220616c72656164792065786044820152621a5cdd60ea1b60648201526084016104bc565b6001600160a01b0382165f81815260016020818152604092839020805460ff191690921790915590519182527fb10d2a24a8c3686841e966f0c2c64c385cfaecb50a09b16aa3579bfcf3989dcd91016106b2565b806001600160a01b0381166112505760405162461bcd60e51b81526004016104bc9061177c565b6001600160a01b0382165f9081526001602081905260409091205460ff161515146112c85760405162461bcd60e51b815260206004820152602260248201527f416363657373436f6e74726f6c3a20776f726b6572206e6f7420646574656374604482015261195960f21b60648201526084016104bc565b6001600160a01b0382165f81815260016020908152604091829020805460ff1916905590519182527f6cfb0504498d3a8155a2a3dd5f41940ad5ab571197ac70f6d6948d189f6a0d2791016106b2565b5f6040518060800160405280604381526020016118be6043913980516020918201208351848301516040808701518051908601209051611377950193845260208401929092526001600160a01b03166040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b5f61139e60025490565b60405161190160f01b6020820152602281019190915260428101839052606201611377565b80356001600160a01b03811681146113d9575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b803560ff811681146113d9575f80fd5b5f805f805f60a08688031215611416575f80fd5b61141f866113c3565b9450602086013567ffffffffffffffff8082111561143b575f80fd5b818801915088601f83011261144e575f80fd5b813581811115611460576114606113de565b604051601f8201601f19908116603f01168101908382118183101715611488576114886113de565b816040528281528b60208487010111156114a0575f80fd5b826020860160208301375f60208483010152809850505050505060408601359250606086013591506114d4608087016113f2565b90509295509295909350565b5f5b838110156114fa5781810151838201526020016114e2565b50505f910152565b5f81518084526115198160208601602086016114e0565b601f01601f19169290920160200192915050565b602081525f61153f6020830184611502565b9392505050565b5f60208284031215611556575f80fd5b61153f826113c3565b5f8060408385031215611570575f80fd5b611579836113c3565b946020939093013593505050565b80151581146108c7575f80fd5b5f80604083850312156115a5575f80fd5b6115ae836113c3565b915060208301356115be81611587565b809150509250929050565b5f805f606084860312156115db575f80fd5b6115e4846113c3565b92506115f2602085016113c3565b9150604084013590509250925092565b5f60208284031215611612575f80fd5b5035919050565b5f806020838503121561162a575f80fd5b823567ffffffffffffffff80821115611641575f80fd5b818501915085601f830112611654575f80fd5b813581811115611662575f80fd5b8660208260051b8501011115611676575f80fd5b60209290920196919550909350505050565b60208082526028908201527f4549503731324d6574615472616e73616374696f6e3a20494e56414c49445f5360408201526749474e415455524560c01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e9757610e976116d0565b5f83516117088184602088016114e0565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f825161173e8184602087016114e0565b9190910192915050565b6001600160a01b038481168252831660208201526060604082018190525f9061177390830184611502565b95945050505050565b6020808252601e908201527f416363657373436f6e74726f6c3a20494e56414c49445f414444524553530000604082015260600190565b60208082526019908201527f416363657373436f6e74726f6c3a2043454f5f44454e49454400000000000000604082015260600190565b6020808252601a908201527f546f6b656e4875623a204445504f5349545f434f4f4c444f574e000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60ff821660ff810361184a5761184a6116d0565b60010192915050565b81810381811115610e9757610e976116d0565b5f60208284031215611876575f80fd5b5051919050565b5f6020828403121561188d575f80fd5b815161153f8161158756fe7472616e7366657246726f6d28616464726573732c616464726573732c75696e74323536294d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529a26469706673582212201716ef01dbbf3cd188b8b891e6a1c3e30d3c32ebd25480ff6377adee4e8e7dc964736f6c63430008150033
Deployed Bytecode Sourcemap
203:4613:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;445:48;;473:9;;445:48;;;;;203:4613;;;;;103:25:0;;;;;;;;;;-1:-1:-1;103:25:0;;;;-1:-1:-1;;;;;103:25:0;;;;;;-1:-1:-1;;;;;178:32:6;;;160:51;;148:2;133:18;103:25:0;;;;;;;;657:1278:2;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;341:29:4:-;;;;;;;;;;-1:-1:-1;341:29:4;;;;-1:-1:-1;;;;;341:29:4;;;1162:221:0;;;;;;;;;;-1:-1:-1;1162:221:0;;;;;:::i;:::-;;:::i;:::-;;3499:158:2;;;;;;;;;;-1:-1:-1;3499:158:2;;;;;:::i;:::-;-1:-1:-1;;;;;3636:13:2;3597;3636;;;:6;:13;;;;;;;3499:158;;;;2990:25:6;;;2978:2;2963:18;3499:158:2;2844:177:6;4210:336:4;;;;;;;;;;-1:-1:-1;4210:336:4;;;;;:::i;:::-;;:::i;1826:769::-;;;;;;;;;;-1:-1:-1;1826:769:4;;;;;:::i;:::-;;:::i;3596:168::-;;;;;;;;;;-1:-1:-1;3596:168:4;;;;;:::i;:::-;;:::i;3772:206::-;;;;;;;;;;-1:-1:-1;3772:206:4;;;;;:::i;:::-;;:::i;509:47::-;;;;;;;;;;-1:-1:-1;509:47:4;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3893:14:6;;3886:22;3868:41;;3856:2;3841:18;509:47:4;3728:187:6;307:27:4;;;;;;;;;;;;;;;;1391:160:0;;;;;;;;;;-1:-1:-1;1391:160:0;;;;;:::i;:::-;;:::i;2603:817:4:-;;;;;;;;;;-1:-1:-1;2603:817:4;;;;;:::i;:::-;;:::i;3428:160::-;;;;;;;;;;-1:-1:-1;3428:160:4;;;;;:::i;:::-;;:::i;135:41:0:-;;;;;;;;;;-1:-1:-1;135:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;1559:245;;;;;;;;;;-1:-1:-1;1559:245:0;;;;;:::i;:::-;;:::i;2173:176::-;;;;;;;;;;-1:-1:-1;2173:176:0;;;;;:::i;:::-;;:::i;563:48:4:-;;;;;;;;;;-1:-1:-1;563:48:4;;;;;:::i;:::-;;;;;;;;;;;;;;3986:216;;;;;;;;;;-1:-1:-1;3986:216:4;;;;;:::i;:::-;;:::i;2357:254:0:-;;;;;;;;;;-1:-1:-1;2357:254:0;;;;;:::i;:::-;;:::i;1333:485:4:-;;;:::i;4554:259::-;;;;;;;;;;;;;:::i;657:1278:2:-;951:195;;;889:12;951:195;;;;;-1:-1:-1;;;;;1007:20:2;;919:29;1007:20;;;:6;:20;;;;;;;;;951:195;;;;;;;;;;;1181:149;1014:12;951:195;1262:5;1286;1310;1181:6;:149::i;:::-;1159:226;;;;-1:-1:-1;;;1159:226:2;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;1424:20:2;;;;;;:6;:20;;;;;;:24;;1447:1;1424:24;:::i;:::-;-1:-1:-1;;;;;1395:20:2;;;;;;:6;:20;;;;;;;;:53;;;;1536:99;;1395:20;;;;1511:4;;1536:99;;1571:18;;1402:12;;1536:99;;:::i;:::-;;;;-1:-1:-1;;1536:99:2;;;;;;;;;;1503:143;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1461:185;;;;1681:7;1659:92;;;;-1:-1:-1;;;1659:92:2;;6656:2:6;1659:92:2;;;6638:21:6;6695:2;6675:18;;;6668:30;6734:34;6714:18;;;6707:62;-1:-1:-1;;;6785:18:6;;;6778:33;6828:19;;1659:92:2;6454:399:6;1659:92:2;1769:128;1807:12;1842:10;1868:18;1769:128;;;;;;;;:::i;:::-;;;;;;;;1917:10;657:1278;-1:-1:-1;;;;;;;;657:1278:2:o;1162:221:0:-;1253:7;-1:-1:-1;;;;;1045:31:0;;1023:111;;;;-1:-1:-1;;;1023:111:0;;;;;;;:::i;:::-;689:10:::1;::::0;-1:-1:-1;;;;;689:10:0::1;675;:24;653:99;;;;-1:-1:-1::0;;;653:99:0::1;;;;;;;:::i;:::-;1295:10:::2;:20:::0;;-1:-1:-1;;;;;;1295:20:0::2;-1:-1:-1::0;;;;;1295:20:0;::::2;::::0;;::::2;::::0;;;1333:42:::2;::::0;160:51:6;;;1333:42:0::2;::::0;148:2:6;133:18;1333:42:0::2;;;;;;;;1162:221:::0;;:::o;4210:336:4:-;689:10:0;;-1:-1:-1;;;;;689:10:0;675;:24;653:99;;;;-1:-1:-1;;;653:99:0;;;;;;;:::i;:::-;4321:20:4::1;4344:78;4370:13;4406:4;4344:11;:78::i;:::-;4321:101;;4435:103;4462:13;4490:10;4515:12;4435;:103::i;:::-;4310:236;4210:336:::0;:::o;1826:769::-;1988:10;2033:34;1988:10;2033:15;:34::i;:::-;2011:110;;;;-1:-1:-1;;;2011:110:4;;;;;;;:::i;:::-;-1:-1:-1;;;;;2134:32:4;;;;;;;:13;:32;;;;;;;;2169:12;2134:47;;2216:30;;;;;:15;:30;;;;;;2194:107;;;;-1:-1:-1;;;2194:107:4;;8564:2:6;2194:107:4;;;8546:21:6;8603:2;8583:18;;;8576:30;8642:29;8622:18;;;8615:57;8689:18;;2194:107:4;8362:351:6;2194:107:4;2405:14;;2314:150;;2345:13;;2373:17;;-1:-1:-1;;;;;2405:14:4;2434:19;2314:16;:150::i;:::-;2482:105;;2557:19;;-1:-1:-1;;;;;2482:105:4;;;2504:10;;2482:105;;;;;1949:646;1826:769;;:::o;3596:168::-;689:10:0;;-1:-1:-1;;;;;689:10:0;675;:24;653:99;;;;-1:-1:-1;;;653:99:0;;;;;;;:::i;:::-;3721:14:4::1;:35:::0;;-1:-1:-1;;;;;;3721:35:4::1;-1:-1:-1::0;;;;;3721:35:4;;;::::1;::::0;;;::::1;::::0;;3596:168::o;3772:206::-;689:10:0;;-1:-1:-1;;;;;689:10:0;675;:24;653:99;;;;-1:-1:-1;;;653:99:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3923:30:4;;;::::1;;::::0;;;:15:::1;:30;::::0;;;;:47;;-1:-1:-1;;3923:47:4::1;::::0;::::1;;::::0;;;::::1;::::0;;3772:206::o;1391:160:0:-;689:10;;-1:-1:-1;;;;;689:10:0;675;:24;653:99;;;;-1:-1:-1;;;653:99:0;;;;;;;:::i;:::-;1497:46:::1;1522:10;1497;:46::i;:::-;1391:160:::0;:::o;2603:817:4:-;844:10:0;835:20;;;;:8;:20;;;;;;;;;;;:28;;;813:106;;;;-1:-1:-1;;;813:106:0;;8920:2:6;813:106:0;;;8902:21:6;8959:2;8939:18;;;8932:30;8998;8978:18;;;8971:58;9046:18;;813:106:0;8718:352:6;813:106:0;2830:34:4::1;2846:17;2830:15;:34::i;:::-;2808:110;;;;-1:-1:-1::0;;;2808:110:4::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2931:32:4;;::::1;;::::0;;;:13:::1;:32;::::0;;;;;;;2966:12:::1;2931:47:::0;;3013:37;;::::1;::::0;;:15:::1;:37:::0;;;;::::1;;2991:114;;;::::0;-1:-1:-1;;;2991:114:4;;8564:2:6;2991:114:4::1;::::0;::::1;8546:21:6::0;8603:2;8583:18;;;8576:30;8642:29;8622:18;;;8615:57;8689:18;;2991:114:4::1;8362:351:6::0;2991:114:4::1;3216:14;::::0;3118:157:::1;::::0;3149:20;;3184:17;;-1:-1:-1;;;;;3216:14:4::1;3245:19:::0;3118:16:::1;:157::i;:::-;3382:19;3347:20;-1:-1:-1::0;;;;;3293:119:4::1;3315:17;-1:-1:-1::0;;;;;3293:119:4::1;;;;;;;;;;;2603:817:::0;;;:::o;3428:160::-;689:10:0;;-1:-1:-1;;;;;689:10:0;675;:24;653:99;;;;-1:-1:-1;;;653:99:0;;;;;;;:::i;:::-;3549:12:4::1;:31:::0;3428:160::o;1559:245:0:-;689:10;;-1:-1:-1;;;;;689:10:0;675;:24;653:99;;;;-1:-1:-1;;;653:99:0;;;;;;;:::i;:::-;1686:11:::1;1681:116;1703:26;::::0;::::1;::::0;-1:-1:-1;1681:116:0::1;;;1755:30;1766:11;;1778:5;1766:18;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;1755:10;:30::i;:::-;1731:7:::0;::::1;::::0;::::1;:::i;:::-;;;;1681:116;;;;1559:245:::0;;:::o;2173:176::-;689:10;;-1:-1:-1;;;;;689:10:0;675;:24;653:99;;;;-1:-1:-1;;;653:99:0;;;;;;;:::i;:::-;2287:54:::1;2315:15;2287:13;:54::i;3986:216:4:-:0;4182:12;;-1:-1:-1;;;;;4146:32:4;;4102:4;4146:32;;;:13;:32;;;;;;4102:4;;4182:12;4131:47;;:12;:47;:::i;:::-;:63;;;3986:216;-1:-1:-1;;3986:216:4:o;2357:254:0:-;689:10;;-1:-1:-1;;;;;689:10:0;675;:24;653:99;;;;-1:-1:-1;;;653:99:0;;;;;;;:::i;:::-;2488:11:::1;2483:121;2505:27;::::0;::::1;::::0;-1:-1:-1;2483:121:0::1;;;2558:34;2572:12;;2585:5;2572:19;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2558:13;:34::i;:::-;2534:7:::0;::::1;::::0;::::1;:::i;:::-;;;;2483:121;;1333:485:4::0;1438:10;1483:34;1438:10;1483:15;:34::i;:::-;1461:110;;;;-1:-1:-1;;;1461:110:4;;;;;;;:::i;:::-;-1:-1:-1;;;;;1584:32:4;;;;;;;:13;:32;;;;;;1619:12;1584:47;;1652:14;;1644:67;;1652:14;;;1691:9;1644:67;;;;;1691:9;;1644:67;;1584:32;1644:67;1691:9;1652:14;1644:67;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1729:73:4;;1782:9;;1757:10;;1729:73;;;;;1399:419;1333:485::o;4554:259::-;689:10:0;;-1:-1:-1;;;;;689:10:0;675;:24;653:99;;;;-1:-1:-1;;;653:99:0;;;;;;;:::i;:::-;4655:21:4::1;4695:16:::0;4687:55:::1;;;::::0;-1:-1:-1;;;4687:55:4;;9722:2:6;4687:55:4::1;::::0;::::1;9704:21:6::0;9761:2;9741:18;;;9734:30;9800:28;9780:18;;;9773:56;9846:18;;4687:55:4::1;9520:350:6::0;4687:55:4::1;4763:42;::::0;4771:10:::1;::::0;4763:42;::::1;;;::::0;4792:12;;4763:42:::1;::::0;;;4792:12;4771:10;4763:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;2325:581:2::0;2533:4;2555:14;2572:175;2596:80;2633:28;2653:7;2633:19;:28::i;:::-;2596:18;:80::i;:::-;2572:175;;;;;;;;;;;;10102:25:6;;;;10175:4;10163:17;;10143:18;;;10136:45;10197:18;;;10190:34;;;10240:18;;;10233:34;;;10074:19;;2572:175:2;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2572:175:2;;-1:-1:-1;;2572:175:2;;;-1:-1:-1;;;;;;;2782:22:2;;2760:112;;;;-1:-1:-1;;;2760:112:2;;;;;;;:::i;:::-;2896:5;-1:-1:-1;;;;;2886:15:2;:6;-1:-1:-1;;;;;2886:15:2;;2879:22;;;2325:581;;;;;;;:::o;1837:438:5:-;562:59;;;;;;;;;;;-1:-1:-1;;;562:59:5;;;;;2038:91;;-1:-1:-1;;;;;178:32:6;;;2038:91:5;;;;160:51:6;;;;2038:91:5;;;;;;;;;;133:18:6;;;;2038:91:5;;;;;;;-1:-1:-1;;;;;2038:91:5;-1:-1:-1;;;2038:91:5;;;2012:128;;-1:-1:-1;;;;;;2012:11:5;;;;:128;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1976:164:5;;-1:-1:-1;1976:164:5;-1:-1:-1;2157:16:5;;;2168:5;2157:16;2153:30;;2182:1;2175:8;;;;;;2153:30;2228:4;2203:64;;;;;;;;;;;;:::i;:::-;2196:71;;;;1837:438;;;;;:::o;648:564::-;177:80;;;;;;;;;;;;;;;;;845:125;;-1:-1:-1;;;;;10659:32:6;;;845:125:5;;;10641:51:6;10708:18;;;;10701:34;;;845:125:5;;;;;;;;;;10614:18:6;;;;845:125:5;;;;;;;-1:-1:-1;;;;;845:125:5;-1:-1:-1;;;845:125:5;;;819:162;;-1:-1:-1;;;;819:11:5;;;:162;;845:125;819:162;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;783:198;;;;1016:7;:129;;;;-1:-1:-1;1046:11:5;;:16;;:84;;;1099:4;1066:64;;;;;;;;;;;;:::i;:::-;994:210;;;;-1:-1:-1;;;994:210:5;;11198:2:6;994:210:5;;;11180:21:6;11237:2;11217:18;;;11210:30;11276:33;11256:18;;;11249:61;11327:18;;994:210:5;10996:355:6;994:210:5;772:440;;648:564;;;:::o;1220:609::-;1381:12;1395:17;1416:6;-1:-1:-1;;;;;1416:11:5;365:92;;;;;;;;;;;;;;;;;341:127;;;;;;;1442:140;;-1:-1:-1;;;;;11614:15:6;;;1442:140:5;;;11596:34:6;11666:15;;11646:18;;;11639:43;11698:18;;;11691:34;;;11531:18;;1442:140:5;;;-1:-1:-1;;1442:140:5;;;;;;;;;;;;;;-1:-1:-1;;;;;1442:140:5;-1:-1:-1;;;;;;1442:140:5;;;;;;;;;;1416:177;;;;1442:140;1416:177;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1380:213;;;;1628:7;:129;;;;-1:-1:-1;1658:11:5;;:16;;:84;;;1711:4;1678:64;;;;;;;;;;;;:::i;:::-;1606:215;;;;-1:-1:-1;;;1606:215:5;;11938:2:6;1606:215:5;;;11920:21:6;11977:2;11957:18;;;11950:30;12016:34;11996:18;;;11989:62;-1:-1:-1;;;12067:18:6;;;12060:34;12111:19;;1606:215:5;11736:400:6;1606:215:5;1369:460;;1220:609;;;;:::o;1812:353:0:-;1910:10;-1:-1:-1;;;;;1045:31:0;;1023:111;;;;-1:-1:-1;;;1023:111:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1960:20:0;::::1;;::::0;;;:8:::1;:20;::::0;;;;;::::1;;:29;1938:114;;;::::0;-1:-1:-1;;;1938:114:0;;12343:2:6;1938:114:0::1;::::0;::::1;12325:21:6::0;12382:2;12362:18;;;12355:30;12421:34;12401:18;;;12394:62;-1:-1:-1;;;12472:18:6;;;12465:33;12515:19;;1938:114:0::1;12141:399:6::0;1938:114:0::1;-1:-1:-1::0;;;;;2065:20:0;::::1;;::::0;;;2088:4:::1;2065:20;::::0;;;;;;;;:27;;-1:-1:-1;;2065:27:0::1;::::0;;::::1;::::0;;;2110:47;;160:51:6;;;2110:47:0::1;::::0;133:18:6;2110:47:0::1;14:203:6::0;2619:382:0;2725:15;-1:-1:-1;;;;;1045:31:0;;1023:111;;;;-1:-1:-1;;;1023:111:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2780:25:0;::::1;;::::0;;;:8:::1;:25;::::0;;;;;;;;::::1;;:33;;;2758:117;;;::::0;-1:-1:-1;;;2758:117:0;;12747:2:6;2758:117:0::1;::::0;::::1;12729:21:6::0;12786:2;12766:18;;;12759:30;12825:34;12805:18;;;12798:62;-1:-1:-1;;;12876:18:6;;;12869:32;12918:19;;2758:117:0::1;12545:398:6::0;2758:117:0::1;-1:-1:-1::0;;;;;2888:25:0;::::1;2916:5;2888:25:::0;;;:8:::1;:25;::::0;;;;;;;;:33;;-1:-1:-1;;2888:33:0::1;::::0;;2939:54;;160:51:6;;;2939:54:0::1;::::0;133:18:6;2939:54:0::1;14:203:6::0;1943:374:2;2070:7;234:100;;;;;;;;;;;;;;;;;214:127;;;;;;;2187:13;;2219:12;;;;2260:25;;;;;2250:36;;;;;;2114:187;;;;;13179:25:6;;;13235:2;13220:18;;13213:34;;;;-1:-1:-1;;;;;13283:32:6;13278:2;13263:18;;13256:60;13347:2;13332:18;;13325:34;13166:3;13151:19;;12948:417;2114:187:2;;;;;;;;;;;;;2096:216;;;;;;2089:223;;1943:374;;;:::o;1029:320:1:-;1144:7;1264:20;1001:15;;;897:124;1264:20;1200:130;;-1:-1:-1;;;1200:130:1;;;13628:27:6;13671:11;;;13664:27;;;;13707:12;;;13700:28;;;13744:12;;1200:130:1;13370:392:6;222:173;290:20;;-1:-1:-1;;;;;339:31:6;;329:42;;319:70;;385:1;382;375:12;319:70;222:173;;;:::o;400:127::-;461:10;456:3;452:20;449:1;442:31;492:4;489:1;482:15;516:4;513:1;506:15;532:156;598:20;;658:4;647:16;;637:27;;627:55;;678:1;675;668:12;693:1203;795:6;803;811;819;827;880:3;868:9;859:7;855:23;851:33;848:53;;;897:1;894;887:12;848:53;920:29;939:9;920:29;:::i;:::-;910:39;;1000:2;989:9;985:18;972:32;1023:18;1064:2;1056:6;1053:14;1050:34;;;1080:1;1077;1070:12;1050:34;1118:6;1107:9;1103:22;1093:32;;1163:7;1156:4;1152:2;1148:13;1144:27;1134:55;;1185:1;1182;1175:12;1134:55;1221:2;1208:16;1243:2;1239;1236:10;1233:36;;;1249:18;;:::i;:::-;1324:2;1318:9;1292:2;1378:13;;-1:-1:-1;;1374:22:6;;;1398:2;1370:31;1366:40;1354:53;;;1422:18;;;1442:22;;;1419:46;1416:72;;;1468:18;;:::i;:::-;1508:10;1504:2;1497:22;1543:2;1535:6;1528:18;1583:7;1578:2;1573;1569;1565:11;1561:20;1558:33;1555:53;;;1604:1;1601;1594:12;1555:53;1660:2;1655;1651;1647:11;1642:2;1634:6;1630:15;1617:46;1705:1;1700:2;1695;1687:6;1683:15;1679:24;1672:35;1726:6;1716:16;;;;;;;1779:2;1768:9;1764:18;1751:32;1741:42;;1830:2;1819:9;1815:18;1802:32;1792:42;;1853:37;1885:3;1874:9;1870:19;1853:37;:::i;:::-;1843:47;;693:1203;;;;;;;;:::o;1901:250::-;1986:1;1996:113;2010:6;2007:1;2004:13;1996:113;;;2086:11;;;2080:18;2067:11;;;2060:39;2032:2;2025:10;1996:113;;;-1:-1:-1;;2143:1:6;2125:16;;2118:27;1901:250::o;2156:270::-;2197:3;2235:5;2229:12;2262:6;2257:3;2250:19;2278:76;2347:6;2340:4;2335:3;2331:14;2324:4;2317:5;2313:16;2278:76;:::i;:::-;2408:2;2387:15;-1:-1:-1;;2383:29:6;2374:39;;;;2415:4;2370:50;;2156:270;-1:-1:-1;;2156:270:6:o;2431:217::-;2578:2;2567:9;2560:21;2541:4;2598:44;2638:2;2627:9;2623:18;2615:6;2598:44;:::i;:::-;2590:52;2431:217;-1:-1:-1;;;2431:217:6:o;2653:186::-;2712:6;2765:2;2753:9;2744:7;2740:23;2736:32;2733:52;;;2781:1;2778;2771:12;2733:52;2804:29;2823:9;2804:29;:::i;3026:254::-;3094:6;3102;3155:2;3143:9;3134:7;3130:23;3126:32;3123:52;;;3171:1;3168;3161:12;3123:52;3194:29;3213:9;3194:29;:::i;:::-;3184:39;3270:2;3255:18;;;;3242:32;;-1:-1:-1;;;3026:254:6:o;3285:118::-;3371:5;3364:13;3357:21;3350:5;3347:32;3337:60;;3393:1;3390;3383:12;3408:315;3473:6;3481;3534:2;3522:9;3513:7;3509:23;3505:32;3502:52;;;3550:1;3547;3540:12;3502:52;3573:29;3592:9;3573:29;:::i;:::-;3563:39;;3652:2;3641:9;3637:18;3624:32;3665:28;3687:5;3665:28;:::i;:::-;3712:5;3702:15;;;3408:315;;;;;:::o;3920:328::-;3997:6;4005;4013;4066:2;4054:9;4045:7;4041:23;4037:32;4034:52;;;4082:1;4079;4072:12;4034:52;4105:29;4124:9;4105:29;:::i;:::-;4095:39;;4153:38;4187:2;4176:9;4172:18;4153:38;:::i;:::-;4143:48;;4238:2;4227:9;4223:18;4210:32;4200:42;;3920:328;;;;;:::o;4253:180::-;4312:6;4365:2;4353:9;4344:7;4340:23;4336:32;4333:52;;;4381:1;4378;4371:12;4333:52;-1:-1:-1;4404:23:6;;4253:180;-1:-1:-1;4253:180:6:o;4438:615::-;4524:6;4532;4585:2;4573:9;4564:7;4560:23;4556:32;4553:52;;;4601:1;4598;4591:12;4553:52;4641:9;4628:23;4670:18;4711:2;4703:6;4700:14;4697:34;;;4727:1;4724;4717:12;4697:34;4765:6;4754:9;4750:22;4740:32;;4810:7;4803:4;4799:2;4795:13;4791:27;4781:55;;4832:1;4829;4822:12;4781:55;4872:2;4859:16;4898:2;4890:6;4887:14;4884:34;;;4914:1;4911;4904:12;4884:34;4967:7;4962:2;4952:6;4949:1;4945:14;4941:2;4937:23;4933:32;4930:45;4927:65;;;4988:1;4985;4978:12;4927:65;5019:2;5011:11;;;;;5041:6;;-1:-1:-1;4438:615:6;;-1:-1:-1;;;;4438:615:6:o;5058:404::-;5260:2;5242:21;;;5299:2;5279:18;;;5272:30;5338:34;5333:2;5318:18;;5311:62;-1:-1:-1;;;5404:2:6;5389:18;;5382:38;5452:3;5437:19;;5058:404::o;5467:127::-;5528:10;5523:3;5519:20;5516:1;5509:31;5559:4;5556:1;5549:15;5583:4;5580:1;5573:15;5599:125;5664:9;;;5685:10;;;5682:36;;;5698:18;;:::i;5729:428::-;5886:3;5924:6;5918:13;5940:66;5999:6;5994:3;5987:4;5979:6;5975:17;5940:66;:::i;:::-;6075:2;6071:15;;;;-1:-1:-1;;6067:53:6;6028:16;;;;6053:68;;;6148:2;6137:14;;5729:428;-1:-1:-1;;5729:428:6:o;6162:287::-;6291:3;6329:6;6323:13;6345:66;6404:6;6399:3;6392:4;6384:6;6380:17;6345:66;:::i;:::-;6427:16;;;;;6162:287;-1:-1:-1;;6162:287:6:o;6858:431::-;-1:-1:-1;;;;;7115:15:6;;;7097:34;;7167:15;;7162:2;7147:18;;7140:43;7219:2;7214;7199:18;;7192:30;;;7040:4;;7239:44;;7264:18;;7256:6;7239:44;:::i;:::-;7231:52;6858:431;-1:-1:-1;;;;;6858:431:6:o;7294:354::-;7496:2;7478:21;;;7535:2;7515:18;;;7508:30;7574:32;7569:2;7554:18;;7547:60;7639:2;7624:18;;7294:354::o;7653:349::-;7855:2;7837:21;;;7894:2;7874:18;;;7867:30;7933:27;7928:2;7913:18;;7906:55;7993:2;7978:18;;7653:349::o;8007:350::-;8209:2;8191:21;;;8248:2;8228:18;;;8221:30;8287:28;8282:2;8267:18;;8260:56;8348:2;8333:18;;8007:350::o;9075:127::-;9136:10;9131:3;9127:20;9124:1;9117:31;9167:4;9164:1;9157:15;9191:4;9188:1;9181:15;9207:175;9244:3;9288:4;9281:5;9277:16;9317:4;9308:7;9305:17;9302:43;;9325:18;;:::i;:::-;9374:1;9361:15;;9207:175;-1:-1:-1;;9207:175:6:o;9387:128::-;9454:9;;;9475:11;;;9472:37;;;9489:18;;:::i;10278:184::-;10348:6;10401:2;10389:9;10380:7;10376:23;10372:32;10369:52;;;10417:1;10414;10407:12;10369:52;-1:-1:-1;10440:16:6;;10278:184;-1:-1:-1;10278:184:6:o;10746:245::-;10813:6;10866:2;10854:9;10845:7;10841:23;10837:32;10834:52;;;10882:1;10879;10872:12;10834:52;10914:9;10908:16;10933:28;10955:5;10933:28;:::i
Swarm Source
ipfs://1716ef01dbbf3cd188b8b891e6a1c3e30d3c32ebd25480ff6377adee4e8e7dc9
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.