ERC-20
MEME
Overview
Max Total Supply
1,000,000,000,000 MARC
Holders
74 (0.00%)
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 10 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
MARC
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-03-20 */ pragma solidity ^0.5.16; pragma experimental ABIEncoderV2; // From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol // Subject to the MIT license. /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the addition of two unsigned integers, reverting with custom message on overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, errorMessage); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot underflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction underflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot underflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, errorMessage); return c; } /** * @dev Returns the integer division of two unsigned integers. * Reverts on division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. * Reverts with custom message on division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract MARC { /// @notice EIP-20 token name for this token string public constant name = "MARMOT Coin"; /// @notice EIP-20 token symbol for this token string public constant symbol = "MARC"; /// @notice EIP-20 token decimals for this token uint8 public constant decimals = 10; /// @notice Total number of tokens in circulation uint public totalSupply = 1_000_000_000_000e10; // 10 billion MARC /// @notice Allowance amounts on behalf of others mapping (address => mapping (address => uint96)) internal allowances; /// @notice Official record of token balances for each account mapping (address => uint96) internal balances; /// @notice A record of each accounts delegate mapping (address => address) public delegates; /// @notice A checkpoint for marking number of votes from a given block struct Checkpoint { uint32 fromBlock; uint96 votes; } /// @notice A record of votes checkpoints for each account, by index mapping (address => mapping (uint32 => Checkpoint)) public checkpoints; /// @notice The number of checkpoints for each account mapping (address => uint32) public numCheckpoints; /// @notice The EIP-712 typehash for the contract's domain bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)"); /// @notice The EIP-712 typehash for the delegation struct used by the contract bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)"); /// @notice The EIP-712 typehash for the permit struct used by the contract bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); /// @notice A record of states for signing / validating signatures mapping (address => uint) public nonces; /// @notice An event thats emitted when the minter address is changed //event MinterChanged(address minter, address newMinter); /// @notice An event thats emitted when an account changes its delegate event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); /// @notice An event thats emitted when a delegate account's vote balance changes event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance); /// @notice The standard EIP-20 transfer event event Transfer(address indexed from, address indexed to, uint256 amount); /// @notice The standard EIP-20 approval event event Approval(address indexed owner, address indexed spender, uint256 amount); /** * @notice Construct a new MARC token * @param account The initial account to grant all the tokens */ constructor(address account) public { balances[account] = uint96(totalSupply); emit Transfer(address(0), account, totalSupply); } /** * @notice Get the number of tokens `spender` is approved to spend on behalf of `account` * @param account The address of the account holding the funds * @param spender The address of the account spending the funds * @return The number of tokens approved */ function allowance(address account, address spender) external view returns (uint) { return allowances[account][spender]; } /** * @notice Approve `spender` to transfer up to `amount` from `src` * @dev This will overwrite the approval amount for `spender` * and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve) * @param spender The address of the account which may transfer tokens * @param rawAmount The number of tokens that are approved (2^256-1 means infinite) * @return Whether or not the approval succeeded */ function approve(address spender, uint rawAmount) external returns (bool) { uint96 amount; if (rawAmount == uint(-1)) { amount = uint96(-1); } else { amount = safe96(rawAmount, "MARC::approve: amount exceeds 96 bits"); } allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } /** * @notice Triggers an approval from owner to spends * @param owner The address to approve from * @param spender The address to be approved * @param rawAmount The number of tokens that are approved (2^256-1 means infinite) * @param deadline The time at which to expire the signature * @param v The recovery byte of the signature * @param r Half of the ECDSA signature pair * @param s Half of the ECDSA signature pair */ function permit(address owner, address spender, uint rawAmount, uint deadline, uint8 v, bytes32 r, bytes32 s) external { uint96 amount; if (rawAmount == uint(-1)) { amount = uint96(-1); } else { amount = safe96(rawAmount, "MARC::permit: amount exceeds 96 bits"); } bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this))); bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, rawAmount, nonces[owner]++, deadline)); bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); address signatory = ecrecover(digest, v, r, s); require(signatory != address(0), "MARC::permit: invalid signature"); require(signatory == owner, "MARC::permit: unauthorized"); require(now <= deadline, "MARC::permit: signature expired"); allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @notice Get the number of tokens held by the `account` * @param account The address of the account to get the balance of * @return The number of tokens held */ function balanceOf(address account) external view returns (uint) { return balances[account]; } /** * @notice Transfer `amount` tokens from `msg.sender` to `dst` * @param dst The address of the destination account * @param rawAmount The number of tokens to transfer * @return Whether or not the transfer succeeded */ function transfer(address dst, uint rawAmount) external returns (bool) { uint96 amount = safe96(rawAmount, "MARC::transfer: amount exceeds 96 bits"); _transferTokens(msg.sender, dst, amount); return true; } /** * @notice Transfer `amount` tokens from `src` to `dst` * @param src The address of the source account * @param dst The address of the destination account * @param rawAmount The number of tokens to transfer * @return Whether or not the transfer succeeded */ function transferFrom(address src, address dst, uint rawAmount) external returns (bool) { address spender = msg.sender; uint96 spenderAllowance = allowances[src][spender]; uint96 amount = safe96(rawAmount, "MARC::approve: amount exceeds 96 bits"); if (spender != src && spenderAllowance != uint96(-1)) { uint96 newAllowance = sub96(spenderAllowance, amount, "MARC::transferFrom: transfer amount exceeds spender allowance"); allowances[src][spender] = newAllowance; emit Approval(src, spender, newAllowance); } _transferTokens(src, dst, amount); return true; } /** * @notice Delegate votes from `msg.sender` to `delegatee` * @param delegatee The address to delegate votes to */ function delegate(address delegatee) public { return _delegate(msg.sender, delegatee); } /** * @notice Delegates votes from signatory to `delegatee` * @param delegatee The address to delegate votes to * @param nonce The contract state required to match the signature * @param expiry The time at which to expire the signature * @param v The recovery byte of the signature * @param r Half of the ECDSA signature pair * @param s Half of the ECDSA signature pair */ function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public { bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this))); bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry)); bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); address signatory = ecrecover(digest, v, r, s); require(signatory != address(0), "MARC::delegateBySig: invalid signature"); require(nonce == nonces[signatory]++, "MARC::delegateBySig: invalid nonce"); require(now <= expiry, "MARC::delegateBySig: signature expired"); return _delegate(signatory, delegatee); } /** * @notice Gets the current votes balance for `account` * @param account The address to get votes balance * @return The number of current votes for `account` */ function getCurrentVotes(address account) external view returns (uint96) { uint32 nCheckpoints = numCheckpoints[account]; return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0; } /** * @notice Determine the prior number of votes for an account as of a block number * @dev Block number must be a finalized block or else this function will revert to prevent misinformation. * @param account The address of the account to check * @param blockNumber The block number to get the vote balance at * @return The number of votes the account had as of the given block */ function getPriorVotes(address account, uint blockNumber) public view returns (uint96) { require(blockNumber < block.number, "MARC::getPriorVotes: not yet determined"); uint32 nCheckpoints = numCheckpoints[account]; if (nCheckpoints == 0) { return 0; } // First check most recent balance if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) { return checkpoints[account][nCheckpoints - 1].votes; } // Next check implicit zero balance if (checkpoints[account][0].fromBlock > blockNumber) { return 0; } uint32 lower = 0; uint32 upper = nCheckpoints - 1; while (upper > lower) { uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow Checkpoint memory cp = checkpoints[account][center]; if (cp.fromBlock == blockNumber) { return cp.votes; } else if (cp.fromBlock < blockNumber) { lower = center; } else { upper = center - 1; } } return checkpoints[account][lower].votes; } function _delegate(address delegator, address delegatee) internal { address currentDelegate = delegates[delegator]; uint96 delegatorBalance = balances[delegator]; delegates[delegator] = delegatee; emit DelegateChanged(delegator, currentDelegate, delegatee); _moveDelegates(currentDelegate, delegatee, delegatorBalance); } function _transferTokens(address src, address dst, uint96 amount) internal { require(src != address(0), "MARC::_transferTokens: cannot transfer from the zero address"); require(dst != address(0), "MARC::_transferTokens: cannot transfer to the zero address"); balances[src] = sub96(balances[src], amount, "MARC::_transferTokens: transfer amount exceeds balance"); balances[dst] = add96(balances[dst], amount, "MARC::_transferTokens: transfer amount overflows"); emit Transfer(src, dst, amount); _moveDelegates(delegates[src], delegates[dst], amount); } function _moveDelegates(address srcRep, address dstRep, uint96 amount) internal { if (srcRep != dstRep && amount > 0) { if (srcRep != address(0)) { uint32 srcRepNum = numCheckpoints[srcRep]; uint96 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0; uint96 srcRepNew = sub96(srcRepOld, amount, "MARC::_moveVotes: vote amount underflows"); _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew); } if (dstRep != address(0)) { uint32 dstRepNum = numCheckpoints[dstRep]; uint96 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0; uint96 dstRepNew = add96(dstRepOld, amount, "MARC::_moveVotes: vote amount overflows"); _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew); } } } function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint96 oldVotes, uint96 newVotes) internal { uint32 blockNumber = safe32(block.number, "MARC::_writeCheckpoint: block number exceeds 32 bits"); if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) { checkpoints[delegatee][nCheckpoints - 1].votes = newVotes; } else { checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes); numCheckpoints[delegatee] = nCheckpoints + 1; } emit DelegateVotesChanged(delegatee, oldVotes, newVotes); } function safe32(uint n, string memory errorMessage) internal pure returns (uint32) { require(n < 2**32, errorMessage); return uint32(n); } function safe96(uint n, string memory errorMessage) internal pure returns (uint96) { require(n < 2**96, errorMessage); return uint96(n); } function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) { uint96 c = a + b; require(c >= a, errorMessage); return c; } function sub96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) { require(b <= a, errorMessage); return a - b; } function getChainId() internal pure returns (uint) { uint256 chainId; assembly { chainId := chainid() } return chainId; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"account","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint96","name":"votes","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405269021e19e0c9bab24000006000553480156200001f57600080fd5b506040516200371a3803806200371a83398181016040526200004591908101906200013d565b600054600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6000546040516200011791906200017a565b60405180910390a350620001ef565b6000815190506200013781620001d5565b92915050565b6000602082840312156200015057600080fd5b6000620001608482850162000126565b91505092915050565b6200017481620001cb565b82525050565b600060208201905062000191600083018462000169565b92915050565b6000620001a482620001ab565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b620001e08162000197565b8114620001ec57600080fd5b50565b61351b80620001ff6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063b4b5ea571161007c578063b4b5ea571461038c578063c3cda520146103bc578063d505accf146103d8578063dd62ed3e146103f4578063e7a324dc14610424578063f1127ed81461044257610137565b806370a08231146102ae578063782d6fe1146102de5780637ecebe001461030e57806395d89b411461033e578063a9059cbb1461035c57610137565b806330adf81f116100ff57806330adf81f146101f6578063313ce56714610214578063587cde1e146102325780635c19a95c146102625780636fcfff451461027e57610137565b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461018a57806320606b70146101a857806323b872dd146101c6575b600080fd5b610144610473565b6040516101519190612f7a565b60405180910390f35b610174600480360361016f919081019061269f565b6104ac565b6040516101819190612e14565b60405180910390f35b61019261063f565b60405161019f91906130de565b60405180910390f35b6101b0610645565b6040516101bd9190612e2f565b60405180910390f35b6101e060048036036101db91908101906125b2565b61065c565b6040516101ed9190612e14565b60405180910390f35b6101fe6108f0565b60405161020b9190612e2f565b60405180910390f35b61021c610907565b604051610229919061313d565b60405180910390f35b61024c6004803603610247919081019061254d565b61090c565b6040516102599190612df9565b60405180910390f35b61027c6004803603610277919081019061254d565b61093f565b005b6102986004803603610293919081019061254d565b61094c565b6040516102a591906130f9565b60405180910390f35b6102c860048036036102c3919081019061254d565b61096f565b6040516102d591906130de565b60405180910390f35b6102f860048036036102f3919081019061269f565b6109de565b6040516103059190613173565b60405180910390f35b6103286004803603610323919081019061254d565b610df1565b60405161033591906130de565b60405180910390f35b610346610e09565b6040516103539190612f7a565b60405180910390f35b6103766004803603610371919081019061269f565b610e42565b6040516103839190612e14565b60405180910390f35b6103a660048036036103a1919081019061254d565b610e7f565b6040516103b39190613173565b60405180910390f35b6103d660048036036103d191908101906126db565b610f6d565b005b6103f260048036036103ed9190810190612601565b611210565b005b61040e60048036036104099190810190612576565b611662565b60405161041b91906130de565b60405180910390f35b61042c61170f565b6040516104399190612e2f565b60405180910390f35b61045c60048036036104579190810190612764565b611726565b60405161046a929190613114565b60405180910390f35b6040518060400160405280600b81526020017f4d41524d4f5420436f696e00000000000000000000000000000000000000000081525081565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8314156104ff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610524565b610521836040518060600160405280602581526020016133816025913961177f565b90505b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161062c9190613158565b60405180910390a3600191505092915050565b60005481565b60405161065190612dcf565b604051809103902081565b6000803390506000600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff169050600061071f856040518060600160405280602581526020016133816025913961177f565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561079957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff16826bffffffffffffffffffffffff1614155b156108d75760006107c383836040518060600160405280603d8152602001613344603d91396117dd565b905080600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516108cd9190613158565b60405180910390a3505b6108e287878361184e565b600193505050509392505050565b6040516108fc90612dba565b604051809103902081565b600a81565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109493382611c2f565b50565b60056020528060005260406000206000915054906101000a900463ffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050919050565b6000438210610a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1990612fbe565b60405180910390fd5b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610a8f576000915050610deb565b82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611610b9157600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff16915050610deb565b82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115610c12576000915050610deb565b600080905060006001830390505b8163ffffffff168163ffffffff161115610d6d576000600283830363ffffffff1681610c4857fe5b0482039050610c556124b6565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905086816000015163ffffffff161415610d4557806020015195505050505050610deb565b86816000015163ffffffff161015610d5f57819350610d66565b6001820392505b5050610c20565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1693505050505b92915050565b60066020528060005260406000206000915090505481565b6040518060400160405280600481526020017f4d4152430000000000000000000000000000000000000000000000000000000081525081565b600080610e678360405180606001604052806026815260200161348b6026913961177f565b9050610e7433858361184e565b600191505092915050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff1611610ee9576000610f65565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b915050919050565b6000604051610f7b90612dcf565b60405180910390206040518060400160405280600b81526020017f4d41524d4f5420436f696e00000000000000000000000000000000000000000081525080519060200120610fc8611def565b30604051602001610fdc9493929190612ef0565b604051602081830303815290604052805190602001209050600060405161100290612de4565b60405180910390208888886040516020016110209493929190612eab565b6040516020818303038152906040528051906020012090506000828260405160200161104d929190612d83565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161108a9493929190612f35565b6020604051602081039080840390855afa1580156110ac573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111f9061301e565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505589146111b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ae90612ffe565b60405180910390fd5b874211156111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f19061307e565b60405180910390fd5b611204818b611c2f565b50505050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff861415611262577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050611287565b611284866040518060600160405280602481526020016133a66024913961177f565b90505b600060405161129590612dcf565b60405180910390206040518060400160405280600b81526020017f4d41524d4f5420436f696e000000000000000000000000000000000000000000815250805190602001206112e2611def565b306040516020016112f69493929190612ef0565b604051602081830303815290604052805190602001209050600060405161131c90612dba565b60405180910390208a8a8a600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b60405160200161138b96959493929190612e4a565b604051602081830303815290604052805190602001209050600082826040516020016113b8929190612d83565b6040516020818303038152906040528051906020012090506000600182898989604051600081526020016040526040516113f59493929190612f35565b6020604051602081039080840390855afa158015611417573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a9061303e565b60405180910390fd5b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f8906130be565b60405180910390fd5b88421115611544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153b90612fde565b60405180910390fd5b84600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258760405161164c9190613158565b60405180910390a3505050505050505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905092915050565b60405161171b90612de4565b604051809103902081565b6004602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060000160049054906101000a90046bffffffffffffffffffffffff16905082565b60006c01000000000000000000000000831082906117d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ca9190612f9c565b60405180910390fd5b5082905092915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611841576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118389190612f9c565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b59061309e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561192e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119259061305e565b60405180910390fd5b6119a8600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16826040518060600160405280603681526020016133ca603691396117dd565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550611a8f600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff168260405180606001604052806030815260200161345b60309139611dfc565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b599190613158565b60405180910390a3611c2a600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611e72565b505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611de9828483611e72565b50505050565b6000804690508091505090565b6000808385019050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff1610158390611e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5d9190612f9c565b60405180910390fd5b50809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ebc57506000816bffffffffffffffffffffffff16115b1561216857600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612014576000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611f5f576000611fdb565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b9050600061200282856040518060600160405280602881526020016134b1602891396117dd565b90506120108684848461216d565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612167576000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116120b257600061212e565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b90506000612155828560405180606001604052806027815260200161343460279139611dfc565b90506121638584848461216d565b5050505b5b505050565b60006121914360405180606001604052806034815260200161340060349139612460565b905060008463ffffffff1611801561222657508063ffffffff16600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b156122c15781600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550612409565b60405180604001604052808263ffffffff168152602001836bffffffffffffffffffffffff16815250600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505060018401600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405161245192919061318e565b60405180910390a25050505050565b6000640100000000831082906124ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a39190612f9c565b60405180910390fd5b5082905092915050565b6040518060400160405280600063ffffffff16815260200160006bffffffffffffffffffffffff1681525090565b6000813590506124f3816132d0565b92915050565b600081359050612508816132e7565b92915050565b60008135905061251d816132fe565b92915050565b60008135905061253281613315565b92915050565b6000813590506125478161332c565b92915050565b60006020828403121561255f57600080fd5b600061256d848285016124e4565b91505092915050565b6000806040838503121561258957600080fd5b6000612597858286016124e4565b92505060206125a8858286016124e4565b9150509250929050565b6000806000606084860312156125c757600080fd5b60006125d5868287016124e4565b93505060206125e6868287016124e4565b92505060406125f78682870161250e565b9150509250925092565b600080600080600080600060e0888a03121561261c57600080fd5b600061262a8a828b016124e4565b975050602061263b8a828b016124e4565b965050604061264c8a828b0161250e565b955050606061265d8a828b0161250e565b945050608061266e8a828b01612538565b93505060a061267f8a828b016124f9565b92505060c06126908a828b016124f9565b91505092959891949750929550565b600080604083850312156126b257600080fd5b60006126c0858286016124e4565b92505060206126d18582860161250e565b9150509250929050565b60008060008060008060c087890312156126f457600080fd5b600061270289828a016124e4565b965050602061271389828a0161250e565b955050604061272489828a0161250e565b945050606061273589828a01612538565b935050608061274689828a016124f9565b92505060a061275789828a016124f9565b9150509295509295509295565b6000806040838503121561277757600080fd5b6000612785858286016124e4565b925050602061279685828601612523565b9150509250929050565b6127a9816131e9565b82525050565b6127b8816131fb565b82525050565b6127c781613207565b82525050565b6127de6127d982613207565b6132b5565b82525050565b60006127ef826131c2565b6127f981856131cd565b9350612809818560208601613282565b612812816132bf565b840191505092915050565b6000612828826131b7565b61283281856131cd565b9350612842818560208601613282565b61284b816132bf565b840191505092915050565b60006128636027836131cd565b91507f4d4152433a3a6765745072696f72566f7465733a206e6f74207965742064657460008301527f65726d696e6564000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006128c96002836131de565b91507f19010000000000000000000000000000000000000000000000000000000000006000830152600282019050919050565b6000612909601f836131cd565b91507f4d4152433a3a7065726d69743a207369676e61747572652065787069726564006000830152602082019050919050565b60006129496022836131cd565b91507f4d4152433a3a64656c656761746542795369673a20696e76616c6964206e6f6e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006129af6026836131cd565b91507f4d4152433a3a64656c656761746542795369673a20696e76616c69642073696760008301527f6e617475726500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a15601f836131cd565b91507f4d4152433a3a7065726d69743a20696e76616c6964207369676e6174757265006000830152602082019050919050565b6000612a556052836131de565b91507f5065726d69742861646472657373206f776e65722c616464726573732073706560008301527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208301527f2c75696e7432353620646561646c696e652900000000000000000000000000006040830152605282019050919050565b6000612ae1603a836131cd565b91507f4d4152433a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260008301527f616e7366657220746f20746865207a65726f20616464726573730000000000006020830152604082019050919050565b6000612b476043836131de565b91507f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353660008301527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208301527f63742900000000000000000000000000000000000000000000000000000000006040830152604382019050919050565b6000612bd36026836131cd565b91507f4d4152433a3a64656c656761746542795369673a207369676e6174757265206560008301527f78706972656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612c39603c836131cd565b91507f4d4152433a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260008301527f616e736665722066726f6d20746865207a65726f2061646472657373000000006020830152604082019050919050565b6000612c9f603a836131de565b91507f44656c65676174696f6e28616464726573732064656c6567617465652c75696e60008301527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020830152603a82019050919050565b6000612d05601a836131cd565b91507f4d4152433a3a7065726d69743a20756e617574686f72697a65640000000000006000830152602082019050919050565b612d4181613231565b82525050565b612d508161323b565b82525050565b612d5f8161324b565b82525050565b612d6e81613270565b82525050565b612d7d81613258565b82525050565b6000612d8e826128bc565b9150612d9a82856127cd565b602082019150612daa82846127cd565b6020820191508190509392505050565b6000612dc582612a48565b9150819050919050565b6000612dda82612b3a565b9150819050919050565b6000612def82612c92565b9150819050919050565b6000602082019050612e0e60008301846127a0565b92915050565b6000602082019050612e2960008301846127af565b92915050565b6000602082019050612e4460008301846127be565b92915050565b600060c082019050612e5f60008301896127be565b612e6c60208301886127a0565b612e7960408301876127a0565b612e866060830186612d38565b612e936080830185612d38565b612ea060a0830184612d38565b979650505050505050565b6000608082019050612ec060008301876127be565b612ecd60208301866127a0565b612eda6040830185612d38565b612ee76060830184612d38565b95945050505050565b6000608082019050612f0560008301876127be565b612f1260208301866127be565b612f1f6040830185612d38565b612f2c60608301846127a0565b95945050505050565b6000608082019050612f4a60008301876127be565b612f576020830186612d56565b612f6460408301856127be565b612f7160608301846127be565b95945050505050565b60006020820190508181036000830152612f94818461281d565b905092915050565b60006020820190508181036000830152612fb681846127e4565b905092915050565b60006020820190508181036000830152612fd781612856565b9050919050565b60006020820190508181036000830152612ff7816128fc565b9050919050565b600060208201905081810360008301526130178161293c565b9050919050565b60006020820190508181036000830152613037816129a2565b9050919050565b6000602082019050818103600083015261305781612a08565b9050919050565b6000602082019050818103600083015261307781612ad4565b9050919050565b6000602082019050818103600083015261309781612bc6565b9050919050565b600060208201905081810360008301526130b781612c2c565b9050919050565b600060208201905081810360008301526130d781612cf8565b9050919050565b60006020820190506130f36000830184612d38565b92915050565b600060208201905061310e6000830184612d47565b92915050565b60006040820190506131296000830185612d47565b6131366020830184612d74565b9392505050565b60006020820190506131526000830184612d56565b92915050565b600060208201905061316d6000830184612d65565b92915050565b60006020820190506131886000830184612d74565b92915050565b60006040820190506131a36000830185612d65565b6131b06020830184612d65565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b60006131f482613211565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006bffffffffffffffffffffffff82169050919050565b600061327b82613258565b9050919050565b60005b838110156132a0578082015181840152602081019050613285565b838111156132af576000848401525b50505050565b6000819050919050565b6000601f19601f8301169050919050565b6132d9816131e9565b81146132e457600080fd5b50565b6132f081613207565b81146132fb57600080fd5b50565b61330781613231565b811461331257600080fd5b50565b61331e8161323b565b811461332957600080fd5b50565b6133358161324b565b811461334057600080fd5b5056fe4d4152433a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e63654d4152433a3a617070726f76653a20616d6f756e74206578636565647320393620626974734d4152433a3a7065726d69743a20616d6f756e74206578636565647320393620626974734d4152433a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d4152433a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974734d4152433a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f77734d4152433a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f77734d4152433a3a7472616e736665723a20616d6f756e74206578636565647320393620626974734d4152433a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773a365627a7a72315820049fba3d759752c95d5cba0892c17e4070fb87154bf916053fa3fb5089a1b5326c6578706572696d656e74616cf564736f6c63430005110040000000000000000000000000f6d4b0b2bb39e125c797e51c6a5c636377236d3d
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063b4b5ea571161007c578063b4b5ea571461038c578063c3cda520146103bc578063d505accf146103d8578063dd62ed3e146103f4578063e7a324dc14610424578063f1127ed81461044257610137565b806370a08231146102ae578063782d6fe1146102de5780637ecebe001461030e57806395d89b411461033e578063a9059cbb1461035c57610137565b806330adf81f116100ff57806330adf81f146101f6578063313ce56714610214578063587cde1e146102325780635c19a95c146102625780636fcfff451461027e57610137565b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461018a57806320606b70146101a857806323b872dd146101c6575b600080fd5b610144610473565b6040516101519190612f7a565b60405180910390f35b610174600480360361016f919081019061269f565b6104ac565b6040516101819190612e14565b60405180910390f35b61019261063f565b60405161019f91906130de565b60405180910390f35b6101b0610645565b6040516101bd9190612e2f565b60405180910390f35b6101e060048036036101db91908101906125b2565b61065c565b6040516101ed9190612e14565b60405180910390f35b6101fe6108f0565b60405161020b9190612e2f565b60405180910390f35b61021c610907565b604051610229919061313d565b60405180910390f35b61024c6004803603610247919081019061254d565b61090c565b6040516102599190612df9565b60405180910390f35b61027c6004803603610277919081019061254d565b61093f565b005b6102986004803603610293919081019061254d565b61094c565b6040516102a591906130f9565b60405180910390f35b6102c860048036036102c3919081019061254d565b61096f565b6040516102d591906130de565b60405180910390f35b6102f860048036036102f3919081019061269f565b6109de565b6040516103059190613173565b60405180910390f35b6103286004803603610323919081019061254d565b610df1565b60405161033591906130de565b60405180910390f35b610346610e09565b6040516103539190612f7a565b60405180910390f35b6103766004803603610371919081019061269f565b610e42565b6040516103839190612e14565b60405180910390f35b6103a660048036036103a1919081019061254d565b610e7f565b6040516103b39190613173565b60405180910390f35b6103d660048036036103d191908101906126db565b610f6d565b005b6103f260048036036103ed9190810190612601565b611210565b005b61040e60048036036104099190810190612576565b611662565b60405161041b91906130de565b60405180910390f35b61042c61170f565b6040516104399190612e2f565b60405180910390f35b61045c60048036036104579190810190612764565b611726565b60405161046a929190613114565b60405180910390f35b6040518060400160405280600b81526020017f4d41524d4f5420436f696e00000000000000000000000000000000000000000081525081565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8314156104ff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610524565b610521836040518060600160405280602581526020016133816025913961177f565b90505b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161062c9190613158565b60405180910390a3600191505092915050565b60005481565b60405161065190612dcf565b604051809103902081565b6000803390506000600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff169050600061071f856040518060600160405280602581526020016133816025913961177f565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561079957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff16826bffffffffffffffffffffffff1614155b156108d75760006107c383836040518060600160405280603d8152602001613344603d91396117dd565b905080600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516108cd9190613158565b60405180910390a3505b6108e287878361184e565b600193505050509392505050565b6040516108fc90612dba565b604051809103902081565b600a81565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109493382611c2f565b50565b60056020528060005260406000206000915054906101000a900463ffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050919050565b6000438210610a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1990612fbe565b60405180910390fd5b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610a8f576000915050610deb565b82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611610b9157600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff16915050610deb565b82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115610c12576000915050610deb565b600080905060006001830390505b8163ffffffff168163ffffffff161115610d6d576000600283830363ffffffff1681610c4857fe5b0482039050610c556124b6565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905086816000015163ffffffff161415610d4557806020015195505050505050610deb565b86816000015163ffffffff161015610d5f57819350610d66565b6001820392505b5050610c20565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1693505050505b92915050565b60066020528060005260406000206000915090505481565b6040518060400160405280600481526020017f4d4152430000000000000000000000000000000000000000000000000000000081525081565b600080610e678360405180606001604052806026815260200161348b6026913961177f565b9050610e7433858361184e565b600191505092915050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff1611610ee9576000610f65565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b915050919050565b6000604051610f7b90612dcf565b60405180910390206040518060400160405280600b81526020017f4d41524d4f5420436f696e00000000000000000000000000000000000000000081525080519060200120610fc8611def565b30604051602001610fdc9493929190612ef0565b604051602081830303815290604052805190602001209050600060405161100290612de4565b60405180910390208888886040516020016110209493929190612eab565b6040516020818303038152906040528051906020012090506000828260405160200161104d929190612d83565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161108a9493929190612f35565b6020604051602081039080840390855afa1580156110ac573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111f9061301e565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505589146111b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ae90612ffe565b60405180910390fd5b874211156111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f19061307e565b60405180910390fd5b611204818b611c2f565b50505050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff861415611262577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050611287565b611284866040518060600160405280602481526020016133a66024913961177f565b90505b600060405161129590612dcf565b60405180910390206040518060400160405280600b81526020017f4d41524d4f5420436f696e000000000000000000000000000000000000000000815250805190602001206112e2611def565b306040516020016112f69493929190612ef0565b604051602081830303815290604052805190602001209050600060405161131c90612dba565b60405180910390208a8a8a600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b60405160200161138b96959493929190612e4a565b604051602081830303815290604052805190602001209050600082826040516020016113b8929190612d83565b6040516020818303038152906040528051906020012090506000600182898989604051600081526020016040526040516113f59493929190612f35565b6020604051602081039080840390855afa158015611417573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a9061303e565b60405180910390fd5b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f8906130be565b60405180910390fd5b88421115611544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153b90612fde565b60405180910390fd5b84600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258760405161164c9190613158565b60405180910390a3505050505050505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905092915050565b60405161171b90612de4565b604051809103902081565b6004602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060000160049054906101000a90046bffffffffffffffffffffffff16905082565b60006c01000000000000000000000000831082906117d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ca9190612f9c565b60405180910390fd5b5082905092915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611841576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118389190612f9c565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b59061309e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561192e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119259061305e565b60405180910390fd5b6119a8600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16826040518060600160405280603681526020016133ca603691396117dd565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550611a8f600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff168260405180606001604052806030815260200161345b60309139611dfc565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b599190613158565b60405180910390a3611c2a600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611e72565b505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611de9828483611e72565b50505050565b6000804690508091505090565b6000808385019050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff1610158390611e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5d9190612f9c565b60405180910390fd5b50809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ebc57506000816bffffffffffffffffffffffff16115b1561216857600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612014576000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611f5f576000611fdb565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b9050600061200282856040518060600160405280602881526020016134b1602891396117dd565b90506120108684848461216d565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612167576000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116120b257600061212e565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b90506000612155828560405180606001604052806027815260200161343460279139611dfc565b90506121638584848461216d565b5050505b5b505050565b60006121914360405180606001604052806034815260200161340060349139612460565b905060008463ffffffff1611801561222657508063ffffffff16600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b156122c15781600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550612409565b60405180604001604052808263ffffffff168152602001836bffffffffffffffffffffffff16815250600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505060018401600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405161245192919061318e565b60405180910390a25050505050565b6000640100000000831082906124ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a39190612f9c565b60405180910390fd5b5082905092915050565b6040518060400160405280600063ffffffff16815260200160006bffffffffffffffffffffffff1681525090565b6000813590506124f3816132d0565b92915050565b600081359050612508816132e7565b92915050565b60008135905061251d816132fe565b92915050565b60008135905061253281613315565b92915050565b6000813590506125478161332c565b92915050565b60006020828403121561255f57600080fd5b600061256d848285016124e4565b91505092915050565b6000806040838503121561258957600080fd5b6000612597858286016124e4565b92505060206125a8858286016124e4565b9150509250929050565b6000806000606084860312156125c757600080fd5b60006125d5868287016124e4565b93505060206125e6868287016124e4565b92505060406125f78682870161250e565b9150509250925092565b600080600080600080600060e0888a03121561261c57600080fd5b600061262a8a828b016124e4565b975050602061263b8a828b016124e4565b965050604061264c8a828b0161250e565b955050606061265d8a828b0161250e565b945050608061266e8a828b01612538565b93505060a061267f8a828b016124f9565b92505060c06126908a828b016124f9565b91505092959891949750929550565b600080604083850312156126b257600080fd5b60006126c0858286016124e4565b92505060206126d18582860161250e565b9150509250929050565b60008060008060008060c087890312156126f457600080fd5b600061270289828a016124e4565b965050602061271389828a0161250e565b955050604061272489828a0161250e565b945050606061273589828a01612538565b935050608061274689828a016124f9565b92505060a061275789828a016124f9565b9150509295509295509295565b6000806040838503121561277757600080fd5b6000612785858286016124e4565b925050602061279685828601612523565b9150509250929050565b6127a9816131e9565b82525050565b6127b8816131fb565b82525050565b6127c781613207565b82525050565b6127de6127d982613207565b6132b5565b82525050565b60006127ef826131c2565b6127f981856131cd565b9350612809818560208601613282565b612812816132bf565b840191505092915050565b6000612828826131b7565b61283281856131cd565b9350612842818560208601613282565b61284b816132bf565b840191505092915050565b60006128636027836131cd565b91507f4d4152433a3a6765745072696f72566f7465733a206e6f74207965742064657460008301527f65726d696e6564000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006128c96002836131de565b91507f19010000000000000000000000000000000000000000000000000000000000006000830152600282019050919050565b6000612909601f836131cd565b91507f4d4152433a3a7065726d69743a207369676e61747572652065787069726564006000830152602082019050919050565b60006129496022836131cd565b91507f4d4152433a3a64656c656761746542795369673a20696e76616c6964206e6f6e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006129af6026836131cd565b91507f4d4152433a3a64656c656761746542795369673a20696e76616c69642073696760008301527f6e617475726500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a15601f836131cd565b91507f4d4152433a3a7065726d69743a20696e76616c6964207369676e6174757265006000830152602082019050919050565b6000612a556052836131de565b91507f5065726d69742861646472657373206f776e65722c616464726573732073706560008301527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208301527f2c75696e7432353620646561646c696e652900000000000000000000000000006040830152605282019050919050565b6000612ae1603a836131cd565b91507f4d4152433a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260008301527f616e7366657220746f20746865207a65726f20616464726573730000000000006020830152604082019050919050565b6000612b476043836131de565b91507f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353660008301527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208301527f63742900000000000000000000000000000000000000000000000000000000006040830152604382019050919050565b6000612bd36026836131cd565b91507f4d4152433a3a64656c656761746542795369673a207369676e6174757265206560008301527f78706972656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612c39603c836131cd565b91507f4d4152433a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260008301527f616e736665722066726f6d20746865207a65726f2061646472657373000000006020830152604082019050919050565b6000612c9f603a836131de565b91507f44656c65676174696f6e28616464726573732064656c6567617465652c75696e60008301527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020830152603a82019050919050565b6000612d05601a836131cd565b91507f4d4152433a3a7065726d69743a20756e617574686f72697a65640000000000006000830152602082019050919050565b612d4181613231565b82525050565b612d508161323b565b82525050565b612d5f8161324b565b82525050565b612d6e81613270565b82525050565b612d7d81613258565b82525050565b6000612d8e826128bc565b9150612d9a82856127cd565b602082019150612daa82846127cd565b6020820191508190509392505050565b6000612dc582612a48565b9150819050919050565b6000612dda82612b3a565b9150819050919050565b6000612def82612c92565b9150819050919050565b6000602082019050612e0e60008301846127a0565b92915050565b6000602082019050612e2960008301846127af565b92915050565b6000602082019050612e4460008301846127be565b92915050565b600060c082019050612e5f60008301896127be565b612e6c60208301886127a0565b612e7960408301876127a0565b612e866060830186612d38565b612e936080830185612d38565b612ea060a0830184612d38565b979650505050505050565b6000608082019050612ec060008301876127be565b612ecd60208301866127a0565b612eda6040830185612d38565b612ee76060830184612d38565b95945050505050565b6000608082019050612f0560008301876127be565b612f1260208301866127be565b612f1f6040830185612d38565b612f2c60608301846127a0565b95945050505050565b6000608082019050612f4a60008301876127be565b612f576020830186612d56565b612f6460408301856127be565b612f7160608301846127be565b95945050505050565b60006020820190508181036000830152612f94818461281d565b905092915050565b60006020820190508181036000830152612fb681846127e4565b905092915050565b60006020820190508181036000830152612fd781612856565b9050919050565b60006020820190508181036000830152612ff7816128fc565b9050919050565b600060208201905081810360008301526130178161293c565b9050919050565b60006020820190508181036000830152613037816129a2565b9050919050565b6000602082019050818103600083015261305781612a08565b9050919050565b6000602082019050818103600083015261307781612ad4565b9050919050565b6000602082019050818103600083015261309781612bc6565b9050919050565b600060208201905081810360008301526130b781612c2c565b9050919050565b600060208201905081810360008301526130d781612cf8565b9050919050565b60006020820190506130f36000830184612d38565b92915050565b600060208201905061310e6000830184612d47565b92915050565b60006040820190506131296000830185612d47565b6131366020830184612d74565b9392505050565b60006020820190506131526000830184612d56565b92915050565b600060208201905061316d6000830184612d65565b92915050565b60006020820190506131886000830184612d74565b92915050565b60006040820190506131a36000830185612d65565b6131b06020830184612d65565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b60006131f482613211565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006bffffffffffffffffffffffff82169050919050565b600061327b82613258565b9050919050565b60005b838110156132a0578082015181840152602081019050613285565b838111156132af576000848401525b50505050565b6000819050919050565b6000601f19601f8301169050919050565b6132d9816131e9565b81146132e457600080fd5b50565b6132f081613207565b81146132fb57600080fd5b50565b61330781613231565b811461331257600080fd5b50565b61331e8161323b565b811461332957600080fd5b50565b6133358161324b565b811461334057600080fd5b5056fe4d4152433a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e63654d4152433a3a617070726f76653a20616d6f756e74206578636565647320393620626974734d4152433a3a7065726d69743a20616d6f756e74206578636565647320393620626974734d4152433a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d4152433a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974734d4152433a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f77734d4152433a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f77734d4152433a3a7472616e736665723a20616d6f756e74206578636565647320393620626974734d4152433a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773a365627a7a72315820049fba3d759752c95d5cba0892c17e4070fb87154bf916053fa3fb5089a1b5326c6578706572696d656e74616cf564736f6c63430005110040
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f6d4b0b2bb39e125c797e51c6a5c636377236d3d
-----Decoded View---------------
Arg [0] : account (address): 0xf6d4b0B2bB39E125C797e51c6A5c636377236D3D
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000f6d4b0b2bb39e125c797e51c6a5c636377236d3d
Deployed Bytecode Sourcemap
6637:14750:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6637:14750:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6708:43;;;:::i;:::-;;;;;;;;;;;;;;;;10624:419;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7012:46;;;:::i;:::-;;;;;;;;;;;;;;;;7942:122;;;:::i;:::-;;;;;;;;;;;;;;;;13710:672;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8365:137;;;:::i;:::-;;;;;;;;;;;;;;;;6913:35;;;:::i;:::-;;;;;;;;;;;;;;;;7392:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14530:102;;;;;;;;;;;;;;;;:::i;:::-;;7820:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;12790:108;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;16709:1218;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8583:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;6812:38;;;:::i;:::-;;;;;;;;;;;;;;;;13162:238;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;16056:222;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;15066:789;;;;;;;;;;;;;;;;:::i;:::-;;11533:1054;;;;;;;;;;;;;;;;:::i;:::-;;10010:136;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8158:117;;;:::i;:::-;;;;;;;;;;;;;;;;7681:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;6708:43;;;;;;;;;;;;;;;;;;;:::o;10624:419::-;10692:4;10709:13;10755:2;10737:9;:21;10733:173;;;10791:2;10775:19;;10733:173;;;10836:58;10843:9;10836:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;10827:67;;10733:173;10952:6;10918:10;:22;10929:10;10918:22;;;;;;;;;;;;;;;:31;10941:7;10918:31;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;10997:7;10976:37;;10985:10;10976:37;;;11006:6;10976:37;;;;;;;;;;;;;;;11031:4;11024:11;;;10624:419;;;;:::o;7012:46::-;;;;:::o;7942:122::-;7984:80;;;;;;;;;;;;;;7942:122;:::o;13710:672::-;13792:4;13809:15;13827:10;13809:28;;13848:23;13874:10;:15;13885:3;13874:15;;;;;;;;;;;;;;;:24;13890:7;13874:24;;;;;;;;;;;;;;;;;;;;;;;;;13848:50;;13909:13;13925:58;13932:9;13925:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;13909:74;;14011:3;14000:14;;:7;:14;;;;:48;;;;;14045:2;14018:30;;:16;:30;;;;14000:48;13996:311;;;14065:19;14087:96;14093:16;14111:6;14087:96;;;;;;;;;;;;;;;;;:5;:96::i;:::-;14065:118;;14225:12;14198:10;:15;14209:3;14198:15;;;;;;;;;;;;;;;:24;14214:7;14198:24;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14273:7;14259:36;;14268:3;14259:36;;;14282:12;14259:36;;;;;;;;;;;;;;;13996:311;;14319:33;14335:3;14340;14345:6;14319:15;:33::i;:::-;14370:4;14363:11;;;;;13710:672;;;;;:::o;8365:137::-;8407:95;;;;;;;;;;;;;;8365:137;:::o;6913:35::-;6946:2;6913:35;:::o;7392:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;14530:102::-;14592:32;14602:10;14614:9;14592;:32::i;:::-;14530:102;:::o;7820:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;12790:108::-;12849:4;12873:8;:17;12882:7;12873:17;;;;;;;;;;;;;;;;;;;;;;;;;12866:24;;;;12790:108;;;:::o;16709:1218::-;16788:6;16829:12;16815:11;:26;16807:78;;;;;;;;;;;;;;;;;;;;;;16898:19;16920:14;:23;16935:7;16920:23;;;;;;;;;;;;;;;;;;;;;;;;;16898:45;;16974:1;16958:12;:17;;;16954:58;;;16999:1;16992:8;;;;;16954:58;17124:11;17072;:20;17084:7;17072:20;;;;;;;;;;;;;;;:38;17108:1;17093:12;:16;17072:38;;;;;;;;;;;;;;;:48;;;;;;;;;;;;:63;;;17068:147;;17159:11;:20;17171:7;17159:20;;;;;;;;;;;;;;;:38;17195:1;17180:12;:16;17159:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;17152:51;;;;;17068:147;17312:11;17276;:20;17288:7;17276:20;;;;;;;;;;;;;;;:23;17297:1;17276:23;;;;;;;;;;;;;:33;;;;;;;;;;;;:47;;;17272:88;;;17347:1;17340:8;;;;;17272:88;17372:12;17387:1;17372:16;;17399:12;17429:1;17414:12;:16;17399:31;;17441:428;17456:5;17448:13;;:5;:13;;;17441:428;;;17478:13;17520:1;17511:5;17503;:13;17502:19;;;;;;;;17494:5;:27;17478:43;;17563:20;;:::i;:::-;17586:11;:20;17598:7;17586:20;;;;;;;;;;;;;;;:28;17607:6;17586:28;;;;;;;;;;;;;;;17563:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17649:11;17633:2;:12;;;:27;;;17629:229;;;17688:2;:8;;;17681:15;;;;;;;;;17629:229;17737:11;17722:2;:12;;;:26;;;17718:140;;;17777:6;17769:14;;17718:140;;;17841:1;17832:6;:10;17824:18;;17718:140;17441:428;;;;;17886:11;:20;17898:7;17886:20;;;;;;;;;;;;;;;:27;17907:5;17886:27;;;;;;;;;;;;;;;:33;;;;;;;;;;;;17879:40;;;;;16709:1218;;;;;:::o;8583:39::-;;;;;;;;;;;;;;;;;:::o;6812:38::-;;;;;;;;;;;;;;;;;;;:::o;13162:238::-;13227:4;13244:13;13260:59;13267:9;13260:59;;;;;;;;;;;;;;;;;:6;:59::i;:::-;13244:75;;13330:40;13346:10;13358:3;13363:6;13330:15;:40::i;:::-;13388:4;13381:11;;;13162:238;;;;:::o;16056:222::-;16121:6;16140:19;16162:14;:23;16177:7;16162:23;;;;;;;;;;;;;;;;;;;;;;;;;16140:45;;16218:1;16203:12;:16;;;:67;;16269:1;16203:67;;;16222:11;:20;16234:7;16222:20;;;;;;;;;;;;;;;:38;16258:1;16243:12;:16;16222:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;16203:67;16196:74;;;16056:222;;;:::o;15066:789::-;15182:23;7984:80;;;;;;;;;;;;;;15262:4;;;;;;;;;;;;;;;;;15246:22;;;;;;15270:12;:10;:12::i;:::-;15292:4;15218:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15218:80:0;;;15208:91;;;;;;15182:117;;15310:18;8204:71;;;;;;;;;;;;;;15373:9;15384:5;15391:6;15341:57;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15341:57:0;;;15331:68;;;;;;15310:89;;15410:14;15466:15;15483:10;15437:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15437:57:0;;;15427:68;;;;;;15410:85;;15506:17;15526:26;15536:6;15544:1;15547;15550;15526:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15526:26:0;;;;;;;;15506:46;;15592:1;15571:23;;:9;:23;;;;15563:74;;;;;;;;;;;;;;;;;;;;;;15665:6;:17;15672:9;15665:17;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;15656:5;:28;15648:75;;;;;;;;;;;;;;;;;;;;;;15749:6;15742:3;:13;;15734:64;;;;;;;;;;;;;;;;;;;;;;15816:31;15826:9;15837;15816;:31::i;:::-;15809:38;;;;15066:789;;;;;;:::o;11533:1054::-;11663:13;11709:2;11691:9;:21;11687:172;;;11745:2;11729:19;;11687:172;;;11790:57;11797:9;11790:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;11781:66;;11687:172;11871:23;7984:80;;;;;;;;;;;;;;11951:4;;;;;;;;;;;;;;;;;11935:22;;;;;;11959:12;:10;:12::i;:::-;11981:4;11907:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11907:80:0;;;11897:91;;;;;;11871:117;;11999:18;8407:95;;;;;;;;;;;;;;12058:5;12065:7;12074:9;12085:6;:13;12092:5;12085:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;12102:8;12030:81;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12030:81:0;;;12020:92;;;;;;11999:113;;12123:14;12179:15;12196:10;12150:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12150:57:0;;;12140:68;;;;;;12123:85;;12219:17;12239:26;12249:6;12257:1;12260;12263;12239:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12239:26:0;;;;;;;;12219:46;;12305:1;12284:23;;:9;:23;;;;12276:67;;;;;;;;;;;;;;;;;;;;;;12375:5;12362:18;;:9;:18;;;12354:57;;;;;;;;;;;;;;;;;;;;;;12437:8;12430:3;:15;;12422:59;;;;;;;;;;;;;;;;;;;;;;12523:6;12494:10;:17;12505:5;12494:17;;;;;;;;;;;;;;;:26;12512:7;12494:26;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;12563:7;12547:32;;12556:5;12547:32;;;12572:6;12547:32;;;;;;;;;;;;;;;11533:1054;;;;;;;;;;;;:::o;10010:136::-;10086:4;10110:10;:19;10121:7;10110:19;;;;;;;;;;;;;;;:28;10130:7;10110:28;;;;;;;;;;;;;;;;;;;;;;;;;10103:35;;;;10010:136;;;;:::o;8158:117::-;8204:71;;;;;;;;;;;;;;8158:117;:::o;7681:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20693:161::-;20768:6;20799:5;20795:1;:9;20806:12;20787:32;;;;;;;;;;;;;;;;;;;;;;;;;20844:1;20830:16;;20693:161;;;;:::o;21058:165::-;21144:6;21176:1;21171:6;;:1;:6;;;;21179:12;21163:29;;;;;;;;;;;;;;;;;;;;;;;;;21214:1;21210;:5;21203:12;;21058:165;;;;;:::o;18318:614::-;18427:1;18412:17;;:3;:17;;;;18404:90;;;;;;;;;;;;;;;;;;;;;;18528:1;18513:17;;:3;:17;;;;18505:88;;;;;;;;;;;;;;;;;;;;;;18622:86;18628:8;:13;18637:3;18628:13;;;;;;;;;;;;;;;;;;;;;;;;;18643:6;18622:86;;;;;;;;;;;;;;;;;:5;:86::i;:::-;18606:8;:13;18615:3;18606:13;;;;;;;;;;;;;;;;:102;;;;;;;;;;;;;;;;;;18735:80;18741:8;:13;18750:3;18741:13;;;;;;;;;;;;;;;;;;;;;;;;;18756:6;18735:80;;;;;;;;;;;;;;;;;:5;:80::i;:::-;18719:8;:13;18728:3;18719:13;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;18845:3;18831:26;;18840:3;18831:26;;;18850:6;18831:26;;;;;;;;;;;;;;;18870:54;18885:9;:14;18895:3;18885:14;;;;;;;;;;;;;;;;;;;;;;;;;18901:9;:14;18911:3;18901:14;;;;;;;;;;;;;;;;;;;;;;;;;18917:6;18870:14;:54::i;:::-;18318:614;;;:::o;17935:375::-;18012:23;18038:9;:20;18048:9;18038:20;;;;;;;;;;;;;;;;;;;;;;;;;18012:46;;18069:23;18095:8;:19;18104:9;18095:19;;;;;;;;;;;;;;;;;;;;;;;;;18069:45;;18148:9;18125;:20;18135:9;18125:20;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18219:9;18175:54;;18202:15;18175:54;;18191:9;18175:54;;;;;;;;;;;;18242:60;18257:15;18274:9;18285:16;18242:14;:60::i;:::-;17935:375;;;;:::o;21231:153::-;21276:4;21293:15;21341:9;21330:20;;21369:7;21362:14;;;21231:153;:::o;20862:188::-;20948:6;20967:8;20982:1;20978;:5;20967:16;;21007:1;21002:6;;:1;:6;;;;21010:12;20994:29;;;;;;;;;;;;;;;;;;;;;;;;;21041:1;21034:8;;;20862:188;;;;;:::o;18940:939::-;19045:6;19035:16;;:6;:16;;;;:30;;;;;19064:1;19055:6;:10;;;19035:30;19031:841;;;19104:1;19086:20;;:6;:20;;;19082:382;;19127:16;19146:14;:22;19161:6;19146:22;;;;;;;;;;;;;;;;;;;;;;;;;19127:41;;19187:16;19218:1;19206:9;:13;;;:60;;19265:1;19206:60;;;19222:11;:19;19234:6;19222:19;;;;;;;;;;;;;;;:34;19254:1;19242:9;:13;19222:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;19206:60;19187:79;;19285:16;19304:68;19310:9;19321:6;19304:68;;;;;;;;;;;;;;;;;:5;:68::i;:::-;19285:87;;19391:57;19408:6;19416:9;19427;19438;19391:16;:57::i;:::-;19082:382;;;;19502:1;19484:20;;:6;:20;;;19480:381;;19525:16;19544:14;:22;19559:6;19544:22;;;;;;;;;;;;;;;;;;;;;;;;;19525:41;;19585:16;19616:1;19604:9;:13;;;:60;;19663:1;19604:60;;;19620:11;:19;19632:6;19620:19;;;;;;;;;;;;;;;:34;19652:1;19640:9;:13;19620:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;19604:60;19585:79;;19683:16;19702:67;19708:9;19719:6;19702:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;19683:86;;19788:57;19805:6;19813:9;19824;19835;19788:16;:57::i;:::-;19480:381;;;;19031:841;18940:939;;;:::o;19887:629::-;20005:18;20026:76;20033:12;20026:76;;;;;;;;;;;;;;;;;:6;:76::i;:::-;20005:97;;20132:1;20117:12;:16;;;:85;;;;;20191:11;20137:65;;:11;:22;20149:9;20137:22;;;;;;;;;;;;;;;:40;20175:1;20160:12;:16;20137:40;;;;;;;;;;;;;;;:50;;;;;;;;;;;;:65;;;20117:85;20113:329;;;20266:8;20217:11;:22;20229:9;20217:22;;;;;;;;;;;;;;;:40;20255:1;20240:12;:16;20217:40;;;;;;;;;;;;;;;:46;;;:57;;;;;;;;;;;;;;;;;;20113:329;;;20342:33;;;;;;;;20353:11;20342:33;;;;;;20366:8;20342:33;;;;;20303:11;:22;20315:9;20303:22;;;;;;;;;;;;;;;:36;20326:12;20303:36;;;;;;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20431:1;20416:12;:16;20388:14;:25;20403:9;20388:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;20113:329;20478:9;20457:51;;;20489:8;20499;20457:51;;;;;;;;;;;;;;;;19887:629;;;;;:::o;20524:161::-;20599:6;20630:5;20626:1;:9;20637:12;20618:32;;;;;;;;;;;;;;;;;;;;;;;;;20675:1;20661:16;;20524:161;;;;:::o;6637:14750::-;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:130;;222:6;209:20;200:29;;234:33;261:5;234:33;;;194:78;;;;;279:130;;359:6;346:20;337:29;;371:33;398:5;371:33;;;331:78;;;;;416:128;;495:6;482:20;473:29;;507:32;533:5;507:32;;;467:77;;;;;551:126;;629:6;616:20;607:29;;641:31;666:5;641:31;;;601:76;;;;;684:241;;788:2;776:9;767:7;763:23;759:32;756:2;;;804:1;801;794:12;756:2;839:1;856:53;901:7;892:6;881:9;877:22;856:53;;;846:63;;818:97;750:175;;;;;932:366;;;1053:2;1041:9;1032:7;1028:23;1024:32;1021:2;;;1069:1;1066;1059:12;1021:2;1104:1;1121:53;1166:7;1157:6;1146:9;1142:22;1121:53;;;1111:63;;1083:97;1211:2;1229:53;1274:7;1265:6;1254:9;1250:22;1229:53;;;1219:63;;1190:98;1015:283;;;;;;1305:491;;;;1443:2;1431:9;1422:7;1418:23;1414:32;1411:2;;;1459:1;1456;1449:12;1411:2;1494:1;1511:53;1556:7;1547:6;1536:9;1532:22;1511:53;;;1501:63;;1473:97;1601:2;1619:53;1664:7;1655:6;1644:9;1640:22;1619:53;;;1609:63;;1580:98;1709:2;1727:53;1772:7;1763:6;1752:9;1748:22;1727:53;;;1717:63;;1688:98;1405:391;;;;;;1803:991;;;;;;;;2007:3;1995:9;1986:7;1982:23;1978:33;1975:2;;;2024:1;2021;2014:12;1975:2;2059:1;2076:53;2121:7;2112:6;2101:9;2097:22;2076:53;;;2066:63;;2038:97;2166:2;2184:53;2229:7;2220:6;2209:9;2205:22;2184:53;;;2174:63;;2145:98;2274:2;2292:53;2337:7;2328:6;2317:9;2313:22;2292:53;;;2282:63;;2253:98;2382:2;2400:53;2445:7;2436:6;2425:9;2421:22;2400:53;;;2390:63;;2361:98;2490:3;2509:51;2552:7;2543:6;2532:9;2528:22;2509:51;;;2499:61;;2469:97;2597:3;2616:53;2661:7;2652:6;2641:9;2637:22;2616:53;;;2606:63;;2576:99;2706:3;2725:53;2770:7;2761:6;2750:9;2746:22;2725:53;;;2715:63;;2685:99;1969:825;;;;;;;;;;;2801:366;;;2922:2;2910:9;2901:7;2897:23;2893:32;2890:2;;;2938:1;2935;2928:12;2890:2;2973:1;2990:53;3035:7;3026:6;3015:9;3011:22;2990:53;;;2980:63;;2952:97;3080:2;3098:53;3143:7;3134:6;3123:9;3119:22;3098:53;;;3088:63;;3059:98;2884:283;;;;;;3174:865;;;;;;;3361:3;3349:9;3340:7;3336:23;3332:33;3329:2;;;3378:1;3375;3368:12;3329:2;3413:1;3430:53;3475:7;3466:6;3455:9;3451:22;3430:53;;;3420:63;;3392:97;3520:2;3538:53;3583:7;3574:6;3563:9;3559:22;3538:53;;;3528:63;;3499:98;3628:2;3646:53;3691:7;3682:6;3671:9;3667:22;3646:53;;;3636:63;;3607:98;3736:2;3754:51;3797:7;3788:6;3777:9;3773:22;3754:51;;;3744:61;;3715:96;3842:3;3861:53;3906:7;3897:6;3886:9;3882:22;3861:53;;;3851:63;;3821:99;3951:3;3970:53;4015:7;4006:6;3995:9;3991:22;3970:53;;;3960:63;;3930:99;3323:716;;;;;;;;;4046:364;;;4166:2;4154:9;4145:7;4141:23;4137:32;4134:2;;;4182:1;4179;4172:12;4134:2;4217:1;4234:53;4279:7;4270:6;4259:9;4255:22;4234:53;;;4224:63;;4196:97;4324:2;4342:52;4386:7;4377:6;4366:9;4362:22;4342:52;;;4332:62;;4303:97;4128:282;;;;;;4417:113;4500:24;4518:5;4500:24;;;4495:3;4488:37;4482:48;;;4537:104;4614:21;4629:5;4614:21;;;4609:3;4602:34;4596:45;;;4648:113;4731:24;4749:5;4731:24;;;4726:3;4719:37;4713:48;;;4768:152;4869:45;4889:24;4907:5;4889:24;;;4869:45;;;4864:3;4857:58;4851:69;;;4927:347;;5039:39;5072:5;5039:39;;;5090:71;5154:6;5149:3;5090:71;;;5083:78;;5166:52;5211:6;5206:3;5199:4;5192:5;5188:16;5166:52;;;5239:29;5261:6;5239:29;;;5234:3;5230:39;5223:46;;5019:255;;;;;;5281:339;;5389:35;5418:5;5389:35;;;5436:71;5500:6;5495:3;5436:71;;;5429:78;;5512:52;5557:6;5552:3;5545:4;5538:5;5534:16;5512:52;;;5585:29;5607:6;5585:29;;;5580:3;5576:39;5569:46;;5369:251;;;;;;5628:376;;5788:67;5852:2;5847:3;5788:67;;;5781:74;;5888:34;5884:1;5879:3;5875:11;5868:55;5957:9;5952:2;5947:3;5943:12;5936:31;5995:2;5990:3;5986:12;5979:19;;5774:230;;;;6013:398;;6191:84;6273:1;6268:3;6191:84;;;6184:91;;6308:66;6304:1;6299:3;6295:11;6288:87;6403:1;6398:3;6394:11;6387:18;;6177:234;;;;6420:331;;6580:67;6644:2;6639:3;6580:67;;;6573:74;;6680:33;6676:1;6671:3;6667:11;6660:54;6742:2;6737:3;6733:12;6726:19;;6566:185;;;;6760:371;;6920:67;6984:2;6979:3;6920:67;;;6913:74;;7020:34;7016:1;7011:3;7007:11;7000:55;7089:4;7084:2;7079:3;7075:12;7068:26;7122:2;7117:3;7113:12;7106:19;;6906:225;;;;7140:375;;7300:67;7364:2;7359:3;7300:67;;;7293:74;;7400:34;7396:1;7391:3;7387:11;7380:55;7469:8;7464:2;7459:3;7455:12;7448:30;7506:2;7501:3;7497:12;7490:19;;7286:229;;;;7524:331;;7684:67;7748:2;7743:3;7684:67;;;7677:74;;7784:33;7780:1;7775:3;7771:11;7764:54;7846:2;7841:3;7837:12;7830:19;;7670:185;;;;7864:492;;8042:85;8124:2;8119:3;8042:85;;;8035:92;;8160:34;8156:1;8151:3;8147:11;8140:55;8229:34;8224:2;8219:3;8215:12;8208:56;8298:20;8293:2;8288:3;8284:12;8277:42;8347:2;8342:3;8338:12;8331:19;;8028:328;;;;8365:395;;8525:67;8589:2;8584:3;8525:67;;;8518:74;;8625:34;8621:1;8616:3;8612:11;8605:55;8694:28;8689:2;8684:3;8680:12;8673:50;8751:2;8746:3;8742:12;8735:19;;8511:249;;;;8769:477;;8947:85;9029:2;9024:3;8947:85;;;8940:92;;9065:34;9061:1;9056:3;9052:11;9045:55;9134:34;9129:2;9124:3;9120:12;9113:56;9203:5;9198:2;9193:3;9189:12;9182:27;9237:2;9232:3;9228:12;9221:19;;8933:313;;;;9255:375;;9415:67;9479:2;9474:3;9415:67;;;9408:74;;9515:34;9511:1;9506:3;9502:11;9495:55;9584:8;9579:2;9574:3;9570:12;9563:30;9621:2;9616:3;9612:12;9605:19;;9401:229;;;;9639:397;;9799:67;9863:2;9858:3;9799:67;;;9792:74;;9899:34;9895:1;9890:3;9886:11;9879:55;9968:30;9963:2;9958:3;9954:12;9947:52;10027:2;10022:3;10018:12;10011:19;;9785:251;;;;10045:431;;10223:85;10305:2;10300:3;10223:85;;;10216:92;;10341:34;10337:1;10332:3;10328:11;10321:55;10410:28;10405:2;10400:3;10396:12;10389:50;10467:2;10462:3;10458:12;10451:19;;10209:267;;;;10485:326;;10645:67;10709:2;10704:3;10645:67;;;10638:74;;10745:28;10741:1;10736:3;10732:11;10725:49;10802:2;10797:3;10793:12;10786:19;;10631:180;;;;10819:113;10902:24;10920:5;10902:24;;;10897:3;10890:37;10884:48;;;10939:110;11020:23;11037:5;11020:23;;;11015:3;11008:36;11002:47;;;11056:107;11135:22;11151:5;11135:22;;;11130:3;11123:35;11117:46;;;11170:124;11252:36;11282:5;11252:36;;;11247:3;11240:49;11234:60;;;11301:110;11382:23;11399:5;11382:23;;;11377:3;11370:36;11364:47;;;11418:650;;11673:148;11817:3;11673:148;;;11666:155;;11832:75;11903:3;11894:6;11832:75;;;11929:2;11924:3;11920:12;11913:19;;11943:75;12014:3;12005:6;11943:75;;;12040:2;12035:3;12031:12;12024:19;;12060:3;12053:10;;11654:414;;;;;;12075:372;;12274:148;12418:3;12274:148;;;12267:155;;12439:3;12432:10;;12255:192;;;;12454:372;;12653:148;12797:3;12653:148;;;12646:155;;12818:3;12811:10;;12634:192;;;;12833:372;;13032:148;13176:3;13032:148;;;13025:155;;13197:3;13190:10;;13013:192;;;;13212:213;;13330:2;13319:9;13315:18;13307:26;;13344:71;13412:1;13401:9;13397:17;13388:6;13344:71;;;13301:124;;;;;13432:201;;13544:2;13533:9;13529:18;13521:26;;13558:65;13620:1;13609:9;13605:17;13596:6;13558:65;;;13515:118;;;;;13640:213;;13758:2;13747:9;13743:18;13735:26;;13772:71;13840:1;13829:9;13825:17;13816:6;13772:71;;;13729:124;;;;;13860:771;;14118:3;14107:9;14103:19;14095:27;;14133:71;14201:1;14190:9;14186:17;14177:6;14133:71;;;14215:72;14283:2;14272:9;14268:18;14259:6;14215:72;;;14298;14366:2;14355:9;14351:18;14342:6;14298:72;;;14381;14449:2;14438:9;14434:18;14425:6;14381:72;;;14464:73;14532:3;14521:9;14517:19;14508:6;14464:73;;;14548;14616:3;14605:9;14601:19;14592:6;14548:73;;;14089:542;;;;;;;;;;14638:547;;14840:3;14829:9;14825:19;14817:27;;14855:71;14923:1;14912:9;14908:17;14899:6;14855:71;;;14937:72;15005:2;14994:9;14990:18;14981:6;14937:72;;;15020;15088:2;15077:9;15073:18;15064:6;15020:72;;;15103;15171:2;15160:9;15156:18;15147:6;15103:72;;;14811:374;;;;;;;;15192:547;;15394:3;15383:9;15379:19;15371:27;;15409:71;15477:1;15466:9;15462:17;15453:6;15409:71;;;15491:72;15559:2;15548:9;15544:18;15535:6;15491:72;;;15574;15642:2;15631:9;15627:18;15618:6;15574:72;;;15657;15725:2;15714:9;15710:18;15701:6;15657:72;;;15365:374;;;;;;;;15746:539;;15944:3;15933:9;15929:19;15921:27;;15959:71;16027:1;16016:9;16012:17;16003:6;15959:71;;;16041:68;16105:2;16094:9;16090:18;16081:6;16041:68;;;16120:72;16188:2;16177:9;16173:18;16164:6;16120:72;;;16203;16271:2;16260:9;16256:18;16247:6;16203:72;;;15915:370;;;;;;;;16292:293;;16426:2;16415:9;16411:18;16403:26;;16476:9;16470:4;16466:20;16462:1;16451:9;16447:17;16440:47;16501:74;16570:4;16561:6;16501:74;;;16493:82;;16397:188;;;;;16592:301;;16730:2;16719:9;16715:18;16707:26;;16780:9;16774:4;16770:20;16766:1;16755:9;16751:17;16744:47;16805:78;16878:4;16869:6;16805:78;;;16797:86;;16701:192;;;;;16900:407;;17091:2;17080:9;17076:18;17068:26;;17141:9;17135:4;17131:20;17127:1;17116:9;17112:17;17105:47;17166:131;17292:4;17166:131;;;17158:139;;17062:245;;;;17314:407;;17505:2;17494:9;17490:18;17482:26;;17555:9;17549:4;17545:20;17541:1;17530:9;17526:17;17519:47;17580:131;17706:4;17580:131;;;17572:139;;17476:245;;;;17728:407;;17919:2;17908:9;17904:18;17896:26;;17969:9;17963:4;17959:20;17955:1;17944:9;17940:17;17933:47;17994:131;18120:4;17994:131;;;17986:139;;17890:245;;;;18142:407;;18333:2;18322:9;18318:18;18310:26;;18383:9;18377:4;18373:20;18369:1;18358:9;18354:17;18347:47;18408:131;18534:4;18408:131;;;18400:139;;18304:245;;;;18556:407;;18747:2;18736:9;18732:18;18724:26;;18797:9;18791:4;18787:20;18783:1;18772:9;18768:17;18761:47;18822:131;18948:4;18822:131;;;18814:139;;18718:245;;;;18970:407;;19161:2;19150:9;19146:18;19138:26;;19211:9;19205:4;19201:20;19197:1;19186:9;19182:17;19175:47;19236:131;19362:4;19236:131;;;19228:139;;19132:245;;;;19384:407;;19575:2;19564:9;19560:18;19552:26;;19625:9;19619:4;19615:20;19611:1;19600:9;19596:17;19589:47;19650:131;19776:4;19650:131;;;19642:139;;19546:245;;;;19798:407;;19989:2;19978:9;19974:18;19966:26;;20039:9;20033:4;20029:20;20025:1;20014:9;20010:17;20003:47;20064:131;20190:4;20064:131;;;20056:139;;19960:245;;;;20212:407;;20403:2;20392:9;20388:18;20380:26;;20453:9;20447:4;20443:20;20439:1;20428:9;20424:17;20417:47;20478:131;20604:4;20478:131;;;20470:139;;20374:245;;;;20626:213;;20744:2;20733:9;20729:18;20721:26;;20758:71;20826:1;20815:9;20811:17;20802:6;20758:71;;;20715:124;;;;;20846:209;;20962:2;20951:9;20947:18;20939:26;;20976:69;21042:1;21031:9;21027:17;21018:6;20976:69;;;20933:122;;;;;21062:316;;21204:2;21193:9;21189:18;21181:26;;21218:69;21284:1;21273:9;21269:17;21260:6;21218:69;;;21298:70;21364:2;21353:9;21349:18;21340:6;21298:70;;;21175:203;;;;;;21385:205;;21499:2;21488:9;21484:18;21476:26;;21513:67;21577:1;21566:9;21562:17;21553:6;21513:67;;;21470:120;;;;;21597:211;;21714:2;21703:9;21699:18;21691:26;;21728:70;21795:1;21784:9;21780:17;21771:6;21728:70;;;21685:123;;;;;21815:209;;21931:2;21920:9;21916:18;21908:26;;21945:69;22011:1;22000:9;21996:17;21987:6;21945:69;;;21902:122;;;;;22031:320;;22175:2;22164:9;22160:18;22152:26;;22189:70;22256:1;22245:9;22241:17;22232:6;22189:70;;;22270:71;22337:2;22326:9;22322:18;22313:6;22270:71;;;22146:205;;;;;;22358:118;;22448:5;22442:12;22432:22;;22413:63;;;;22483:122;;22577:5;22571:12;22561:22;;22542:63;;;;22613:163;;22728:6;22723:3;22716:19;22765:4;22760:3;22756:14;22741:29;;22709:67;;;;;22785:145;;22921:3;22906:18;;22899:31;;;;;22938:91;;23000:24;23018:5;23000:24;;;22989:35;;22983:46;;;;23036:85;;23109:5;23102:13;23095:21;23084:32;;23078:43;;;;23128:72;;23190:5;23179:16;;23173:27;;;;23207:121;;23280:42;23273:5;23269:54;23258:65;;23252:76;;;;23335:72;;23397:5;23386:16;;23380:27;;;;23414:88;;23486:10;23479:5;23475:22;23464:33;;23458:44;;;;23509:81;;23580:4;23573:5;23569:16;23558:27;;23552:38;;;;23597:104;;23669:26;23662:5;23658:38;23647:49;;23641:60;;;;23708:106;;23786:23;23803:5;23786:23;;;23773:36;;23767:47;;;;23822:268;23887:1;23894:101;23908:6;23905:1;23902:13;23894:101;;;23984:1;23979:3;23975:11;23969:18;23965:1;23960:3;23956:11;23949:39;23930:2;23927:1;23923:10;23918:15;;23894:101;;;24010:6;24007:1;24004:13;24001:2;;;24075:1;24066:6;24061:3;24057:16;24050:27;24001:2;23871:219;;;;;24098:74;;24162:5;24151:16;;24145:27;;;;24179:97;;24267:2;24263:7;24258:2;24251:5;24247:14;24243:28;24233:38;;24227:49;;;;24284:117;24353:24;24371:5;24353:24;;;24346:5;24343:35;24333:2;;24392:1;24389;24382:12;24333:2;24327:74;;24408:117;24477:24;24495:5;24477:24;;;24470:5;24467:35;24457:2;;24516:1;24513;24506:12;24457:2;24451:74;;24532:117;24601:24;24619:5;24601:24;;;24594:5;24591:35;24581:2;;24640:1;24637;24630:12;24581:2;24575:74;;24656:115;24724:23;24741:5;24724:23;;;24717:5;24714:34;24704:2;;24762:1;24759;24752:12;24704:2;24698:73;;24778:113;24845:22;24861:5;24845:22;;;24838:5;24835:33;24825:2;;24882:1;24879;24872:12;24825:2;24819:72;
Swarm Source
bzzr://049fba3d759752c95d5cba0892c17e4070fb87154bf916053fa3fb5089a1b532
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.