More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 20220510 | 212 days ago | IN | 0 ETH | 0.00010079 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
21736549 | 23 hrs ago | 0.0000025 ETH | ||||
21736549 | 23 hrs ago | 0.00004749 ETH | ||||
21736546 | 23 hrs ago | 0.00000298 ETH | ||||
21736546 | 23 hrs ago | 0.00005675 ETH | ||||
21733619 | 33 hrs ago | 0.000006 ETH | ||||
21733619 | 33 hrs ago | 0.00011398 ETH | ||||
21726713 | 2 days ago | 0.00000494 ETH | ||||
21726713 | 2 days ago | 0.00009404 ETH | ||||
21712687 | 4 days ago | 0.00028497 ETH | ||||
21697762 | 6 days ago | 0.000005 ETH | ||||
21697762 | 6 days ago | 0.00009499 ETH | ||||
21688843 | 7 days ago | 0.000005 ETH | ||||
21688843 | 7 days ago | 0.00009499 ETH | ||||
21688837 | 7 days ago | 0.00009499 ETH | ||||
21656298 | 12 days ago | 0.00018998 ETH | ||||
21640607 | 14 days ago | 0.0000188 ETH | ||||
21640607 | 14 days ago | 0.00035735 ETH | ||||
21629576 | 15 days ago | 0.000003 ETH | ||||
21629576 | 15 days ago | 0.00005699 ETH | ||||
21629045 | 15 days ago | 0.000005 ETH | ||||
21629045 | 15 days ago | 0.00009499 ETH | ||||
21608391 | 18 days ago | 0.000001 ETH | ||||
21608391 | 18 days ago | 0.00001899 ETH | ||||
21605510 | 19 days ago | 0.000015 ETH | ||||
21605510 | 19 days ago | 0.00028497 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
TxFeeDistributor
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-07-02 */ // SPDX-License-Identifier: MIT //TX Fee distributor contract pragma solidity ^0.8.17; /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; address public voter; event OwnershipRenounced(address indexed previousOwner); event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } modifier onlyVoter() { require(msg.sender == voter); _; } /** * @dev Allows the current owner to relinquish control of the contract. */ function renounceOwnership() public onlyOwner { emit OwnershipRenounced(owner); owner = address(0); } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function transferOwnership(address _newOwner) public onlyOwner { _transferOwnership(_newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function _transferOwnership(address _newOwner) internal { require(_newOwner != address(0)); emit OwnershipTransferred(owner, _newOwner); owner = _newOwner; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); function decimals() external returns (uint8); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } contract TxFeeDistributor is Ownable{ address[] public shareholders; mapping(address => uint256) public shares; // Shares for each shareholder mapping(address => bool) public isShareholder; mapping(address => bool) public whitelisted; uint256 public totalShares; uint256 public totalAmount; event FeeDistributed(address indexed recipient, uint256 amount); event SharesUpdated(address indexed shareholder, uint256 oldShares, uint256 newShares); event ShareholderAdded(address indexed shareholder); event ShareholderRemoved(address indexed shareholder); constructor() { owner = msg.sender; } // Function to set shares for a shareholder function setShares(address _shareHolder, uint256 _share) public onlyOwner { require(_shareHolder != address(0), "Invalid address"); require(_share >= 0 && _share <= 10000, "Invalid share percentage"); if (isShareholder[_shareHolder]) { totalShares = totalShares - shares[_shareHolder] + _share; shares[_shareHolder] = _share; if (_share == 0) { removeShareholder(_shareHolder); } } else { require(_share > 0, "Share must be greater than 0 to add shareholder"); addShareholder(_shareHolder); shares[_shareHolder] = _share; totalShares += _share; } emit SharesUpdated(_shareHolder, shares[_shareHolder], _share); } // Function to edit shares for an existing shareholder function editShares(address shareholder, uint256 newShare) public onlyOwner { require(shareholder != address(0), "Invalid address"); require(newShare >= 0 && newShare <= 10000, "Invalid share percentage"); require(isShareholder[shareholder], "Address is not a shareholder"); uint256 currentShare = shares[shareholder]; if (newShare == 0) { // If the new share is zero, remove the shareholder removeShareholder(shareholder); } else if (currentShare == 0 && newShare > 0) { // If currently no shares and new shares are added, add as shareholder addShareholder(shareholder); } // Update total shares and shareholder's shares totalShares = totalShares - currentShare + newShare; shares[shareholder] = newShare; emit SharesUpdated(shareholder, currentShare, newShare); } // Function to distribute fees among shareholders based on their shares function distributeFees() public { require(whitelisted[msg.sender],"not whitelisted"); uint256 totalReceived = address(this).balance; for (uint i = 0; i < shareholders.length; i++) { uint256 payment = totalReceived * shares[shareholders[i]] / totalShares; (bool distributionSuccess,) = payable(shareholders[i]).call{value:payment}(""); emit FeeDistributed(shareholders[i], payment); } } // Helper functions to manage shareholders function addShareholder(address shareholder) internal { isShareholder[shareholder] = true; shareholders.push(shareholder); emit ShareholderAdded(shareholder); } function removeShareholder(address shareholder) internal { isShareholder[shareholder] = false; for (uint i = 0; i < shareholders.length; i++) { if (shareholders[i] == shareholder) { shareholders[i] = shareholders[shareholders.length - 1]; shareholders.pop(); break; } } emit ShareholderRemoved(shareholder); } function disableHolder(address _holder) public onlyOwner{ require(isShareholder[_holder], "not a holder"); isShareholder[_holder] = false; } function enableHolder(address _holder) public onlyOwner{ require(!isShareholder[_holder], "already a holder"); isShareholder[_holder] = true; } // Emergency withdrawal by owner function emergencyWithdraw() public onlyOwner returns(bool) { uint256 balance = address(this).balance; (bool withdrawSuccess,) = payable(owner).call{value: balance}(""); return withdrawSuccess; } // Emergency withdrawal by owner function emergencyWithdrawTokens(address _token, uint256 _amount) public onlyOwner { IERC20(_token).transfer(owner,_amount); } // View the balance of the contract function getBalance() public view returns (uint256) { return address(this).balance; } function addWhitelist(address _addWhitelistAddress) public onlyOwner { require(!whitelisted[_addWhitelistAddress],"already whitelist addrs"); whitelisted[_addWhitelistAddress] = true; } function removeWhitelist(address _removeWhitelistAddress) public onlyOwner { require(whitelisted[_removeWhitelistAddress],"not whitelist addrs"); whitelisted[_removeWhitelistAddress] = false; } receive() external payable { totalAmount = totalAmount + msg.value; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"FeeDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"shareholder","type":"address"}],"name":"ShareholderAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"shareholder","type":"address"}],"name":"ShareholderRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"shareholder","type":"address"},{"indexed":false,"internalType":"uint256","name":"oldShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newShares","type":"uint256"}],"name":"SharesUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"_addWhitelistAddress","type":"address"}],"name":"addWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"}],"name":"disableHolder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"},{"internalType":"uint256","name":"newShare","type":"uint256"}],"name":"editShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"emergencyWithdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"}],"name":"enableHolder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isShareholder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_removeWhitelistAddress","type":"address"}],"name":"removeWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_shareHolder","type":"address"},{"internalType":"uint256","name":"_share","type":"uint256"}],"name":"setShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shareholders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"voter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b50600080546001600160a01b031933818116919092161717905561118f806100396000396000f3fe6080604052600436106101235760003560e01c8063917bb998116100a0578063d936547e11610064578063d936547e14610341578063db2e21bc14610371578063f2fde38b14610386578063f7a87eb1146103a6578063f80f5dd5146103c657600080fd5b8063917bb9981461027f578063ab377daa1461029f578063b89a73cb146102bf578063bb57ad20146102ff578063ce7c2ac21461031457600080fd5b806349bbbc9f116100e757806349bbbc9f146101ea578063715018a61461020a57806378c8cda71461021f5780638bccbf621461023f5780638da5cb5b1461025f57600080fd5b806312065fe0146101425780631a39d8ef146101645780633a98ef391461017a5780634204c1231461019057806346c96aac146101b257600080fd5b3661013d5734600754610136919061100c565b6007819055005b600080fd5b34801561014e57600080fd5b50475b6040519081526020015b60405180910390f35b34801561017057600080fd5b5061015160075481565b34801561018657600080fd5b5061015160065481565b34801561019c57600080fd5b506101b06101ab366004611041565b6103e6565b005b3480156101be57600080fd5b506001546101d2906001600160a01b031681565b6040516001600160a01b03909116815260200161015b565b3480156101f657600080fd5b506101b0610205366004611041565b61047a565b34801561021657600080fd5b506101b0610511565b34801561022b57600080fd5b506101b061023a366004611041565b610570565b34801561024b57600080fd5b506101b061025a366004611063565b610606565b34801561026b57600080fd5b506000546101d2906001600160a01b031681565b34801561028b57600080fd5b506101b061029a366004611063565b610832565b3480156102ab57600080fd5b506101d26102ba36600461108d565b6108c5565b3480156102cb57600080fd5b506102ef6102da366004611041565b60046020526000908152604090205460ff1681565b604051901515815260200161015b565b34801561030b57600080fd5b506101b06108ef565b34801561032057600080fd5b5061015161032f366004611041565b60036020526000908152604090205481565b34801561034d57600080fd5b506102ef61035c366004611041565b60056020526000908152604090205460ff1681565b34801561037d57600080fd5b506102ef610a8d565b34801561039257600080fd5b506101b06103a1366004611041565b610b02565b3480156103b257600080fd5b506101b06103c1366004611063565b610b25565b3480156103d257600080fd5b506101b06103e1366004611041565b610cfa565b6000546001600160a01b031633146103fd57600080fd5b6001600160a01b03811660009081526004602052604090205460ff166104595760405162461bcd60e51b815260206004820152600c60248201526b3737ba1030903437b63232b960a11b60448201526064015b60405180910390fd5b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b0316331461049157600080fd5b6001600160a01b03811660009081526004602052604090205460ff16156104ed5760405162461bcd60e51b815260206004820152601060248201526f30b63932b0b23c9030903437b63232b960811b6044820152606401610450565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b0316331461052857600080fd5b600080546040516001600160a01b03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a2600080546001600160a01b0319169055565b6000546001600160a01b0316331461058757600080fd5b6001600160a01b03811660009081526005602052604090205460ff166105e55760405162461bcd60e51b81526020600482015260136024820152726e6f742077686974656c69737420616464727360681b6044820152606401610450565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b0316331461061d57600080fd5b6001600160a01b0382166106655760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610450565b6127108111156106b25760405162461bcd60e51b8152602060048201526018602482015277496e76616c69642073686172652070657263656e7461676560401b6044820152606401610450565b6001600160a01b03821660009081526004602052604090205460ff1615610737576001600160a01b03821660009081526003602052604090205460065482916106fa916110a6565b610704919061100c565b6006556001600160a01b03821660009081526003602052604081208290558190036107325761073282610d9e565b6107db565b6000811161079f5760405162461bcd60e51b815260206004820152602f60248201527f5368617265206d7573742062652067726561746572207468616e203020746f2060448201526e30b2321039b430b932b437b63232b960891b6064820152608401610450565b6107a882610efc565b6001600160a01b0382166000908152600360205260408120829055600680548392906107d590849061100c565b90915550505b6001600160a01b0382166000818152600360209081526040918290205482519081529081018490527fca7b0799c2d5d6426b3acee9b38a5097d47bf400d836961c2d90472a85ab35fe910160405180910390a25050565b6000546001600160a01b0316331461084957600080fd5b60005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af115801561089c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c091906110b9565b505050565b600281815481106108d557600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526005602052604090205460ff166109405760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b6044820152606401610450565b4760005b600254811015610a89576000600654600360006002858154811061096a5761096a6110db565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461099990856110f1565b6109a39190611108565b90506000600283815481106109ba576109ba6110db565b60009182526020822001546040516001600160a01b039091169184919081818185875af1925050503d8060008114610a0e576040519150601f19603f3d011682016040523d82523d6000602084013e610a13565b606091505b5050905060028381548110610a2a57610a2a6110db565b600091825260209182902001546040518481526001600160a01b03909116917f6c461460f28af1386f23dc4c0c7f4e2e54f0db320a8edc08803e4b787f6db325910160405180910390a250508080610a819061112a565b915050610944565b5050565b600080546001600160a01b03163314610aa557600080fd5b600080546040514792916001600160a01b03169083908381818185875af1925050503d8060008114610af3576040519150601f19603f3d011682016040523d82523d6000602084013e610af8565b606091505b5090935050505090565b6000546001600160a01b03163314610b1957600080fd5b610b2281610f88565b50565b6000546001600160a01b03163314610b3c57600080fd5b6001600160a01b038216610b845760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610450565b612710811115610bd15760405162461bcd60e51b8152602060048201526018602482015277496e76616c69642073686172652070657263656e7461676560401b6044820152606401610450565b6001600160a01b03821660009081526004602052604090205460ff16610c395760405162461bcd60e51b815260206004820152601c60248201527f41646472657373206973206e6f742061207368617265686f6c646572000000006044820152606401610450565b6001600160a01b03821660009081526003602052604081205490829003610c6857610c6383610d9e565b610c84565b80158015610c765750600082115b15610c8457610c8483610efc565b8181600654610c9391906110a6565b610c9d919061100c565b6006556001600160a01b03831660008181526003602090815260409182902085905581518481529081018590527fca7b0799c2d5d6426b3acee9b38a5097d47bf400d836961c2d90472a85ab35fe910160405180910390a2505050565b6000546001600160a01b03163314610d1157600080fd5b6001600160a01b03811660009081526005602052604090205460ff1615610d7a5760405162461bcd60e51b815260206004820152601760248201527f616c72656164792077686974656c6973742061646472730000000000000000006044820152606401610450565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6001600160a01b0381166000908152600460205260408120805460ff191690555b600254811015610ec457816001600160a01b031660028281548110610de657610de66110db565b6000918252602090912001546001600160a01b031603610eb25760028054610e10906001906110a6565b81548110610e2057610e206110db565b600091825260209091200154600280546001600160a01b039092169183908110610e4c57610e4c6110db565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506002805480610e8b57610e8b611143565b600082815260209020810160001990810180546001600160a01b0319169055019055610ec4565b80610ebc8161112a565b915050610dbf565b506040516001600160a01b038216907f7ba114ff3d9844510a088eea94cd35562e7c97a2d36a418b37b2e61e5c77affe90600090a250565b6001600160a01b038116600081815260046020526040808220805460ff1916600190811790915560028054918201815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b03191684179055517f3082c1c4977de80c4f67ee77b56b282610ec93a7ecbcc31b551e0ac2f7bd03959190a250565b6001600160a01b038116610f9b57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052601160045260246000fd5b8082018082111561101f5761101f610ff6565b92915050565b80356001600160a01b038116811461103c57600080fd5b919050565b60006020828403121561105357600080fd5b61105c82611025565b9392505050565b6000806040838503121561107657600080fd5b61107f83611025565b946020939093013593505050565b60006020828403121561109f57600080fd5b5035919050565b8181038181111561101f5761101f610ff6565b6000602082840312156110cb57600080fd5b8151801515811461105c57600080fd5b634e487b7160e01b600052603260045260246000fd5b808202811582820484141761101f5761101f610ff6565b60008261112557634e487b7160e01b600052601260045260246000fd5b500490565b60006001820161113c5761113c610ff6565b5060010190565b634e487b7160e01b600052603160045260246000fdfea264697066735822122054b26225147e14966e0309ac14cfd7687ad2e0ae5b05d2c050b20945812863c664736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101235760003560e01c8063917bb998116100a0578063d936547e11610064578063d936547e14610341578063db2e21bc14610371578063f2fde38b14610386578063f7a87eb1146103a6578063f80f5dd5146103c657600080fd5b8063917bb9981461027f578063ab377daa1461029f578063b89a73cb146102bf578063bb57ad20146102ff578063ce7c2ac21461031457600080fd5b806349bbbc9f116100e757806349bbbc9f146101ea578063715018a61461020a57806378c8cda71461021f5780638bccbf621461023f5780638da5cb5b1461025f57600080fd5b806312065fe0146101425780631a39d8ef146101645780633a98ef391461017a5780634204c1231461019057806346c96aac146101b257600080fd5b3661013d5734600754610136919061100c565b6007819055005b600080fd5b34801561014e57600080fd5b50475b6040519081526020015b60405180910390f35b34801561017057600080fd5b5061015160075481565b34801561018657600080fd5b5061015160065481565b34801561019c57600080fd5b506101b06101ab366004611041565b6103e6565b005b3480156101be57600080fd5b506001546101d2906001600160a01b031681565b6040516001600160a01b03909116815260200161015b565b3480156101f657600080fd5b506101b0610205366004611041565b61047a565b34801561021657600080fd5b506101b0610511565b34801561022b57600080fd5b506101b061023a366004611041565b610570565b34801561024b57600080fd5b506101b061025a366004611063565b610606565b34801561026b57600080fd5b506000546101d2906001600160a01b031681565b34801561028b57600080fd5b506101b061029a366004611063565b610832565b3480156102ab57600080fd5b506101d26102ba36600461108d565b6108c5565b3480156102cb57600080fd5b506102ef6102da366004611041565b60046020526000908152604090205460ff1681565b604051901515815260200161015b565b34801561030b57600080fd5b506101b06108ef565b34801561032057600080fd5b5061015161032f366004611041565b60036020526000908152604090205481565b34801561034d57600080fd5b506102ef61035c366004611041565b60056020526000908152604090205460ff1681565b34801561037d57600080fd5b506102ef610a8d565b34801561039257600080fd5b506101b06103a1366004611041565b610b02565b3480156103b257600080fd5b506101b06103c1366004611063565b610b25565b3480156103d257600080fd5b506101b06103e1366004611041565b610cfa565b6000546001600160a01b031633146103fd57600080fd5b6001600160a01b03811660009081526004602052604090205460ff166104595760405162461bcd60e51b815260206004820152600c60248201526b3737ba1030903437b63232b960a11b60448201526064015b60405180910390fd5b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b0316331461049157600080fd5b6001600160a01b03811660009081526004602052604090205460ff16156104ed5760405162461bcd60e51b815260206004820152601060248201526f30b63932b0b23c9030903437b63232b960811b6044820152606401610450565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b0316331461052857600080fd5b600080546040516001600160a01b03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a2600080546001600160a01b0319169055565b6000546001600160a01b0316331461058757600080fd5b6001600160a01b03811660009081526005602052604090205460ff166105e55760405162461bcd60e51b81526020600482015260136024820152726e6f742077686974656c69737420616464727360681b6044820152606401610450565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b0316331461061d57600080fd5b6001600160a01b0382166106655760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610450565b6127108111156106b25760405162461bcd60e51b8152602060048201526018602482015277496e76616c69642073686172652070657263656e7461676560401b6044820152606401610450565b6001600160a01b03821660009081526004602052604090205460ff1615610737576001600160a01b03821660009081526003602052604090205460065482916106fa916110a6565b610704919061100c565b6006556001600160a01b03821660009081526003602052604081208290558190036107325761073282610d9e565b6107db565b6000811161079f5760405162461bcd60e51b815260206004820152602f60248201527f5368617265206d7573742062652067726561746572207468616e203020746f2060448201526e30b2321039b430b932b437b63232b960891b6064820152608401610450565b6107a882610efc565b6001600160a01b0382166000908152600360205260408120829055600680548392906107d590849061100c565b90915550505b6001600160a01b0382166000818152600360209081526040918290205482519081529081018490527fca7b0799c2d5d6426b3acee9b38a5097d47bf400d836961c2d90472a85ab35fe910160405180910390a25050565b6000546001600160a01b0316331461084957600080fd5b60005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af115801561089c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c091906110b9565b505050565b600281815481106108d557600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526005602052604090205460ff166109405760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b6044820152606401610450565b4760005b600254811015610a89576000600654600360006002858154811061096a5761096a6110db565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461099990856110f1565b6109a39190611108565b90506000600283815481106109ba576109ba6110db565b60009182526020822001546040516001600160a01b039091169184919081818185875af1925050503d8060008114610a0e576040519150601f19603f3d011682016040523d82523d6000602084013e610a13565b606091505b5050905060028381548110610a2a57610a2a6110db565b600091825260209182902001546040518481526001600160a01b03909116917f6c461460f28af1386f23dc4c0c7f4e2e54f0db320a8edc08803e4b787f6db325910160405180910390a250508080610a819061112a565b915050610944565b5050565b600080546001600160a01b03163314610aa557600080fd5b600080546040514792916001600160a01b03169083908381818185875af1925050503d8060008114610af3576040519150601f19603f3d011682016040523d82523d6000602084013e610af8565b606091505b5090935050505090565b6000546001600160a01b03163314610b1957600080fd5b610b2281610f88565b50565b6000546001600160a01b03163314610b3c57600080fd5b6001600160a01b038216610b845760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610450565b612710811115610bd15760405162461bcd60e51b8152602060048201526018602482015277496e76616c69642073686172652070657263656e7461676560401b6044820152606401610450565b6001600160a01b03821660009081526004602052604090205460ff16610c395760405162461bcd60e51b815260206004820152601c60248201527f41646472657373206973206e6f742061207368617265686f6c646572000000006044820152606401610450565b6001600160a01b03821660009081526003602052604081205490829003610c6857610c6383610d9e565b610c84565b80158015610c765750600082115b15610c8457610c8483610efc565b8181600654610c9391906110a6565b610c9d919061100c565b6006556001600160a01b03831660008181526003602090815260409182902085905581518481529081018590527fca7b0799c2d5d6426b3acee9b38a5097d47bf400d836961c2d90472a85ab35fe910160405180910390a2505050565b6000546001600160a01b03163314610d1157600080fd5b6001600160a01b03811660009081526005602052604090205460ff1615610d7a5760405162461bcd60e51b815260206004820152601760248201527f616c72656164792077686974656c6973742061646472730000000000000000006044820152606401610450565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6001600160a01b0381166000908152600460205260408120805460ff191690555b600254811015610ec457816001600160a01b031660028281548110610de657610de66110db565b6000918252602090912001546001600160a01b031603610eb25760028054610e10906001906110a6565b81548110610e2057610e206110db565b600091825260209091200154600280546001600160a01b039092169183908110610e4c57610e4c6110db565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506002805480610e8b57610e8b611143565b600082815260209020810160001990810180546001600160a01b0319169055019055610ec4565b80610ebc8161112a565b915050610dbf565b506040516001600160a01b038216907f7ba114ff3d9844510a088eea94cd35562e7c97a2d36a418b37b2e61e5c77affe90600090a250565b6001600160a01b038116600081815260046020526040808220805460ff1916600190811790915560028054918201815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b03191684179055517f3082c1c4977de80c4f67ee77b56b282610ec93a7ecbcc31b551e0ac2f7bd03959190a250565b6001600160a01b038116610f9b57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052601160045260246000fd5b8082018082111561101f5761101f610ff6565b92915050565b80356001600160a01b038116811461103c57600080fd5b919050565b60006020828403121561105357600080fd5b61105c82611025565b9392505050565b6000806040838503121561107657600080fd5b61107f83611025565b946020939093013593505050565b60006020828403121561109f57600080fd5b5035919050565b8181038181111561101f5761101f610ff6565b6000602082840312156110cb57600080fd5b8151801515811461105c57600080fd5b634e487b7160e01b600052603260045260246000fd5b808202811582820484141761101f5761101f610ff6565b60008261112557634e487b7160e01b600052601260045260246000fd5b500490565b60006001820161113c5761113c610ff6565b5060010190565b634e487b7160e01b600052603160045260246000fdfea264697066735822122054b26225147e14966e0309ac14cfd7687ad2e0ae5b05d2c050b20945812863c664736f6c63430008110033
Deployed Bytecode Sourcemap
2486:5251:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7715:9;7701:11;;:23;;;;:::i;:::-;7687:11;:37;;;;2486:5251;;;;7090:99;;;;;;;;;;-1:-1:-1;7160:21:0;7090:99;;;422:25:1;;;410:2;395:18;7090:99:0;;;;;;;;2780:26;;;;;;;;;;;;;;;;2747;;;;;;;;;;;;;;;;6241:167;;;;;;;;;;-1:-1:-1;6241:167:0;;;;;:::i;:::-;;:::i;:::-;;338:20;;;;;;;;;;-1:-1:-1;338:20:0;;;;-1:-1:-1;;;;;338:20:0;;;;;;-1:-1:-1;;;;;991:32:1;;;973:51;;961:2;946:18;338:20:0;827:203:1;6414:170:0;;;;;;;;;;-1:-1:-1;6414:170:0;;;;;:::i;:::-;;:::i;1089:124::-;;;;;;;;;;;;;:::i;7419:222::-;;;;;;;;;;-1:-1:-1;7419:222:0;;;;;:::i;:::-;;:::i;3206:796::-;;;;;;;;;;-1:-1:-1;3206:796:0;;;;;:::i;:::-;;:::i;311:20::-;;;;;;;;;;-1:-1:-1;311:20:0;;;;-1:-1:-1;;;;;311:20:0;;;6899:144;;;;;;;;;;-1:-1:-1;6899:144:0;;;;;:::i;:::-;;:::i;2529:29::-;;;;;;;;;;-1:-1:-1;2529:29:0;;;;;:::i;:::-;;:::i;2645:45::-;;;;;;;;;;-1:-1:-1;2645:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1644:14:1;;1637:22;1619:41;;1607:2;1592:18;2645:45:0;1479:187:1;5082:468:0;;;;;;;;;;;;;:::i;2565:41::-;;;;;;;;;;-1:-1:-1;2565:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;2697:43;;;;;;;;;;-1:-1:-1;2697:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6628:227;;;;;;;;;;;;;:::i;1391:111::-;;;;;;;;;;-1:-1:-1;1391:111:0;;;;;:::i;:::-;;:::i;4066:927::-;;;;;;;;;;-1:-1:-1;4066:927:0;;;;;:::i;:::-;;:::i;7197:214::-;;;;;;;;;;-1:-1:-1;7197:214:0;;;;;:::i;:::-;;:::i;6241:167::-;874:5;;-1:-1:-1;;;;;874:5:0;860:10;:19;852:28;;;;;;-1:-1:-1;;;;;6318:22:0;::::1;;::::0;;;:13:::1;:22;::::0;;;;;::::1;;6310:47;;;::::0;-1:-1:-1;;;6310:47:0;;1873:2:1;6310:47:0::1;::::0;::::1;1855:21:1::0;1912:2;1892:18;;;1885:30;-1:-1:-1;;;1931:18:1;;;1924:42;1983:18;;6310:47:0::1;;;;;;;;;-1:-1:-1::0;;;;;6368:22:0::1;6393:5;6368:22:::0;;;:13:::1;:22;::::0;;;;:30;;-1:-1:-1;;6368:30:0::1;::::0;;6241:167::o;6414:170::-;874:5;;-1:-1:-1;;;;;874:5:0;860:10;:19;852:28;;;;;;-1:-1:-1;;;;;6491:22:0;::::1;;::::0;;;:13:::1;:22;::::0;;;;;::::1;;6490:23;6482:52;;;::::0;-1:-1:-1;;;6482:52:0;;2214:2:1;6482:52:0::1;::::0;::::1;2196:21:1::0;2253:2;2233:18;;;2226:30;-1:-1:-1;;;2272:18:1;;;2265:46;2328:18;;6482:52:0::1;2012:340:1::0;6482:52:0::1;-1:-1:-1::0;;;;;6545:22:0::1;;::::0;;;:13:::1;:22;::::0;;;;:29;;-1:-1:-1;;6545:29:0::1;6570:4;6545:29;::::0;;6414:170::o;1089:124::-;874:5;;-1:-1:-1;;;;;874:5:0;860:10;:19;852:28;;;;;;1170:5:::1;::::0;;1151:25:::1;::::0;-1:-1:-1;;;;;1170:5:0;;::::1;::::0;1151:25:::1;::::0;::::1;1203:1;1187:18:::0;;-1:-1:-1;;;;;;1187:18:0::1;::::0;;1089:124::o;7419:222::-;874:5;;-1:-1:-1;;;;;874:5:0;860:10;:19;852:28;;;;;;-1:-1:-1;;;;;7515:36:0;::::1;;::::0;;;:11:::1;:36;::::0;;;;;::::1;;7507:67;;;::::0;-1:-1:-1;;;7507:67:0;;2559:2:1;7507:67:0::1;::::0;::::1;2541:21:1::0;2598:2;2578:18;;;2571:30;-1:-1:-1;;;2617:18:1;;;2610:49;2676:18;;7507:67:0::1;2357:343:1::0;7507:67:0::1;-1:-1:-1::0;;;;;7585:36:0::1;7624:5;7585:36:::0;;;:11:::1;:36;::::0;;;;:44;;-1:-1:-1;;7585:44:0::1;::::0;;7419:222::o;3206:796::-;874:5;;-1:-1:-1;;;;;874:5:0;860:10;:19;852:28;;;;;;-1:-1:-1;;;;;3299:26:0;::::1;3291:54;;;::::0;-1:-1:-1;;;3291:54:0;;2907:2:1;3291:54:0::1;::::0;::::1;2889:21:1::0;2946:2;2926:18;;;2919:30;-1:-1:-1;;;2965:18:1;;;2958:45;3020:18;;3291:54:0::1;2705:339:1::0;3291:54:0::1;3389:5;3379:6;:15;;3356:67;;;::::0;-1:-1:-1;;;3356:67:0;;3251:2:1;3356:67:0::1;::::0;::::1;3233:21:1::0;3290:2;3270:18;;;3263:30;-1:-1:-1;;;3309:18:1;;;3302:54;3373:18;;3356:67:0::1;3049:348:1::0;3356:67:0::1;-1:-1:-1::0;;;;;3440:27:0;::::1;;::::0;;;:13:::1;:27;::::0;;;;;::::1;;3436:484;;;-1:-1:-1::0;;;;;3512:20:0;::::1;;::::0;;;:6:::1;:20;::::0;;;;;3498:11:::1;::::0;3535:6;;3498:34:::1;::::0;::::1;:::i;:::-;:43;;;;:::i;:::-;3484:11;:57:::0;-1:-1:-1;;;;;3556:20:0;::::1;;::::0;;;:6:::1;:20;::::0;;;;:29;;;3604:11;;;3600:83:::1;;3636:31;3654:12;3636:17;:31::i;:::-;3436:484;;;3732:1;3723:6;:10;3715:70;;;::::0;-1:-1:-1;;;3715:70:0;;3737:2:1;3715:70:0::1;::::0;::::1;3719:21:1::0;3776:2;3756:18;;;3749:30;3815:34;3795:18;;;3788:62;-1:-1:-1;;;3866:18:1;;;3859:45;3921:19;;3715:70:0::1;3535:411:1::0;3715:70:0::1;3800:28;3815:12;3800:14;:28::i;:::-;-1:-1:-1::0;;;;;3843:20:0;::::1;;::::0;;;:6:::1;:20;::::0;;;;:29;;;3887:11:::1;:21:::0;;3866:6;;3843:20;3887:21:::1;::::0;3866:6;;3887:21:::1;:::i;:::-;::::0;;;-1:-1:-1;;3436:484:0::1;-1:-1:-1::0;;;;;3937:57:0;::::1;3965:20;::::0;;;:6:::1;:20;::::0;;;;;;;;;3937:57;;4125:25:1;;;4166:18;;;4159:34;;;3937:57:0::1;::::0;4098:18:1;3937:57:0::1;;;;;;;3206:796:::0;;:::o;6899:144::-;874:5;;-1:-1:-1;;;;;874:5:0;860:10;:19;852:28;;;;;;7019:5:::1;::::0;6995:38:::1;::::0;-1:-1:-1;;;6995:38:0;;-1:-1:-1;;;;;7019:5:0;;::::1;6995:38;::::0;::::1;4378:51:1::0;4445:18;;;4438:34;;;6995:23:0;;::::1;::::0;::::1;::::0;4351:18:1;;6995:38:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6899:144:::0;;:::o;2529:29::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2529:29:0;;-1:-1:-1;2529:29:0;:::o;5082:468::-;5146:10;5134:23;;;;:11;:23;;;;;;;;5126:50;;;;-1:-1:-1;;;5126:50:0;;4967:2:1;5126:50:0;;;4949:21:1;5006:2;4986:18;;;4979:30;-1:-1:-1;;;5025:18:1;;;5018:45;5080:18;;5126:50:0;4765:339:1;5126:50:0;5211:21;5187;5245:298;5266:12;:19;5262:23;;5245:298;;;5307:15;5367:11;;5341:6;:23;5348:12;5361:1;5348:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;5348:15:0;5341:23;;;;;;;;;;;;;5325:39;;:13;:39;:::i;:::-;:53;;;;:::i;:::-;5307:71;;5394:24;5431:12;5444:1;5431:15;;;;;;;;:::i;:::-;;;;;;;;;;5423:48;;-1:-1:-1;;;;;5431:15:0;;;;5459:7;;5423:48;;5431:15;5423:48;5459:7;5431:15;5423:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5393:78;;;5506:12;5519:1;5506:15;;;;;;;;:::i;:::-;;;;;;;;;;;;5491:40;;422:25:1;;;-1:-1:-1;;;;;5506:15:0;;;;5491:40;;395:18:1;5491:40:0;;;;;;;5292:251;;5287:3;;;;;:::i;:::-;;;;5245:298;;;;5115:435;5082:468::o;6628:227::-;6682:4;874:5;;-1:-1:-1;;;;;874:5:0;860:10;:19;852:28;;;;;;6699:15:::1;6783:5:::0;;6775:39:::1;::::0;6717:21:::1;::::0;6699:15;-1:-1:-1;;;;;6783:5:0::1;::::0;6717:21;;6699:15;6775:39;6699:15;6775:39;6717:21;6783:5;6775:39:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;6749:65:0;;-1:-1:-1;;;;6628:227:0;:::o;1391:111::-;874:5;;-1:-1:-1;;;;;874:5:0;860:10;:19;852:28;;;;;;1465:29:::1;1484:9;1465:18;:29::i;:::-;1391:111:::0;:::o;4066:927::-;874:5;;-1:-1:-1;;;;;874:5:0;860:10;:19;852:28;;;;;;-1:-1:-1;;;;;4161:25:0;::::1;4153:53;;;::::0;-1:-1:-1;;;4153:53:0;;2907:2:1;4153:53:0::1;::::0;::::1;2889:21:1::0;2946:2;2926:18;;;2919:30;-1:-1:-1;;;2965:18:1;;;2958:45;3020:18;;4153:53:0::1;2705:339:1::0;4153:53:0::1;4254:5;4242:8;:17;;4217:71;;;::::0;-1:-1:-1;;;4217:71:0;;3251:2:1;4217:71:0::1;::::0;::::1;3233:21:1::0;3290:2;3270:18;;;3263:30;-1:-1:-1;;;3309:18:1;;;3302:54;3373:18;;4217:71:0::1;3049:348:1::0;4217:71:0::1;-1:-1:-1::0;;;;;4307:26:0;::::1;;::::0;;;:13:::1;:26;::::0;;;;;::::1;;4299:67;;;::::0;-1:-1:-1;;;4299:67:0;;6188:2:1;4299:67:0::1;::::0;::::1;6170:21:1::0;6227:2;6207:18;;;6200:30;6266;6246:18;;;6239:58;6314:18;;4299:67:0::1;5986:352:1::0;4299:67:0::1;-1:-1:-1::0;;;;;4402:19:0;::::1;4379:20;4402:19:::0;;;:6:::1;:19;::::0;;;;;;4436:13;;;4432:324:::1;;4531:30;4549:11;4531:17;:30::i;:::-;4432:324;;;4583:17:::0;;:33;::::1;;;;4615:1;4604:8;:12;4583:33;4579:177;;;4717:27;4732:11;4717:14;:27::i;:::-;4868:8;4853:12;4839:11;;:26;;;;:::i;:::-;:37;;;;:::i;:::-;4825:11;:51:::0;-1:-1:-1;;;;;4887:19:0;::::1;;::::0;;;:6:::1;:19;::::0;;;;;;;;:30;;;4935:50;;4125:25:1;;;4166:18;;;4159:34;;;4935:50:0::1;::::0;4098:18:1;4935:50:0::1;;;;;;;4142:851;4066:927:::0;;:::o;7197:214::-;874:5;;-1:-1:-1;;;;;874:5:0;860:10;:19;852:28;;;;;;-1:-1:-1;;;;;7288:33:0;::::1;;::::0;;;:11:::1;:33;::::0;;;;;::::1;;7287:34;7279:69;;;::::0;-1:-1:-1;;;7279:69:0;;6545:2:1;7279:69:0::1;::::0;::::1;6527:21:1::0;6584:2;6564:18;;;6557:30;6623:25;6603:18;;;6596:53;6666:18;;7279:69:0::1;6343:347:1::0;7279:69:0::1;-1:-1:-1::0;;;;;7359:33:0::1;;::::0;;;:11:::1;:33;::::0;;;;:40;;-1:-1:-1;;7359:40:0::1;7395:4;7359:40;::::0;;7197:214::o;5806:427::-;-1:-1:-1;;;;;5874:26:0;;5903:5;5874:26;;;:13;:26;;;;;:34;;-1:-1:-1;;5874:34:0;;;5919:260;5940:12;:19;5936:23;;5919:260;;;6004:11;-1:-1:-1;;;;;5985:30:0;:12;5998:1;5985:15;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;5985:15:0;:30;5981:187;;6054:12;6067:19;;:23;;6089:1;;6067:23;:::i;:::-;6054:37;;;;;;;;:::i;:::-;;;;;;;;;;;6036:12;:15;;-1:-1:-1;;;;;6054:37:0;;;;6049:1;;6036:15;;;;;;:::i;:::-;;;;;;;;;:55;;;;;-1:-1:-1;;;;;6036:55:0;;;;;-1:-1:-1;;;;;6036:55:0;;;;;;6110:12;:18;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;6110:18:0;;;;;-1:-1:-1;;;;;;6110:18:0;;;;;;6147:5;;5981:187;5961:3;;;;:::i;:::-;;;;5919:260;;;-1:-1:-1;6194:31:0;;-1:-1:-1;;;;;6194:31:0;;;;;;;;5806:427;:::o;5606:192::-;-1:-1:-1;;;;;5671:26:0;;;;;;:13;:26;;;;;;:33;;-1:-1:-1;;5671:33:0;5700:4;5671:33;;;;;;5715:12;:30;;;;;;;;;;;;;-1:-1:-1;;;;;;5715:30:0;;;;;5761:29;;;5671:26;5761:29;5606:192;:::o;1653:189::-;-1:-1:-1;;;;;1728:23:0;;1720:32;;;;;;1789:5;;;1768:38;;-1:-1:-1;;;;;1768:38:0;;;;1789:5;;;1768:38;;;1817:5;:17;;-1:-1:-1;;;;;;1817:17:0;-1:-1:-1;;;;;1817:17:0;;;;;;;;;;1653:189::o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:125;211:9;;;232:10;;;229:36;;;245:18;;:::i;:::-;146:125;;;;:::o;458:173::-;526:20;;-1:-1:-1;;;;;575:31:1;;565:42;;555:70;;621:1;618;611:12;555:70;458:173;;;:::o;636:186::-;695:6;748:2;736:9;727:7;723:23;719:32;716:52;;;764:1;761;754:12;716:52;787:29;806:9;787:29;:::i;:::-;777:39;636:186;-1:-1:-1;;;636:186:1:o;1035:254::-;1103:6;1111;1164:2;1152:9;1143:7;1139:23;1135:32;1132:52;;;1180:1;1177;1170:12;1132:52;1203:29;1222:9;1203:29;:::i;:::-;1193:39;1279:2;1264:18;;;;1251:32;;-1:-1:-1;;;1035:254:1:o;1294:180::-;1353:6;1406:2;1394:9;1385:7;1381:23;1377:32;1374:52;;;1422:1;1419;1412:12;1374:52;-1:-1:-1;1445:23:1;;1294:180;-1:-1:-1;1294:180:1:o;3402:128::-;3469:9;;;3490:11;;;3487:37;;;3504:18;;:::i;4483:277::-;4550:6;4603:2;4591:9;4582:7;4578:23;4574:32;4571:52;;;4619:1;4616;4609:12;4571:52;4651:9;4645:16;4704:5;4697:13;4690:21;4683:5;4680:32;4670:60;;4726:1;4723;4716:12;5109:127;5170:10;5165:3;5161:20;5158:1;5151:31;5201:4;5198:1;5191:15;5225:4;5222:1;5215:15;5241:168;5314:9;;;5345;;5362:15;;;5356:22;;5342:37;5332:71;;5383:18;;:::i;5414:217::-;5454:1;5480;5470:132;;5524:10;5519:3;5515:20;5512:1;5505:31;5559:4;5556:1;5549:15;5587:4;5584:1;5577:15;5470:132;-1:-1:-1;5616:9:1;;5414:217::o;5846:135::-;5885:3;5906:17;;;5903:43;;5926:18;;:::i;:::-;-1:-1:-1;5973:1:1;5962:13;;5846:135::o;6695:127::-;6756:10;6751:3;6747:20;6744:1;6737:31;6787:4;6784:1;6777:15;6811:4;6808:1;6801:15
Swarm Source
ipfs://54b26225147e14966e0309ac14cfd7687ad2e0ae5b05d2c050b20945812863c6
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.