ERC-20
Precious Metals
Overview
Max Total Supply
300,000 KVT
Holders
663 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 0 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
KinesisVelocityToken
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-09-06 */ pragma solidity ^0.4.24; // produced by the Solididy File Flattener (c) David Appleton 2018 // contact : [email protected] // released under Apache 2.0 licence contract ERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { // Gas optimization: this is cheaper than asserting 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 // uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return a / b; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; assert(c >= a); return c; } } contract Ownable { address public owner; 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() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to relinquish control of the contract. * @notice Renouncing to ownership will leave the contract without an owner. * It will not be possible to call the functions with the `onlyOwner` * modifier anymore. */ 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; } } library Roles { struct Role { mapping (address => bool) bearer; } /** * @dev give an address access to this role */ function add(Role storage role, address addr) internal { role.bearer[addr] = true; } /** * @dev remove an address' access to this role */ function remove(Role storage role, address addr) internal { role.bearer[addr] = false; } /** * @dev check if an address has this role * // reverts */ function check(Role storage role, address addr) view internal { require(has(role, addr)); } /** * @dev check if an address has this role * @return bool */ function has(Role storage role, address addr) view internal returns (bool) { return role.bearer[addr]; } } contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) balances; uint256 totalSupply_; /** * @dev Total number of tokens in existence */ function totalSupply() public view returns (uint256) { return totalSupply_; } /** * @dev Transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[msg.sender]); balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public view returns (uint256) { return balances[_owner]; } } contract MultiSigTransfer is Ownable { string public name = "MultiSigTransfer"; string public symbol = "MST"; bool public complete = false; bool public denied = false; uint32 public quantity; address public targetAddress; address public requesterAddress; /** * @dev The multisig transfer contract ensures that no single administrator can * KVTs without approval of another administrator * @param _quantity The number of KVT to transfer * @param _targetAddress The receiver of the KVTs * @param _requesterAddress The administrator requesting the transfer */ constructor( uint32 _quantity, address _targetAddress, address _requesterAddress ) public { quantity = _quantity; targetAddress = _targetAddress; requesterAddress = _requesterAddress; } /** * @dev Mark the transfer as approved / complete */ function approveTransfer() public onlyOwner { require(denied == false, "cannot approve a denied transfer"); require(complete == false, "cannot approve a complete transfer"); complete = true; } /** * @dev Mark the transfer as denied */ function denyTransfer() public onlyOwner { require(denied == false, "cannot deny a transfer that is already denied"); denied = true; } /** * @dev Determine if the transfer is pending */ function isPending() public view returns (bool) { return !complete; } } contract RBAC { using Roles for Roles.Role; mapping (string => Roles.Role) private roles; event RoleAdded(address indexed operator, string role); event RoleRemoved(address indexed operator, string role); /** * @dev reverts if addr does not have role * @param _operator address * @param _role the name of the role * // reverts */ function checkRole(address _operator, string _role) view public { roles[_role].check(_operator); } /** * @dev determine if addr has role * @param _operator address * @param _role the name of the role * @return bool */ function hasRole(address _operator, string _role) view public returns (bool) { return roles[_role].has(_operator); } /** * @dev add a role to an address * @param _operator address * @param _role the name of the role */ function addRole(address _operator, string _role) internal { roles[_role].add(_operator); emit RoleAdded(_operator, _role); } /** * @dev remove a role from an address * @param _operator address * @param _role the name of the role */ function removeRole(address _operator, string _role) internal { roles[_role].remove(_operator); emit RoleRemoved(_operator, _role); } /** * @dev modifier to scope access to a single role (uses msg.sender as addr) * @param _role the name of the role * // reverts */ modifier onlyRole(string _role) { checkRole(msg.sender, _role); _; } /** * @dev modifier to scope access to a set of roles (uses msg.sender as addr) * @param _roles the names of the roles to scope access to * // reverts * * @TODO - when solidity supports dynamic arrays as arguments to modifiers, provide this * see: https://github.com/ethereum/solidity/issues/2467 */ // modifier onlyRoles(string[] _roles) { // bool hasAnyRole = false; // for (uint8 i = 0; i < _roles.length; i++) { // if (hasRole(msg.sender, _roles[i])) { // hasAnyRole = true; // break; // } // } // require(hasAnyRole); // _; // } } contract KinesisVelocityToken is BasicToken, Ownable, RBAC { string public name = "KinesisVelocityToken"; string public symbol = "KVT"; uint8 public decimals = 0; string public constant ADMIN_ROLE = "ADMIN"; address[] public transfers; uint public constant INITIAL_SUPPLY = 300000; uint public totalSupply = 0; bool public isTransferable = false; bool public toggleTransferablePending = false; address public transferToggleRequester = address(0); constructor() public { totalSupply = INITIAL_SUPPLY; balances[msg.sender] = INITIAL_SUPPLY; addRole(msg.sender, ADMIN_ROLE); } /** * @dev Determine if the address is the owner of the contract * @param _address The address to determine of ownership */ function isOwner(address _address) public view returns (bool) { return owner == _address; } /** * @dev Returns the list of MultiSig transfers */ function getTransfers() public view returns (address[]) { return transfers; } /** * @dev The KVT ERC20 token uses adminstrators to handle transfering to the crowdsale, vesting and pre-purchasers */ function isAdmin(address _address) public view returns (bool) { return hasRole(_address, ADMIN_ROLE); } /** * @dev Set an administrator as the owner, using Open Zepplin RBAC implementation */ function setAdmin(address _newAdmin) public onlyOwner { return addRole(_newAdmin, ADMIN_ROLE); } /** * @dev Remove an administrator as the owner, using Open Zepplin RBAC implementation */ function removeAdmin(address _oldAdmin) public onlyOwner { return removeRole(_oldAdmin, ADMIN_ROLE); } /** * @dev As an administrator, request the token is made transferable * @param _toState The transfer state being requested */ function setTransferable(bool _toState) public onlyRole(ADMIN_ROLE) { require(isTransferable != _toState, "to init a transfer toggle, the toState must change"); toggleTransferablePending = true; transferToggleRequester = msg.sender; } /** * @dev As an administrator who did not make the request, approve the transferable state change */ function approveTransferableToggle() public onlyRole(ADMIN_ROLE) { require(toggleTransferablePending == true, "transfer toggle not in pending state"); require(transferToggleRequester != msg.sender, "the requester cannot approve the transfer toggle"); isTransferable = !isTransferable; toggleTransferablePending = false; transferToggleRequester = address(0); } /** * @dev transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function _transfer(address _to, address _from, uint256 _value) private returns (bool) { require(_value <= balances[_from], "the balance in the from address is smaller than the tx value"); // SafeMath.sub will throw if there is not enough balance. balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(_from, _to, _value); return true; } /** * @dev Public transfer token function. This wrapper ensures the token is transferable * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0), "cannot transfer to the zero address"); /* We allow holders to return their Tokens to the contract owner at any point */ if (_to != owner && msg.sender != crowdsale) { require(isTransferable == true, "kvt is not yet transferable"); } /* Transfers from the owner address must use the administrative transfer */ require(msg.sender != owner, "the owner of the kvt contract cannot transfer"); return _transfer(_to, msg.sender, _value); } /** * @dev Request an administrative transfer. This does not move tokens * @param _to The address to transfer to. * @param _quantity The amount to be transferred. */ function adminTransfer(address _to, uint32 _quantity) public onlyRole(ADMIN_ROLE) { address newTransfer = new MultiSigTransfer(_quantity, _to, msg.sender); transfers.push(newTransfer); } /** * @dev Approve an administrative transfer. This moves the tokens if the requester * is an admin, but not the same admin as the one who made the request * @param _approvedTransfer The contract address of the multisignature transfer. */ function approveTransfer(address _approvedTransfer) public onlyRole(ADMIN_ROLE) returns (bool) { MultiSigTransfer transferToApprove = MultiSigTransfer(_approvedTransfer); uint32 transferQuantity = transferToApprove.quantity(); address deliveryAddress = transferToApprove.targetAddress(); address requesterAddress = transferToApprove.requesterAddress(); require(msg.sender != requesterAddress, "a requester cannot approve an admin transfer"); transferToApprove.approveTransfer(); return _transfer(deliveryAddress, owner, transferQuantity); } /** * @dev Deny an administrative transfer. This ensures it cannot be approved. * @param _approvedTransfer The contract address of the multisignature transfer. */ function denyTransfer(address _approvedTransfer) public onlyRole(ADMIN_ROLE) returns (bool) { MultiSigTransfer transferToApprove = MultiSigTransfer(_approvedTransfer); transferToApprove.denyTransfer(); } address public crowdsale = address(0); /** * @dev Any admin can set the current crowdsale address, to allows transfers * from the crowdsale to the purchaser */ function setCrowdsaleAddress(address _crowdsaleAddress) public onlyRole(ADMIN_ROLE) { crowdsale = _crowdsaleAddress; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_operator","type":"address"},{"name":"_role","type":"string"}],"name":"checkRole","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_oldAdmin","type":"address"}],"name":"removeAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_crowdsaleAddress","type":"address"}],"name":"setCrowdsaleAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isTransferable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_operator","type":"address"},{"name":"_role","type":"string"}],"name":"hasRole","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isAdmin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"toggleTransferablePending","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTransfers","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_quantity","type":"uint32"}],"name":"adminTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"approveTransferableToggle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_approvedTransfer","type":"address"}],"name":"approveTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ADMIN_ROLE","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"transfers","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdsale","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_toState","type":"bool"}],"name":"setTransferable","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"transferToggleRequester","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_approvedTransfer","type":"address"}],"name":"denyTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"operator","type":"address"},{"indexed":false,"name":"role","type":"string"}],"name":"RoleAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"operator","type":"address"},{"indexed":false,"name":"role","type":"string"}],"name":"RoleRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]
Contract Creation Code
60806040526040805190810160405280601481526020017f4b696e6573697356656c6f63697479546f6b656e000000000000000000000000815250600490805190602001906200005192919062000417565b506040805190810160405280600381526020017f4b56540000000000000000000000000000000000000000000000000000000000815250600590805190602001906200009f92919062000417565b506000600660006101000a81548160ff021916908360ff16021790555060006008556000600960006101000a81548160ff0219169083151502179055506000600960016101000a81548160ff0219169083151502179055506000600960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200018857600080fd5b5033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620493e0600881905550620493e06000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200026a336040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062000270640100000000026401000000009004565b620004c6565b620002ff826003836040518082805190602001908083835b602083101515620002af578051825260208201915060208101905060208303925062000288565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020620003b96401000000000262002762179091906401000000009004565b8173ffffffffffffffffffffffffffffffffffffffff167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489826040518080602001828103825283818151815260200191508051906020019080838360005b838110156200037a5780820151818401526020810190506200035d565b50505050905090810190601f168015620003a85780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200045a57805160ff19168380011785556200048b565b828001600101855582156200048b579182015b828111156200048a5782518255916020019190600101906200046d565b5b5090506200049a91906200049e565b5090565b620004c391905b80821115620004bf576000816000905550600101620004a5565b5090565b90565b61365980620004d66000396000f30060806040526004361062000193576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314620001985780630988ca8c146200022e5780631785f53c14620002ba57806318160ddd14620003005780631f35bc40146200032e5780632121dc751462000374578063217fe6c614620003a657806324d7806c146200044a5780632813de1714620004a85780632f54bf6e14620004da5780632f65142c14620005385780632f8eed9814620005a95780632ff2e9dc14620005ff578063313ce567146200062d57806340c3b18e14620006615780634355b9d2146200067b578063704b6c0214620006d957806370a08231146200071f578063715018a6146200077957806375b238fc14620007935780638da5cb5b14620008295780639377d711146200088357806395d89b4114620008f35780639c1e03a014620009895780639cd2370714620009e3578063a3adb9581462000a15578063a9059cbb1462000a6f578063f2fde38b1462000ad7578063f5c4201f1462000b1d575b600080fd5b348015620001a557600080fd5b50620001b062000b7b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015620001f2578082015181840152602081019050620001d5565b50505050905090810190601f168015620002205780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200023b57600080fd5b50620002b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505062000c1d565b005b348015620002c757600080fd5b50620002fe600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000ca2565b005b3480156200030d57600080fd5b506200031862000d43565b6040518082815260200191505060405180910390f35b3480156200033b57600080fd5b5062000372600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000d49565b005b3480156200038157600080fd5b506200038c62000dd0565b604051808215151515815260200191505060405180910390f35b348015620003b357600080fd5b5062000430600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505062000de3565b604051808215151515815260200191505060405180910390f35b3480156200045757600080fd5b506200048e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000e6e565b604051808215151515815260200191505060405180910390f35b348015620004b557600080fd5b50620004c062000eb8565b604051808215151515815260200191505060405180910390f35b348015620004e757600080fd5b506200051e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000ecb565b604051808215151515815260200191505060405180910390f35b3480156200054557600080fd5b506200055062000f25565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156200059557808201518184015260208101905062000578565b505050509050019250505060405180910390f35b348015620005b657600080fd5b50620005fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff16906020019092919050505062000fb5565b005b3480156200060c57600080fd5b50620006176200110e565b6040518082815260200191505060405180910390f35b3480156200063a57600080fd5b506200064562001115565b604051808260ff1660ff16815260200191505060405180910390f35b3480156200066e57600080fd5b506200067962001128565b005b3480156200068857600080fd5b50620006bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001393565b604051808215151515815260200191505060405180910390f35b348015620006e657600080fd5b506200071d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001756565b005b3480156200072c57600080fd5b5062000763600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050620017f7565b6040518082815260200191505060405180910390f35b3480156200078657600080fd5b50620007916200183f565b005b348015620007a057600080fd5b50620007ab62001945565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015620007ed578082015181840152602081019050620007d0565b50505050905090810190601f1680156200081b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200083657600080fd5b50620008416200197e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156200089057600080fd5b50620008b160048036038101908080359060200190929190505050620019a4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156200090057600080fd5b506200090b620019e3565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156200094d57808201518184015260208101905062000930565b50505050905090810190601f1680156200097b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200099657600080fd5b50620009a162001a85565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015620009f057600080fd5b5062000a1360048036038101908080351515906020019092919050505062001aab565b005b34801562000a2257600080fd5b5062000a2d62001bff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801562000a7c57600080fd5b5062000abd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505062001c25565b604051808215151515815260200191505060405180910390f35b34801562000ae457600080fd5b5062000b1b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001f34565b005b34801562000b2a57600080fd5b5062000b61600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001f9f565b604051808215151515815260200191505060405180910390f35b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562000c155780601f1062000be95761010080835404028352916020019162000c15565b820191906000526020600020905b81548152906001019060200180831162000bf757829003601f168201915b505050505081565b62000c9e826003836040518082805190602001908083835b60208310151562000c5c578051825260208201915060208101905060208303925062000c35565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206200206c90919063ffffffff16565b5050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562000cff57600080fd5b62000d40816040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062002088565b50565b60085481565b6040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062000d8b338262000c1d565b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600960009054906101000a900460ff1681565b600062000e66836003846040518082805190602001908083835b60208310151562000e24578051825260208201915060208101905060208303925062000dfd565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020620021c390919063ffffffff16565b905092915050565b600062000eb1826040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062000de3565b9050919050565b600960019054906101000a900460ff1681565b60008173ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b6060600780548060200260200160405190810160405280929190818152602001828054801562000fab57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162000f60575b5050505050905090565b60006040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062000ff9338262000c1d565b82843362001006620027c0565b808463ffffffff1663ffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050604051809103906000f0801580156200109f573d6000803e3d6000fd5b50915060078290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b620493e081565b600660009054906101000a900460ff1681565b6040805190810160405280600581526020017f41444d494e0000000000000000000000000000000000000000000000000000008152506200116a338262000c1d565b60011515600960019054906101000a900460ff1615151415156200121c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f7472616e7366657220746f67676c65206e6f7420696e2070656e64696e67207381526020017f746174650000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151562001309576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f746865207265717565737465722063616e6e6f7420617070726f76652074686581526020017f207472616e7366657220746f67676c650000000000000000000000000000000081525060400191505060405180910390fd5b600960009054906101000a900460ff1615600960006101000a81548160ff0219169083151502179055506000600960016101000a81548160ff0219169083151502179055506000600960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008060006040805190810160405280600581526020017f41444d494e000000000000000000000000000000000000000000000000000000815250620013dd338262000c1d565b8694508473ffffffffffffffffffffffffffffffffffffffff166317fc45e26040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200144557600080fd5b505af11580156200145a573d6000803e3d6000fd5b505050506040513d60208110156200147157600080fd5b810190808051906020019092919050505093508473ffffffffffffffffffffffffffffffffffffffff16635210eb566040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015620014e957600080fd5b505af1158015620014fe573d6000803e3d6000fd5b505050506040513d60208110156200151557600080fd5b810190808051906020019092919050505092508473ffffffffffffffffffffffffffffffffffffffff1663d424ee7d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200158d57600080fd5b505af1158015620015a2573d6000803e3d6000fd5b505050506040513d6020811015620015b957600080fd5b810190808051906020019092919050505091508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151562001697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f61207265717565737465722063616e6e6f7420617070726f766520616e20616481526020017f6d696e207472616e73666572000000000000000000000000000000000000000081525060400191505060405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16632a8d26e86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b158015620016fc57600080fd5b505af115801562001711573d6000803e3d6000fd5b505050506200174a83600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168663ffffffff166200221c565b95505050505050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515620017b357600080fd5b620017f4816040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062002495565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200189c57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525081565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600781815481101515620019b457fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60058054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562001a7d5780601f1062001a515761010080835404028352916020019162001a7d565b820191906000526020600020905b81548152906001019060200180831162001a5f57829003601f168201915b505050505081565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062001aed338262000c1d565b811515600960009054906101000a900460ff1615151415151562001b9f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f746f20696e69742061207472616e7366657220746f67676c652c20746865207481526020017f6f5374617465206d757374206368616e6765000000000000000000000000000081525060400191505060405180910390fd5b6001600960016101000a81548160ff02191690831515021790555033600960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151562001cf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f63616e6e6f74207472616e7366657220746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801562001d9f5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1562001e325760011515600960009054906101000a900460ff16151514151562001e31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f6b7674206973206e6f7420796574207472616e7366657261626c65000000000081525060200191505060405180910390fd5b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151562001f1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f746865206f776e6572206f6620746865206b767420636f6e747261637420636181526020017f6e6e6f74207472616e736665720000000000000000000000000000000000000081525060400191505060405180910390fd5b62001f2c8333846200221c565b905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562001f9157600080fd5b62001f9c81620025d0565b50565b6000806040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062001fe4338262000c1d565b8391508173ffffffffffffffffffffffffffffffffffffffff16639b012dec6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1580156200204c57600080fd5b505af115801562002061573d6000803e3d6000fd5b505050505050919050565b620020788282620021c3565b15156200208457600080fd5b5050565b62002109826003836040518082805190602001908083835b602083101515620020c75780518252602082019150602081019050602083039250620020a0565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020620026cd90919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b838110156200218457808201518184015260208101905062002167565b50505050905090810190601f168015620021b25780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515620022fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001807f7468652062616c616e636520696e207468652066726f6d20616464726573732081526020017f697320736d616c6c6572207468616e207468652074782076616c75650000000081525060400191505060405180910390fd5b6200234e826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200272b90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620023e3826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200274590919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b62002516826003836040518082805190602001908083835b602083101515620024d45780518252602082019150602081019050602083039250620024ad565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206200276290919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489826040518080602001828103825283818151815260200191508051906020019080838360005b838110156200259157808201518184015260208101905062002574565b50505050905090810190601f168015620025bf5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156200260d57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008282111515156200273a57fe5b818303905092915050565b600081830190508281101515156200275957fe5b80905092915050565b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b604051610e5c80620027d283390190560060806040526040805190810160405280601081526020017f4d756c74695369675472616e73666572000000000000000000000000000000008152506001908051906020019061004f929190610200565b506040805190810160405280600381526020017f4d535400000000000000000000000000000000000000000000000000000000008152506002908051906020019061009b929190610200565b506000600360006101000a81548160ff0219169083151502179055506000600360016101000a81548160ff0219169083151502179055503480156100de57600080fd5b50604051606080610e5c833981018060405281019080805190602001909291908051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360026101000a81548163ffffffff021916908363ffffffff16021790555081600360066101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506102a5565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061024157805160ff191683800117855561026f565b8280016001018555821561026f579182015b8281111561026e578251825591602001919060010190610253565b5b50905061027c9190610280565b5090565b6102a291905b8082111561029e576000816000905550600101610286565b5090565b90565b610ba8806102b46000396000f3006080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100ca57806317fc45e21461015a5780632a8d26e8146101915780635210eb56146101a8578063522e1177146101ff578063715018a61461022e578063794542ad146102455780638da5cb5b1461027457806395d89b41146102cb5780639b012dec1461035b5780639c30ad7e14610372578063d424ee7d146103a1578063f2fde38b146103f8575b600080fd5b3480156100d657600080fd5b506100df61043b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561011f578082015181840152602081019050610104565b50505050905090810190601f16801561014c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561016657600080fd5b5061016f6104d9565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b34801561019d57600080fd5b506101a66104ef565b005b3480156101b457600080fd5b506101bd6106a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020b57600080fd5b506102146106c9565b604051808215151515815260200191505060405180910390f35b34801561023a57600080fd5b506102436106dc565b005b34801561025157600080fd5b5061025a6107de565b604051808215151515815260200191505060405180910390f35b34801561028057600080fd5b506102896107f1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102d757600080fd5b506102e0610816565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610320578082015181840152602081019050610305565b50505050905090810190601f16801561034d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036757600080fd5b506103706108b4565b005b34801561037e57600080fd5b506103876109dd565b604051808215151515815260200191505060405180910390f35b3480156103ad57600080fd5b506103b66109f5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040457600080fd5b50610439600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a1b565b005b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104d15780601f106104a6576101008083540402835291602001916104d1565b820191906000526020600020905b8154815290600101906020018083116104b457829003601f168201915b505050505081565b600360029054906101000a900463ffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561054a57600080fd5b60001515600360019054906101000a900460ff1615151415156105d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f63616e6e6f7420617070726f766520612064656e696564207472616e7366657281525060200191505060405180910390fd5b60001515600360009054906101000a900460ff161515141515610686576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f63616e6e6f7420617070726f7665206120636f6d706c657465207472616e736681526020017f657200000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600360006101000a81548160ff021916908315150217905550565b600360069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561073757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108ac5780601f10610881576101008083540402835291602001916108ac565b820191906000526020600020905b81548152906001019060200180831161088f57829003601f168201915b505050505081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561090f57600080fd5b60001515600360019054906101000a900460ff1615151415156109c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f63616e6e6f742064656e792061207472616e736665722074686174206973206181526020017f6c72656164792064656e6965640000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600360016101000a81548160ff021916908315150217905550565b6000600360009054906101000a900460ff1615905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a7657600080fd5b610a7f81610a82565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610abe57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820a549ebfc3bdf3c625145d6a8a3afed15b29de8bd4f5d39cef6b560386f695b970029a165627a7a72305820e627866e043cf4da56f8c79cec5a79ae3e0ab147c534df8d16f19fe0b4d13b9c0029
Deployed Bytecode
0x60806040526004361062000193576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314620001985780630988ca8c146200022e5780631785f53c14620002ba57806318160ddd14620003005780631f35bc40146200032e5780632121dc751462000374578063217fe6c614620003a657806324d7806c146200044a5780632813de1714620004a85780632f54bf6e14620004da5780632f65142c14620005385780632f8eed9814620005a95780632ff2e9dc14620005ff578063313ce567146200062d57806340c3b18e14620006615780634355b9d2146200067b578063704b6c0214620006d957806370a08231146200071f578063715018a6146200077957806375b238fc14620007935780638da5cb5b14620008295780639377d711146200088357806395d89b4114620008f35780639c1e03a014620009895780639cd2370714620009e3578063a3adb9581462000a15578063a9059cbb1462000a6f578063f2fde38b1462000ad7578063f5c4201f1462000b1d575b600080fd5b348015620001a557600080fd5b50620001b062000b7b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015620001f2578082015181840152602081019050620001d5565b50505050905090810190601f168015620002205780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200023b57600080fd5b50620002b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505062000c1d565b005b348015620002c757600080fd5b50620002fe600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000ca2565b005b3480156200030d57600080fd5b506200031862000d43565b6040518082815260200191505060405180910390f35b3480156200033b57600080fd5b5062000372600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000d49565b005b3480156200038157600080fd5b506200038c62000dd0565b604051808215151515815260200191505060405180910390f35b348015620003b357600080fd5b5062000430600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505062000de3565b604051808215151515815260200191505060405180910390f35b3480156200045757600080fd5b506200048e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000e6e565b604051808215151515815260200191505060405180910390f35b348015620004b557600080fd5b50620004c062000eb8565b604051808215151515815260200191505060405180910390f35b348015620004e757600080fd5b506200051e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000ecb565b604051808215151515815260200191505060405180910390f35b3480156200054557600080fd5b506200055062000f25565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156200059557808201518184015260208101905062000578565b505050509050019250505060405180910390f35b348015620005b657600080fd5b50620005fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff16906020019092919050505062000fb5565b005b3480156200060c57600080fd5b50620006176200110e565b6040518082815260200191505060405180910390f35b3480156200063a57600080fd5b506200064562001115565b604051808260ff1660ff16815260200191505060405180910390f35b3480156200066e57600080fd5b506200067962001128565b005b3480156200068857600080fd5b50620006bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001393565b604051808215151515815260200191505060405180910390f35b348015620006e657600080fd5b506200071d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001756565b005b3480156200072c57600080fd5b5062000763600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050620017f7565b6040518082815260200191505060405180910390f35b3480156200078657600080fd5b50620007916200183f565b005b348015620007a057600080fd5b50620007ab62001945565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015620007ed578082015181840152602081019050620007d0565b50505050905090810190601f1680156200081b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200083657600080fd5b50620008416200197e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156200089057600080fd5b50620008b160048036038101908080359060200190929190505050620019a4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156200090057600080fd5b506200090b620019e3565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156200094d57808201518184015260208101905062000930565b50505050905090810190601f1680156200097b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200099657600080fd5b50620009a162001a85565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015620009f057600080fd5b5062000a1360048036038101908080351515906020019092919050505062001aab565b005b34801562000a2257600080fd5b5062000a2d62001bff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801562000a7c57600080fd5b5062000abd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505062001c25565b604051808215151515815260200191505060405180910390f35b34801562000ae457600080fd5b5062000b1b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001f34565b005b34801562000b2a57600080fd5b5062000b61600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001f9f565b604051808215151515815260200191505060405180910390f35b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562000c155780601f1062000be95761010080835404028352916020019162000c15565b820191906000526020600020905b81548152906001019060200180831162000bf757829003601f168201915b505050505081565b62000c9e826003836040518082805190602001908083835b60208310151562000c5c578051825260208201915060208101905060208303925062000c35565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206200206c90919063ffffffff16565b5050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562000cff57600080fd5b62000d40816040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062002088565b50565b60085481565b6040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062000d8b338262000c1d565b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600960009054906101000a900460ff1681565b600062000e66836003846040518082805190602001908083835b60208310151562000e24578051825260208201915060208101905060208303925062000dfd565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020620021c390919063ffffffff16565b905092915050565b600062000eb1826040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062000de3565b9050919050565b600960019054906101000a900460ff1681565b60008173ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b6060600780548060200260200160405190810160405280929190818152602001828054801562000fab57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162000f60575b5050505050905090565b60006040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062000ff9338262000c1d565b82843362001006620027c0565b808463ffffffff1663ffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050604051809103906000f0801580156200109f573d6000803e3d6000fd5b50915060078290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b620493e081565b600660009054906101000a900460ff1681565b6040805190810160405280600581526020017f41444d494e0000000000000000000000000000000000000000000000000000008152506200116a338262000c1d565b60011515600960019054906101000a900460ff1615151415156200121c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f7472616e7366657220746f67676c65206e6f7420696e2070656e64696e67207381526020017f746174650000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151562001309576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f746865207265717565737465722063616e6e6f7420617070726f76652074686581526020017f207472616e7366657220746f67676c650000000000000000000000000000000081525060400191505060405180910390fd5b600960009054906101000a900460ff1615600960006101000a81548160ff0219169083151502179055506000600960016101000a81548160ff0219169083151502179055506000600960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008060006040805190810160405280600581526020017f41444d494e000000000000000000000000000000000000000000000000000000815250620013dd338262000c1d565b8694508473ffffffffffffffffffffffffffffffffffffffff166317fc45e26040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200144557600080fd5b505af11580156200145a573d6000803e3d6000fd5b505050506040513d60208110156200147157600080fd5b810190808051906020019092919050505093508473ffffffffffffffffffffffffffffffffffffffff16635210eb566040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015620014e957600080fd5b505af1158015620014fe573d6000803e3d6000fd5b505050506040513d60208110156200151557600080fd5b810190808051906020019092919050505092508473ffffffffffffffffffffffffffffffffffffffff1663d424ee7d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200158d57600080fd5b505af1158015620015a2573d6000803e3d6000fd5b505050506040513d6020811015620015b957600080fd5b810190808051906020019092919050505091508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151562001697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f61207265717565737465722063616e6e6f7420617070726f766520616e20616481526020017f6d696e207472616e73666572000000000000000000000000000000000000000081525060400191505060405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16632a8d26e86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b158015620016fc57600080fd5b505af115801562001711573d6000803e3d6000fd5b505050506200174a83600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168663ffffffff166200221c565b95505050505050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515620017b357600080fd5b620017f4816040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062002495565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200189c57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525081565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600781815481101515620019b457fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60058054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562001a7d5780601f1062001a515761010080835404028352916020019162001a7d565b820191906000526020600020905b81548152906001019060200180831162001a5f57829003601f168201915b505050505081565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062001aed338262000c1d565b811515600960009054906101000a900460ff1615151415151562001b9f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f746f20696e69742061207472616e7366657220746f67676c652c20746865207481526020017f6f5374617465206d757374206368616e6765000000000000000000000000000081525060400191505060405180910390fd5b6001600960016101000a81548160ff02191690831515021790555033600960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151562001cf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f63616e6e6f74207472616e7366657220746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801562001d9f5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1562001e325760011515600960009054906101000a900460ff16151514151562001e31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f6b7674206973206e6f7420796574207472616e7366657261626c65000000000081525060200191505060405180910390fd5b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151562001f1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f746865206f776e6572206f6620746865206b767420636f6e747261637420636181526020017f6e6e6f74207472616e736665720000000000000000000000000000000000000081525060400191505060405180910390fd5b62001f2c8333846200221c565b905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562001f9157600080fd5b62001f9c81620025d0565b50565b6000806040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062001fe4338262000c1d565b8391508173ffffffffffffffffffffffffffffffffffffffff16639b012dec6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1580156200204c57600080fd5b505af115801562002061573d6000803e3d6000fd5b505050505050919050565b620020788282620021c3565b15156200208457600080fd5b5050565b62002109826003836040518082805190602001908083835b602083101515620020c75780518252602082019150602081019050602083039250620020a0565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020620026cd90919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b838110156200218457808201518184015260208101905062002167565b50505050905090810190601f168015620021b25780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515620022fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001807f7468652062616c616e636520696e207468652066726f6d20616464726573732081526020017f697320736d616c6c6572207468616e207468652074782076616c75650000000081525060400191505060405180910390fd5b6200234e826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200272b90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620023e3826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200274590919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b62002516826003836040518082805190602001908083835b602083101515620024d45780518252602082019150602081019050602083039250620024ad565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206200276290919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489826040518080602001828103825283818151815260200191508051906020019080838360005b838110156200259157808201518184015260208101905062002574565b50505050905090810190601f168015620025bf5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156200260d57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008282111515156200273a57fe5b818303905092915050565b600081830190508281101515156200275957fe5b80905092915050565b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b604051610e5c80620027d283390190560060806040526040805190810160405280601081526020017f4d756c74695369675472616e73666572000000000000000000000000000000008152506001908051906020019061004f929190610200565b506040805190810160405280600381526020017f4d535400000000000000000000000000000000000000000000000000000000008152506002908051906020019061009b929190610200565b506000600360006101000a81548160ff0219169083151502179055506000600360016101000a81548160ff0219169083151502179055503480156100de57600080fd5b50604051606080610e5c833981018060405281019080805190602001909291908051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360026101000a81548163ffffffff021916908363ffffffff16021790555081600360066101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506102a5565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061024157805160ff191683800117855561026f565b8280016001018555821561026f579182015b8281111561026e578251825591602001919060010190610253565b5b50905061027c9190610280565b5090565b6102a291905b8082111561029e576000816000905550600101610286565b5090565b90565b610ba8806102b46000396000f3006080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100ca57806317fc45e21461015a5780632a8d26e8146101915780635210eb56146101a8578063522e1177146101ff578063715018a61461022e578063794542ad146102455780638da5cb5b1461027457806395d89b41146102cb5780639b012dec1461035b5780639c30ad7e14610372578063d424ee7d146103a1578063f2fde38b146103f8575b600080fd5b3480156100d657600080fd5b506100df61043b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561011f578082015181840152602081019050610104565b50505050905090810190601f16801561014c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561016657600080fd5b5061016f6104d9565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b34801561019d57600080fd5b506101a66104ef565b005b3480156101b457600080fd5b506101bd6106a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020b57600080fd5b506102146106c9565b604051808215151515815260200191505060405180910390f35b34801561023a57600080fd5b506102436106dc565b005b34801561025157600080fd5b5061025a6107de565b604051808215151515815260200191505060405180910390f35b34801561028057600080fd5b506102896107f1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102d757600080fd5b506102e0610816565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610320578082015181840152602081019050610305565b50505050905090810190601f16801561034d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036757600080fd5b506103706108b4565b005b34801561037e57600080fd5b506103876109dd565b604051808215151515815260200191505060405180910390f35b3480156103ad57600080fd5b506103b66109f5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040457600080fd5b50610439600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a1b565b005b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104d15780601f106104a6576101008083540402835291602001916104d1565b820191906000526020600020905b8154815290600101906020018083116104b457829003601f168201915b505050505081565b600360029054906101000a900463ffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561054a57600080fd5b60001515600360019054906101000a900460ff1615151415156105d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f63616e6e6f7420617070726f766520612064656e696564207472616e7366657281525060200191505060405180910390fd5b60001515600360009054906101000a900460ff161515141515610686576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f63616e6e6f7420617070726f7665206120636f6d706c657465207472616e736681526020017f657200000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600360006101000a81548160ff021916908315150217905550565b600360069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561073757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108ac5780601f10610881576101008083540402835291602001916108ac565b820191906000526020600020905b81548152906001019060200180831161088f57829003601f168201915b505050505081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561090f57600080fd5b60001515600360019054906101000a900460ff1615151415156109c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f63616e6e6f742064656e792061207472616e736665722074686174206973206181526020017f6c72656164792064656e6965640000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600360016101000a81548160ff021916908315150217905550565b6000600360009054906101000a900460ff1615905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a7657600080fd5b610a7f81610a82565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610abe57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820a549ebfc3bdf3c625145d6a8a3afed15b29de8bd4f5d39cef6b560386f695b970029a165627a7a72305820e627866e043cf4da56f8c79cec5a79ae3e0ab147c534df8d16f19fe0b4d13b9c0029
Swarm Source
bzzr://e627866e043cf4da56f8c79cec5a79ae3e0ab147c534df8d16f19fe0b4d13b9c
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.