Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
DEX
Overview
Max Total Supply
250,000,000 KWIK
Holders
2,577 (0.00%)
Market
Price
$0.00 @ 0.000000 ETH
Onchain Market Cap
$152,493.86
Circulating Supply Market Cap
$5,793.05
Other Info
Token Contract (WITH 18 Decimals)
Balance
385.770122961249972155 KWIKValue
$0.24 ( ~0.000101450370729057 Eth) [0.0002%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Kwik
Compiler Version
v0.6.0+commit.26b70077
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-12-10 */ /** *Submitted for verification at Etherscan.io on 2020-12-09 */ pragma solidity ^0.6.0; pragma experimental ABIEncoderV2; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, errorMessage); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction underflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } 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; } 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; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by 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; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Kwik { /// @notice EIP-20 token name for this token string public constant name = "Kwikswap"; /// @notice EIP-20 token symbol for this token string public constant symbol = "KWIK"; /// @notice EIP-20 token decimals for this token uint8 public constant decimals = 18; /// @notice Total number of tokens in circulation uint public totalSupply = 250_000_000e18; // 250,000,000 KWIK /// @notice Address which may mint new tokens address public minter; /// @notice The timestamp after which minting may occur uint public mintingAllowedAfter; /// @notice Minimum time between mints uint32 public constant minimumTimeBetweenMints = 1 days * 365; /// @notice Cap on the percentage of totalSupply that can be minted at each mint uint8 public constant mintCap = 2; /// @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); constructor(address account, address minter_, uint mintingAllowedAfter_) public { require(mintingAllowedAfter_ >= block.timestamp, "KWIK::constructor: minting can only begin after deployment"); balances[account] = uint96(totalSupply); emit Transfer(address(0), account, totalSupply); minter = minter_; emit MinterChanged(address(0), minter); mintingAllowedAfter = mintingAllowedAfter_; } function setMinter(address minter_) external { require(msg.sender == minter, "KWIK::setMinter: only the minter can change the minter address"); emit MinterChanged(minter, minter_); minter = minter_; } function mint(address dst, uint rawAmount) external { require(msg.sender == minter, "KWIK::mint: only the minter can mint"); require(block.timestamp >= mintingAllowedAfter, "KWIK::mint: minting not allowed yet"); require(dst != address(0), "KWIK::mint: cannot transfer to the zero address"); // record the mint mintingAllowedAfter = SafeMath.add(block.timestamp, minimumTimeBetweenMints); // mint the amount uint96 amount = safe96(rawAmount, "KWIK::mint: amount exceeds 96 bits"); require(amount <= SafeMath.div(SafeMath.mul(totalSupply, mintCap), 100), "KWIK::mint: exceeded mint cap"); totalSupply = safe96(SafeMath.add(totalSupply, amount), "KWIK::mint: totalSupply exceeds 96 bits"); // transfer the amount to the recipient balances[dst] = add96(balances[dst], amount, "KWIK::mint: transfer amount overflows"); emit Transfer(address(0), dst, amount); // move delegates _moveDelegates(address(0), delegates[dst], amount); } /** * @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]; } function approve(address spender, uint rawAmount) external returns (bool) { uint96 amount; if (rawAmount == uint(-1)) { amount = uint96(-1); } else { amount = safe96(rawAmount, "KWIK::approve: amount exceeds 96 bits"); } allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } 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, "KWIK::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), "KWIK::permit: invalid signature"); require(signatory == owner, "KWIK::permit: unauthorized"); require(now <= deadline, "KWIK::permit: signature expired"); allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function transfer(address dst, uint rawAmount) external returns (bool) { uint96 amount = safe96(rawAmount, "KWIK::transfer: amount exceeds 96 bits"); _transferTokens(msg.sender, dst, amount); return true; } function transferFrom(address src, address dst, uint rawAmount) external returns (bool) { address spender = msg.sender; uint96 spenderAllowance = allowances[src][spender]; uint96 amount = safe96(rawAmount, "KWIK::approve: amount exceeds 96 bits"); if (spender != src && spenderAllowance != uint96(-1)) { uint96 newAllowance = sub96(spenderAllowance, amount, "KWIK::transferFrom: transfer amount exceeds spender allowance"); allowances[src][spender] = newAllowance; emit Approval(src, spender, newAllowance); } _transferTokens(src, dst, amount); return true; } function balanceOf(address account) external view returns (uint) { return balances[account]; } function delegate(address delegatee) public { return _delegate(msg.sender, delegatee); } 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), "KWIK::delegateBySig: invalid signature"); require(nonce == nonces[signatory]++, "KWIK::delegateBySig: invalid nonce"); require(now <= expiry, "KWIK::delegateBySig: signature expired"); return _delegate(signatory, delegatee); } function getPriorVotes(address account, uint blockNumber) public view returns (uint96) { require(blockNumber < block.number, "KWIK::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 getCurrentVotes(address account) external view returns (uint96) { uint32 nCheckpoints = numCheckpoints[account]; return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0; } 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 _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, "KWIK::_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, "KWIK::_moveVotes: vote amount overflows"); _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew); } } } function _transferTokens(address src, address dst, uint96 amount) internal { require(src != address(0), "KWIK::_transferTokens: cannot transfer from the zero address"); require(dst != address(0), "KWIK::_transferTokens: cannot transfer to the zero address"); balances[src] = sub96(balances[src], amount, "KWIK::_transferTokens: transfer amount exceeds balance"); balances[dst] = add96(balances[dst], amount, "KWIK::_transferTokens: transfer amount overflows"); emit Transfer(src, dst, amount); _moveDelegates(delegates[src], delegates[dst], amount); } function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint96 oldVotes, uint96 newVotes) internal { uint32 blockNumber = safe32(block.number, "KWIK::_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 safe96(uint n, string memory errorMessage) internal pure returns (uint96) { require(n < 2**96, errorMessage); return uint96(n); } function safe32(uint n, string memory errorMessage) internal pure returns (uint32) { require(n < 2**32, errorMessage); return uint32(n); } function sub96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) { require(b <= a, errorMessage); return a - b; } function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) { uint96 c = a + b; require(c >= a, errorMessage); return c; } 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"},{"internalType":"address","name":"minter_","type":"address"},{"internalType":"uint256","name":"mintingAllowedAfter_","type":"uint256"}],"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":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"address","name":"newMinter","type":"address"}],"name":"MinterChanged","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"},{"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTimeBetweenMints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintCap","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintingAllowedAfter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter_","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"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"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526acecb8f27f4200f3a0000006000553480156200002057600080fd5b506040516200456738038062004567833981810160405262000046919081019062000243565b428110156200008c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000839062000361565b60405180910390fd5b600054600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6000546040516200015e919062000383565b60405180910390a381600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f66000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620001fd92919062000334565b60405180910390a1806002819055505050506200045f565b60008151905062000226816200042b565b92915050565b6000815190506200023d8162000445565b92915050565b6000806000606084860312156200025957600080fd5b6000620002698682870162000215565b93505060206200027c8682870162000215565b92505060406200028f868287016200022c565b9150509250925092565b620002a481620003ef565b82525050565b620002b581620003b1565b82525050565b6000620002ca603a83620003a0565b91507f4b57494b3a3a636f6e7374727563746f723a206d696e74696e672063616e206f60008301527f6e6c7920626567696e206166746572206465706c6f796d656e740000000000006020830152604082019050919050565b6200032e81620003e5565b82525050565b60006040820190506200034b600083018562000299565b6200035a6020830184620002aa565b9392505050565b600060208201905081810360008301526200037c81620002bb565b9050919050565b60006020820190506200039a600083018462000323565b92915050565b600082825260208201905092915050565b6000620003be82620003c5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620003fc8262000403565b9050919050565b6000620004108262000417565b9050919050565b60006200042482620003c5565b9050919050565b6200043681620003b1565b81146200044257600080fd5b50565b6200045081620003e5565b81146200045c57600080fd5b50565b6140f8806200046f6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636fcfff45116100f9578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e146104fa578063e7a324dc1461052a578063f1127ed814610548578063fca3b5aa14610579576101a9565b8063b4b5ea5714610492578063c3cda520146104c2578063d505accf146104de576101a9565b8063782d6fe1116100d3578063782d6fe1146103e45780637ecebe001461041457806395d89b4114610444578063a9059cbb14610462576101a9565b80636fcfff451461036657806370a082311461039657806376c71ca1146103c6576101a9565b806330adf81f1161016657806340c10f191161014057806340c10f19146102e0578063587cde1e146102fc5780635c11d62f1461032c5780635c19a95c1461034a576101a9565b806330adf81f1461028657806330b36cef146102a4578063313ce567146102c2576101a9565b806306fdde03146101ae57806307546172146101cc578063095ea7b3146101ea57806318160ddd1461021a57806320606b701461023857806323b872dd14610256575b600080fd5b6101b6610595565b6040516101c39190613a16565b60405180910390f35b6101d46105ce565b6040516101e1919061386c565b60405180910390f35b61020460048036036101ff9190810190612e94565b6105f4565b60405161021191906138b0565b60405180910390f35b610222610787565b60405161022f9190613c5a565b60405180910390f35b61024061078d565b60405161024d91906138cb565b60405180910390f35b610270600480360361026b9190810190612da7565b6107a4565b60405161027d91906138b0565b60405180910390f35b61028e610a38565b60405161029b91906138cb565b60405180910390f35b6102ac610a4f565b6040516102b99190613c5a565b60405180910390f35b6102ca610a55565b6040516102d79190613cb9565b60405180910390f35b6102fa60048036036102f59190810190612e94565b610a5a565b005b61031660048036036103119190810190612d42565b610e55565b604051610323919061386c565b60405180910390f35b610334610e88565b6040516103419190613c75565b60405180910390f35b610364600480360361035f9190810190612d42565b610e90565b005b610380600480360361037b9190810190612d42565b610e9d565b60405161038d9190613c75565b60405180910390f35b6103b060048036036103ab9190810190612d42565b610ec0565b6040516103bd9190613c5a565b60405180910390f35b6103ce610f2f565b6040516103db9190613cb9565b60405180910390f35b6103fe60048036036103f99190810190612e94565b610f34565b60405161040b9190613cef565b60405180910390f35b61042e60048036036104299190810190612d42565b611347565b60405161043b9190613c5a565b60405180910390f35b61044c61135f565b6040516104599190613a16565b60405180910390f35b61047c60048036036104779190810190612e94565b611398565b60405161048991906138b0565b60405180910390f35b6104ac60048036036104a79190810190612d42565b6113d5565b6040516104b99190613cef565b60405180910390f35b6104dc60048036036104d79190810190612ed0565b6114c3565b005b6104f860048036036104f39190810190612df6565b611766565b005b610514600480360361050f9190810190612d6b565b611bb8565b6040516105219190613c5a565b60405180910390f35b610532611c65565b60405161053f91906138cb565b60405180910390f35b610562600480360361055d9190810190612f59565b611c7c565b604051610570929190613c90565b60405180910390f35b610593600480360361058e9190810190612d42565b611cd5565b005b6040518060400160405280600881526020017f4b77696b7377617000000000000000000000000000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610647577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061066c565b6106698360405180606001604052806025815260200161405660259139611e04565b90505b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107749190613cd4565b60405180910390a3600191505092915050565b60005481565b60405161079990613842565b604051809103902081565b6000803390506000600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905060006108678560405180606001604052806025815260200161405660259139611e04565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156108e157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff16826bffffffffffffffffffffffff1614155b15610a1f57600061090b83836040518060600160405280603d8152602001613ff1603d9139611e62565b905080600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a159190613cd4565b60405180910390a3505b610a2a878783611ed3565b600193505050509392505050565b604051610a449061382d565b604051809103902081565b60025481565b601281565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae190613b7a565b60405180910390fd5b600254421015610b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2690613b9a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9690613afa565b60405180910390fd5b610bb3426301e1338063ffffffff166122b4565b6002819055506000610bdd826040518060600160405280602281526020016140a160229139611e04565b9050610bf9610bf2600054600260ff16612309565b6064612379565b816bffffffffffffffffffffffff161115610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4090613c3a565b60405180910390fd5b610c84610c66600054836bffffffffffffffffffffffff166122b4565b604051806060016040528060278152602001613f9460279139611e04565b6bffffffffffffffffffffffff16600081905550610d12600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1682604051806060016040528060258152602001613f6f602591396123c3565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ddd9190613cd4565b60405180910390a3610e506000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612439565b505050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6301e1338081565b610e9a3382612734565b50565b60076020528060005260406000206000915054906101000a900463ffffffff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050919050565b600281565b6000438210610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6f90613bda565b60405180910390fd5b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610fe5576000915050611341565b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16116110e757600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff16915050611341565b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115611168576000915050611341565b600080905060006001830390505b8163ffffffff168163ffffffff1611156112c3576000600283830363ffffffff168161119e57fe5b04820390506111ab612cab565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905086816000015163ffffffff16141561129b57806020015195505050505050611341565b86816000015163ffffffff1610156112b5578193506112bc565b6001820392505b5050611176565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1693505050505b92915050565b60086020528060005260406000206000915090505481565b6040518060400160405280600481526020017f4b57494b0000000000000000000000000000000000000000000000000000000081525081565b6000806113bd8360405180606001604052806026815260200161407b60269139611e04565b90506113ca338583611ed3565b600191505092915050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161161143f5760006114bb565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b915050919050565b60006040516114d190613842565b60405180910390206040518060400160405280600881526020017f4b77696b737761700000000000000000000000000000000000000000000000008152508051906020012061151e6128f4565b30604051602001611532949392919061398c565b604051602081830303815290604052805190602001209050600060405161155890613857565b60405180910390208888886040516020016115769493929190613947565b604051602081830303815290604052805190602001209050600082826040516020016115a39291906137f6565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516115e094939291906139d1565b6020604051602081039080840390855afa158015611602573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561167e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167590613a9a565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055891461170d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170490613b5a565b60405180910390fd5b87421115611750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174790613c1a565b60405180910390fd5b61175a818b612734565b50505050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8614156117b8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506117dd565b6117da86604051806060016040528060248152602001613f1b60249139611e04565b90505b60006040516117eb90613842565b60405180910390206040518060400160405280600881526020017f4b77696b73776170000000000000000000000000000000000000000000000000815250805190602001206118386128f4565b3060405160200161184c949392919061398c565b60405160208183030381529060405280519060200120905060006040516118729061382d565b60405180910390208a8a8a600860008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b6040516020016118e1969594939291906138e6565b6040516020818303038152906040528051906020012090506000828260405160200161190e9291906137f6565b60405160208183030381529060405280519060200120905060006001828989896040516000815260200160405260405161194b94939291906139d1565b6020604051602081039080840390855afa15801561196d573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e090613a5a565b60405180910390fd5b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4e90613a7a565b60405180910390fd5b88421115611a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9190613bfa565b60405180910390fd5b84600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051611ba29190613cd4565b60405180910390a3505050505050505050505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905092915050565b604051611c7190613857565b604051809103902081565b6006602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060000160049054906101000a90046bffffffffffffffffffffffff16905082565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5c90613b1a565b60405180910390fd5b7f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051611db8929190613887565b60405180910390a180600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006c0100000000000000000000000083108290611e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4f9190613a38565b60405180910390fd5b5082905092915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebd9190613a38565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3a90613aba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faa90613b3a565b60405180910390fd5b61202d600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1682604051806060016040528060368152602001613fbb60369139611e62565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550612114600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1682604051806060016040528060308152602001613f3f603091396123c3565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121de9190613cd4565b60405180910390a36122af600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612439565b505050565b6000808284019050838110156122ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f690613ada565b60405180910390fd5b8091505092915050565b60008083141561231c5760009050612373565b600082840290508284828161232d57fe5b041461236e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236590613bba565b60405180910390fd5b809150505b92915050565b60006123bb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612901565b905092915050565b6000808385019050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff161015839061242d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124249190613a38565b60405180910390fd5b50809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561248357506000816bffffffffffffffffffffffff16115b1561272f57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146125db576000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116125265760006125a2565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b905060006125c9828560405180606001604052806028815260200161402e60289139611e62565b90506125d786848484612962565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461272e576000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116126795760006126f5565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b9050600061271c8285604051806060016040528060278152602001613ec0602791396123c3565b905061272a85848484612962565b5050505b5b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a46128ee828483612439565b50505050565b6000804690508091505090565b60008083118290612948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293f9190613a38565b60405180910390fd5b50600083858161295457fe5b049050809150509392505050565b600061298643604051806060016040528060348152602001613ee760349139612c55565b905060008463ffffffff16118015612a1b57508063ffffffff16600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b15612ab65781600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550612bfe565b60405180604001604052808263ffffffff168152602001836bffffffffffffffffffffffff16815250600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505060018401600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051612c46929190613d0a565b60405180910390a25050505050565b600064010000000083108290612ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c989190613a38565b60405180910390fd5b5082905092915050565b6040518060400160405280600063ffffffff16815260200160006bffffffffffffffffffffffff1681525090565b600081359050612ce881613e4c565b92915050565b600081359050612cfd81613e63565b92915050565b600081359050612d1281613e7a565b92915050565b600081359050612d2781613e91565b92915050565b600081359050612d3c81613ea8565b92915050565b600060208284031215612d5457600080fd5b6000612d6284828501612cd9565b91505092915050565b60008060408385031215612d7e57600080fd5b6000612d8c85828601612cd9565b9250506020612d9d85828601612cd9565b9150509250929050565b600080600060608486031215612dbc57600080fd5b6000612dca86828701612cd9565b9350506020612ddb86828701612cd9565b9250506040612dec86828701612d03565b9150509250925092565b600080600080600080600060e0888a031215612e1157600080fd5b6000612e1f8a828b01612cd9565b9750506020612e308a828b01612cd9565b9650506040612e418a828b01612d03565b9550506060612e528a828b01612d03565b9450506080612e638a828b01612d2d565b93505060a0612e748a828b01612cee565b92505060c0612e858a828b01612cee565b91505092959891949750929550565b60008060408385031215612ea757600080fd5b6000612eb585828601612cd9565b9250506020612ec685828601612d03565b9150509250929050565b60008060008060008060c08789031215612ee957600080fd5b6000612ef789828a01612cd9565b9650506020612f0889828a01612d03565b9550506040612f1989828a01612d03565b9450506060612f2a89828a01612d2d565b9350506080612f3b89828a01612cee565b92505060a0612f4c89828a01612cee565b9150509295509295509295565b60008060408385031215612f6c57600080fd5b6000612f7a85828601612cd9565b9250506020612f8b85828601612d18565b9150509250929050565b612f9e81613d65565b82525050565b612fad81613d77565b82525050565b612fbc81613d83565b82525050565b612fd3612fce82613d83565b613e31565b82525050565b6000612fe482613d3e565b612fee8185613d49565b9350612ffe818560208601613dfe565b61300781613e3b565b840191505092915050565b600061301d82613d33565b6130278185613d49565b9350613037818560208601613dfe565b61304081613e3b565b840191505092915050565b6000613058601f83613d49565b91507f4b57494b3a3a7065726d69743a20696e76616c6964207369676e6174757265006000830152602082019050919050565b6000613098601a83613d49565b91507f4b57494b3a3a7065726d69743a20756e617574686f72697a65640000000000006000830152602082019050919050565b60006130d8602683613d49565b91507f4b57494b3a3a64656c656761746542795369673a20696e76616c69642073696760008301527f6e617475726500000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061313e603c83613d49565b91507f4b57494b3a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260008301527f616e736665722066726f6d20746865207a65726f2061646472657373000000006020830152604082019050919050565b60006131a4600283613d5a565b91507f19010000000000000000000000000000000000000000000000000000000000006000830152600282019050919050565b60006131e4601b83613d49565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613224602f83613d49565b91507f4b57494b3a3a6d696e743a2063616e6e6f74207472616e7366657220746f207460008301527f6865207a65726f206164647265737300000000000000000000000000000000006020830152604082019050919050565b600061328a603e83613d49565b91507f4b57494b3a3a7365744d696e7465723a206f6e6c7920746865206d696e74657260008301527f2063616e206368616e676520746865206d696e746572206164647265737300006020830152604082019050919050565b60006132f0603a83613d49565b91507f4b57494b3a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260008301527f616e7366657220746f20746865207a65726f20616464726573730000000000006020830152604082019050919050565b6000613356605283613d5a565b91507f5065726d69742861646472657373206f776e65722c616464726573732073706560008301527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208301527f2c75696e7432353620646561646c696e652900000000000000000000000000006040830152605282019050919050565b60006133e2602283613d49565b91507f4b57494b3a3a64656c656761746542795369673a20696e76616c6964206e6f6e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613448602483613d49565b91507f4b57494b3a3a6d696e743a206f6e6c7920746865206d696e7465722063616e2060008301527f6d696e74000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006134ae602383613d49565b91507f4b57494b3a3a6d696e743a206d696e74696e67206e6f7420616c6c6f7765642060008301527f79657400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613514604383613d5a565b91507f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353660008301527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208301527f63742900000000000000000000000000000000000000000000000000000000006040830152604382019050919050565b60006135a0602183613d49565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613606602783613d49565b91507f4b57494b3a3a6765745072696f72566f7465733a206e6f74207965742064657460008301527f65726d696e6564000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061366c601f83613d49565b91507f4b57494b3a3a7065726d69743a207369676e61747572652065787069726564006000830152602082019050919050565b60006136ac602683613d49565b91507f4b57494b3a3a64656c656761746542795369673a207369676e6174757265206560008301527f78706972656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613712603a83613d5a565b91507f44656c65676174696f6e28616464726573732064656c6567617465652c75696e60008301527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020830152603a82019050919050565b6000613778601d83613d49565b91507f4b57494b3a3a6d696e743a206578636565646564206d696e74206361700000006000830152602082019050919050565b6137b481613dad565b82525050565b6137c381613db7565b82525050565b6137d281613dc7565b82525050565b6137e181613dec565b82525050565b6137f081613dd4565b82525050565b600061380182613197565b915061380d8285612fc2565b60208201915061381d8284612fc2565b6020820191508190509392505050565b600061383882613349565b9150819050919050565b600061384d82613507565b9150819050919050565b600061386282613705565b9150819050919050565b60006020820190506138816000830184612f95565b92915050565b600060408201905061389c6000830185612f95565b6138a96020830184612f95565b9392505050565b60006020820190506138c56000830184612fa4565b92915050565b60006020820190506138e06000830184612fb3565b92915050565b600060c0820190506138fb6000830189612fb3565b6139086020830188612f95565b6139156040830187612f95565b61392260608301866137ab565b61392f60808301856137ab565b61393c60a08301846137ab565b979650505050505050565b600060808201905061395c6000830187612fb3565b6139696020830186612f95565b61397660408301856137ab565b61398360608301846137ab565b95945050505050565b60006080820190506139a16000830187612fb3565b6139ae6020830186612fb3565b6139bb60408301856137ab565b6139c86060830184612f95565b95945050505050565b60006080820190506139e66000830187612fb3565b6139f360208301866137c9565b613a006040830185612fb3565b613a0d6060830184612fb3565b95945050505050565b60006020820190508181036000830152613a308184613012565b905092915050565b60006020820190508181036000830152613a528184612fd9565b905092915050565b60006020820190508181036000830152613a738161304b565b9050919050565b60006020820190508181036000830152613a938161308b565b9050919050565b60006020820190508181036000830152613ab3816130cb565b9050919050565b60006020820190508181036000830152613ad381613131565b9050919050565b60006020820190508181036000830152613af3816131d7565b9050919050565b60006020820190508181036000830152613b1381613217565b9050919050565b60006020820190508181036000830152613b338161327d565b9050919050565b60006020820190508181036000830152613b53816132e3565b9050919050565b60006020820190508181036000830152613b73816133d5565b9050919050565b60006020820190508181036000830152613b938161343b565b9050919050565b60006020820190508181036000830152613bb3816134a1565b9050919050565b60006020820190508181036000830152613bd381613593565b9050919050565b60006020820190508181036000830152613bf3816135f9565b9050919050565b60006020820190508181036000830152613c138161365f565b9050919050565b60006020820190508181036000830152613c338161369f565b9050919050565b60006020820190508181036000830152613c538161376b565b9050919050565b6000602082019050613c6f60008301846137ab565b92915050565b6000602082019050613c8a60008301846137ba565b92915050565b6000604082019050613ca560008301856137ba565b613cb260208301846137e7565b9392505050565b6000602082019050613cce60008301846137c9565b92915050565b6000602082019050613ce960008301846137d8565b92915050565b6000602082019050613d0460008301846137e7565b92915050565b6000604082019050613d1f60008301856137d8565b613d2c60208301846137d8565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b6000613d7082613d8d565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006bffffffffffffffffffffffff82169050919050565b6000613df782613dd4565b9050919050565b60005b83811015613e1c578082015181840152602081019050613e01565b83811115613e2b576000848401525b50505050565b6000819050919050565b6000601f19601f8301169050919050565b613e5581613d65565b8114613e6057600080fd5b50565b613e6c81613d83565b8114613e7757600080fd5b50565b613e8381613dad565b8114613e8e57600080fd5b50565b613e9a81613db7565b8114613ea557600080fd5b50565b613eb181613dc7565b8114613ebc57600080fd5b5056fe4b57494b3a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f77734b57494b3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974734b57494b3a3a7065726d69743a20616d6f756e74206578636565647320393620626974734b57494b3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f77734b57494b3a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f77734b57494b3a3a6d696e743a20746f74616c537570706c79206578636565647320393620626974734b57494b3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e63654b57494b3a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e63654b57494b3a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f77734b57494b3a3a617070726f76653a20616d6f756e74206578636565647320393620626974734b57494b3a3a7472616e736665723a20616d6f756e74206578636565647320393620626974734b57494b3a3a6d696e743a20616d6f756e7420657863656564732039362062697473a2646970667358221220ccfc3347239057105babd2cfb6904bafcbe08c1433be86a88119ec59587c438b64736f6c6343000600003300000000000000000000000000b9230c2bd40bf0cd12a97a5af34ac7a5e8b5d800000000000000000000000000b9230c2bd40bf0cd12a97a5af34ac7a5e8b5d800000000000000000000000000000000000000000052b7d2dcc80cd2e4000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80636fcfff45116100f9578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e146104fa578063e7a324dc1461052a578063f1127ed814610548578063fca3b5aa14610579576101a9565b8063b4b5ea5714610492578063c3cda520146104c2578063d505accf146104de576101a9565b8063782d6fe1116100d3578063782d6fe1146103e45780637ecebe001461041457806395d89b4114610444578063a9059cbb14610462576101a9565b80636fcfff451461036657806370a082311461039657806376c71ca1146103c6576101a9565b806330adf81f1161016657806340c10f191161014057806340c10f19146102e0578063587cde1e146102fc5780635c11d62f1461032c5780635c19a95c1461034a576101a9565b806330adf81f1461028657806330b36cef146102a4578063313ce567146102c2576101a9565b806306fdde03146101ae57806307546172146101cc578063095ea7b3146101ea57806318160ddd1461021a57806320606b701461023857806323b872dd14610256575b600080fd5b6101b6610595565b6040516101c39190613a16565b60405180910390f35b6101d46105ce565b6040516101e1919061386c565b60405180910390f35b61020460048036036101ff9190810190612e94565b6105f4565b60405161021191906138b0565b60405180910390f35b610222610787565b60405161022f9190613c5a565b60405180910390f35b61024061078d565b60405161024d91906138cb565b60405180910390f35b610270600480360361026b9190810190612da7565b6107a4565b60405161027d91906138b0565b60405180910390f35b61028e610a38565b60405161029b91906138cb565b60405180910390f35b6102ac610a4f565b6040516102b99190613c5a565b60405180910390f35b6102ca610a55565b6040516102d79190613cb9565b60405180910390f35b6102fa60048036036102f59190810190612e94565b610a5a565b005b61031660048036036103119190810190612d42565b610e55565b604051610323919061386c565b60405180910390f35b610334610e88565b6040516103419190613c75565b60405180910390f35b610364600480360361035f9190810190612d42565b610e90565b005b610380600480360361037b9190810190612d42565b610e9d565b60405161038d9190613c75565b60405180910390f35b6103b060048036036103ab9190810190612d42565b610ec0565b6040516103bd9190613c5a565b60405180910390f35b6103ce610f2f565b6040516103db9190613cb9565b60405180910390f35b6103fe60048036036103f99190810190612e94565b610f34565b60405161040b9190613cef565b60405180910390f35b61042e60048036036104299190810190612d42565b611347565b60405161043b9190613c5a565b60405180910390f35b61044c61135f565b6040516104599190613a16565b60405180910390f35b61047c60048036036104779190810190612e94565b611398565b60405161048991906138b0565b60405180910390f35b6104ac60048036036104a79190810190612d42565b6113d5565b6040516104b99190613cef565b60405180910390f35b6104dc60048036036104d79190810190612ed0565b6114c3565b005b6104f860048036036104f39190810190612df6565b611766565b005b610514600480360361050f9190810190612d6b565b611bb8565b6040516105219190613c5a565b60405180910390f35b610532611c65565b60405161053f91906138cb565b60405180910390f35b610562600480360361055d9190810190612f59565b611c7c565b604051610570929190613c90565b60405180910390f35b610593600480360361058e9190810190612d42565b611cd5565b005b6040518060400160405280600881526020017f4b77696b7377617000000000000000000000000000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610647577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061066c565b6106698360405180606001604052806025815260200161405660259139611e04565b90505b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107749190613cd4565b60405180910390a3600191505092915050565b60005481565b60405161079990613842565b604051809103902081565b6000803390506000600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905060006108678560405180606001604052806025815260200161405660259139611e04565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156108e157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff16826bffffffffffffffffffffffff1614155b15610a1f57600061090b83836040518060600160405280603d8152602001613ff1603d9139611e62565b905080600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a159190613cd4565b60405180910390a3505b610a2a878783611ed3565b600193505050509392505050565b604051610a449061382d565b604051809103902081565b60025481565b601281565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae190613b7a565b60405180910390fd5b600254421015610b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2690613b9a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9690613afa565b60405180910390fd5b610bb3426301e1338063ffffffff166122b4565b6002819055506000610bdd826040518060600160405280602281526020016140a160229139611e04565b9050610bf9610bf2600054600260ff16612309565b6064612379565b816bffffffffffffffffffffffff161115610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4090613c3a565b60405180910390fd5b610c84610c66600054836bffffffffffffffffffffffff166122b4565b604051806060016040528060278152602001613f9460279139611e04565b6bffffffffffffffffffffffff16600081905550610d12600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1682604051806060016040528060258152602001613f6f602591396123c3565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ddd9190613cd4565b60405180910390a3610e506000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612439565b505050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6301e1338081565b610e9a3382612734565b50565b60076020528060005260406000206000915054906101000a900463ffffffff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050919050565b600281565b6000438210610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6f90613bda565b60405180910390fd5b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610fe5576000915050611341565b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16116110e757600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff16915050611341565b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115611168576000915050611341565b600080905060006001830390505b8163ffffffff168163ffffffff1611156112c3576000600283830363ffffffff168161119e57fe5b04820390506111ab612cab565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905086816000015163ffffffff16141561129b57806020015195505050505050611341565b86816000015163ffffffff1610156112b5578193506112bc565b6001820392505b5050611176565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1693505050505b92915050565b60086020528060005260406000206000915090505481565b6040518060400160405280600481526020017f4b57494b0000000000000000000000000000000000000000000000000000000081525081565b6000806113bd8360405180606001604052806026815260200161407b60269139611e04565b90506113ca338583611ed3565b600191505092915050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161161143f5760006114bb565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b915050919050565b60006040516114d190613842565b60405180910390206040518060400160405280600881526020017f4b77696b737761700000000000000000000000000000000000000000000000008152508051906020012061151e6128f4565b30604051602001611532949392919061398c565b604051602081830303815290604052805190602001209050600060405161155890613857565b60405180910390208888886040516020016115769493929190613947565b604051602081830303815290604052805190602001209050600082826040516020016115a39291906137f6565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516115e094939291906139d1565b6020604051602081039080840390855afa158015611602573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561167e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167590613a9a565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055891461170d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170490613b5a565b60405180910390fd5b87421115611750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174790613c1a565b60405180910390fd5b61175a818b612734565b50505050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8614156117b8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506117dd565b6117da86604051806060016040528060248152602001613f1b60249139611e04565b90505b60006040516117eb90613842565b60405180910390206040518060400160405280600881526020017f4b77696b73776170000000000000000000000000000000000000000000000000815250805190602001206118386128f4565b3060405160200161184c949392919061398c565b60405160208183030381529060405280519060200120905060006040516118729061382d565b60405180910390208a8a8a600860008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b6040516020016118e1969594939291906138e6565b6040516020818303038152906040528051906020012090506000828260405160200161190e9291906137f6565b60405160208183030381529060405280519060200120905060006001828989896040516000815260200160405260405161194b94939291906139d1565b6020604051602081039080840390855afa15801561196d573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e090613a5a565b60405180910390fd5b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4e90613a7a565b60405180910390fd5b88421115611a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9190613bfa565b60405180910390fd5b84600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051611ba29190613cd4565b60405180910390a3505050505050505050505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905092915050565b604051611c7190613857565b604051809103902081565b6006602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060000160049054906101000a90046bffffffffffffffffffffffff16905082565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5c90613b1a565b60405180910390fd5b7f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051611db8929190613887565b60405180910390a180600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006c0100000000000000000000000083108290611e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4f9190613a38565b60405180910390fd5b5082905092915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebd9190613a38565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3a90613aba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faa90613b3a565b60405180910390fd5b61202d600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1682604051806060016040528060368152602001613fbb60369139611e62565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550612114600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1682604051806060016040528060308152602001613f3f603091396123c3565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121de9190613cd4565b60405180910390a36122af600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612439565b505050565b6000808284019050838110156122ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f690613ada565b60405180910390fd5b8091505092915050565b60008083141561231c5760009050612373565b600082840290508284828161232d57fe5b041461236e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236590613bba565b60405180910390fd5b809150505b92915050565b60006123bb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612901565b905092915050565b6000808385019050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff161015839061242d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124249190613a38565b60405180910390fd5b50809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561248357506000816bffffffffffffffffffffffff16115b1561272f57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146125db576000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116125265760006125a2565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b905060006125c9828560405180606001604052806028815260200161402e60289139611e62565b90506125d786848484612962565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461272e576000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116126795760006126f5565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b9050600061271c8285604051806060016040528060278152602001613ec0602791396123c3565b905061272a85848484612962565b5050505b5b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a46128ee828483612439565b50505050565b6000804690508091505090565b60008083118290612948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293f9190613a38565b60405180910390fd5b50600083858161295457fe5b049050809150509392505050565b600061298643604051806060016040528060348152602001613ee760349139612c55565b905060008463ffffffff16118015612a1b57508063ffffffff16600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b15612ab65781600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550612bfe565b60405180604001604052808263ffffffff168152602001836bffffffffffffffffffffffff16815250600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505060018401600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051612c46929190613d0a565b60405180910390a25050505050565b600064010000000083108290612ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c989190613a38565b60405180910390fd5b5082905092915050565b6040518060400160405280600063ffffffff16815260200160006bffffffffffffffffffffffff1681525090565b600081359050612ce881613e4c565b92915050565b600081359050612cfd81613e63565b92915050565b600081359050612d1281613e7a565b92915050565b600081359050612d2781613e91565b92915050565b600081359050612d3c81613ea8565b92915050565b600060208284031215612d5457600080fd5b6000612d6284828501612cd9565b91505092915050565b60008060408385031215612d7e57600080fd5b6000612d8c85828601612cd9565b9250506020612d9d85828601612cd9565b9150509250929050565b600080600060608486031215612dbc57600080fd5b6000612dca86828701612cd9565b9350506020612ddb86828701612cd9565b9250506040612dec86828701612d03565b9150509250925092565b600080600080600080600060e0888a031215612e1157600080fd5b6000612e1f8a828b01612cd9565b9750506020612e308a828b01612cd9565b9650506040612e418a828b01612d03565b9550506060612e528a828b01612d03565b9450506080612e638a828b01612d2d565b93505060a0612e748a828b01612cee565b92505060c0612e858a828b01612cee565b91505092959891949750929550565b60008060408385031215612ea757600080fd5b6000612eb585828601612cd9565b9250506020612ec685828601612d03565b9150509250929050565b60008060008060008060c08789031215612ee957600080fd5b6000612ef789828a01612cd9565b9650506020612f0889828a01612d03565b9550506040612f1989828a01612d03565b9450506060612f2a89828a01612d2d565b9350506080612f3b89828a01612cee565b92505060a0612f4c89828a01612cee565b9150509295509295509295565b60008060408385031215612f6c57600080fd5b6000612f7a85828601612cd9565b9250506020612f8b85828601612d18565b9150509250929050565b612f9e81613d65565b82525050565b612fad81613d77565b82525050565b612fbc81613d83565b82525050565b612fd3612fce82613d83565b613e31565b82525050565b6000612fe482613d3e565b612fee8185613d49565b9350612ffe818560208601613dfe565b61300781613e3b565b840191505092915050565b600061301d82613d33565b6130278185613d49565b9350613037818560208601613dfe565b61304081613e3b565b840191505092915050565b6000613058601f83613d49565b91507f4b57494b3a3a7065726d69743a20696e76616c6964207369676e6174757265006000830152602082019050919050565b6000613098601a83613d49565b91507f4b57494b3a3a7065726d69743a20756e617574686f72697a65640000000000006000830152602082019050919050565b60006130d8602683613d49565b91507f4b57494b3a3a64656c656761746542795369673a20696e76616c69642073696760008301527f6e617475726500000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061313e603c83613d49565b91507f4b57494b3a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260008301527f616e736665722066726f6d20746865207a65726f2061646472657373000000006020830152604082019050919050565b60006131a4600283613d5a565b91507f19010000000000000000000000000000000000000000000000000000000000006000830152600282019050919050565b60006131e4601b83613d49565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613224602f83613d49565b91507f4b57494b3a3a6d696e743a2063616e6e6f74207472616e7366657220746f207460008301527f6865207a65726f206164647265737300000000000000000000000000000000006020830152604082019050919050565b600061328a603e83613d49565b91507f4b57494b3a3a7365744d696e7465723a206f6e6c7920746865206d696e74657260008301527f2063616e206368616e676520746865206d696e746572206164647265737300006020830152604082019050919050565b60006132f0603a83613d49565b91507f4b57494b3a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260008301527f616e7366657220746f20746865207a65726f20616464726573730000000000006020830152604082019050919050565b6000613356605283613d5a565b91507f5065726d69742861646472657373206f776e65722c616464726573732073706560008301527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208301527f2c75696e7432353620646561646c696e652900000000000000000000000000006040830152605282019050919050565b60006133e2602283613d49565b91507f4b57494b3a3a64656c656761746542795369673a20696e76616c6964206e6f6e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613448602483613d49565b91507f4b57494b3a3a6d696e743a206f6e6c7920746865206d696e7465722063616e2060008301527f6d696e74000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006134ae602383613d49565b91507f4b57494b3a3a6d696e743a206d696e74696e67206e6f7420616c6c6f7765642060008301527f79657400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613514604383613d5a565b91507f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353660008301527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208301527f63742900000000000000000000000000000000000000000000000000000000006040830152604382019050919050565b60006135a0602183613d49565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613606602783613d49565b91507f4b57494b3a3a6765745072696f72566f7465733a206e6f74207965742064657460008301527f65726d696e6564000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061366c601f83613d49565b91507f4b57494b3a3a7065726d69743a207369676e61747572652065787069726564006000830152602082019050919050565b60006136ac602683613d49565b91507f4b57494b3a3a64656c656761746542795369673a207369676e6174757265206560008301527f78706972656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613712603a83613d5a565b91507f44656c65676174696f6e28616464726573732064656c6567617465652c75696e60008301527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020830152603a82019050919050565b6000613778601d83613d49565b91507f4b57494b3a3a6d696e743a206578636565646564206d696e74206361700000006000830152602082019050919050565b6137b481613dad565b82525050565b6137c381613db7565b82525050565b6137d281613dc7565b82525050565b6137e181613dec565b82525050565b6137f081613dd4565b82525050565b600061380182613197565b915061380d8285612fc2565b60208201915061381d8284612fc2565b6020820191508190509392505050565b600061383882613349565b9150819050919050565b600061384d82613507565b9150819050919050565b600061386282613705565b9150819050919050565b60006020820190506138816000830184612f95565b92915050565b600060408201905061389c6000830185612f95565b6138a96020830184612f95565b9392505050565b60006020820190506138c56000830184612fa4565b92915050565b60006020820190506138e06000830184612fb3565b92915050565b600060c0820190506138fb6000830189612fb3565b6139086020830188612f95565b6139156040830187612f95565b61392260608301866137ab565b61392f60808301856137ab565b61393c60a08301846137ab565b979650505050505050565b600060808201905061395c6000830187612fb3565b6139696020830186612f95565b61397660408301856137ab565b61398360608301846137ab565b95945050505050565b60006080820190506139a16000830187612fb3565b6139ae6020830186612fb3565b6139bb60408301856137ab565b6139c86060830184612f95565b95945050505050565b60006080820190506139e66000830187612fb3565b6139f360208301866137c9565b613a006040830185612fb3565b613a0d6060830184612fb3565b95945050505050565b60006020820190508181036000830152613a308184613012565b905092915050565b60006020820190508181036000830152613a528184612fd9565b905092915050565b60006020820190508181036000830152613a738161304b565b9050919050565b60006020820190508181036000830152613a938161308b565b9050919050565b60006020820190508181036000830152613ab3816130cb565b9050919050565b60006020820190508181036000830152613ad381613131565b9050919050565b60006020820190508181036000830152613af3816131d7565b9050919050565b60006020820190508181036000830152613b1381613217565b9050919050565b60006020820190508181036000830152613b338161327d565b9050919050565b60006020820190508181036000830152613b53816132e3565b9050919050565b60006020820190508181036000830152613b73816133d5565b9050919050565b60006020820190508181036000830152613b938161343b565b9050919050565b60006020820190508181036000830152613bb3816134a1565b9050919050565b60006020820190508181036000830152613bd381613593565b9050919050565b60006020820190508181036000830152613bf3816135f9565b9050919050565b60006020820190508181036000830152613c138161365f565b9050919050565b60006020820190508181036000830152613c338161369f565b9050919050565b60006020820190508181036000830152613c538161376b565b9050919050565b6000602082019050613c6f60008301846137ab565b92915050565b6000602082019050613c8a60008301846137ba565b92915050565b6000604082019050613ca560008301856137ba565b613cb260208301846137e7565b9392505050565b6000602082019050613cce60008301846137c9565b92915050565b6000602082019050613ce960008301846137d8565b92915050565b6000602082019050613d0460008301846137e7565b92915050565b6000604082019050613d1f60008301856137d8565b613d2c60208301846137d8565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b6000613d7082613d8d565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006bffffffffffffffffffffffff82169050919050565b6000613df782613dd4565b9050919050565b60005b83811015613e1c578082015181840152602081019050613e01565b83811115613e2b576000848401525b50505050565b6000819050919050565b6000601f19601f8301169050919050565b613e5581613d65565b8114613e6057600080fd5b50565b613e6c81613d83565b8114613e7757600080fd5b50565b613e8381613dad565b8114613e8e57600080fd5b50565b613e9a81613db7565b8114613ea557600080fd5b50565b613eb181613dc7565b8114613ebc57600080fd5b5056fe4b57494b3a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f77734b57494b3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974734b57494b3a3a7065726d69743a20616d6f756e74206578636565647320393620626974734b57494b3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f77734b57494b3a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f77734b57494b3a3a6d696e743a20746f74616c537570706c79206578636565647320393620626974734b57494b3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e63654b57494b3a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e63654b57494b3a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f77734b57494b3a3a617070726f76653a20616d6f756e74206578636565647320393620626974734b57494b3a3a7472616e736665723a20616d6f756e74206578636565647320393620626974734b57494b3a3a6d696e743a20616d6f756e7420657863656564732039362062697473a2646970667358221220ccfc3347239057105babd2cfb6904bafcbe08c1433be86a88119ec59587c438b64736f6c63430006000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000b9230c2bd40bf0cd12a97a5af34ac7a5e8b5d800000000000000000000000000b9230c2bd40bf0cd12a97a5af34ac7a5e8b5d800000000000000000000000000000000000000000052b7d2dcc80cd2e4000000
-----Decoded View---------------
Arg [0] : account (address): 0x00B9230c2Bd40bF0cd12A97a5Af34ac7a5E8B5D8
Arg [1] : minter_ (address): 0x00B9230c2Bd40bF0cd12A97a5Af34ac7a5E8B5D8
Arg [2] : mintingAllowedAfter_ (uint256): 100000000000000000000000000
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000000b9230c2bd40bf0cd12a97a5af34ac7a5e8b5d8
Arg [1] : 00000000000000000000000000b9230c2bd40bf0cd12a97a5af34ac7a5e8b5d8
Arg [2] : 00000000000000000000000000000000000000000052b7d2dcc80cd2e4000000
Deployed Bytecode Sourcemap
2660:13757:0:-:0;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2660:13757:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2731:40;;;:::i;:::-;;;;;;;;;;;;;;;;3152:21;;;:::i;:::-;;;;;;;;;;;;;;;;8068:419;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3032:40;;;:::i;:::-;;;;;;;;;;;;;;;;4381:122;;;:::i;:::-;;;;;;;;;;;;;;;;9803:672;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4804:137;;;:::i;:::-;;;;;;;;;;;;;;;;3243:31;;;:::i;:::-;;;;;;;;;;;;;;;;2933:35;;;:::i;:::-;;;;;;;;;;;;;;;;6555:1065;;;;;;;;;;;;;;;;:::i;:::-;;3831:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3327:61;;;:::i;:::-;;;;;;;;;;;;;;;;10600:102;;;;;;;;;;;;;;;;:::i;:::-;;4259:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;10483:108;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3483:33;;;:::i;:::-;;;;;;;;;;;;;;;;11509:1218;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;5022:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2832:38;;;:::i;:::-;;;;;;;;;;;;;;;;9557:238;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;12735:222;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;10711:789;;;;;;;;;;;;;;;;:::i;:::-;;8495:1054;;;;;;;;;;;;;;;;:::i;:::-;;7924:136;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4597:117;;;:::i;:::-;;;;;;;;;;;;;;;;4120:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;6315:232;;;;;;;;;;;;;;;;:::i;:::-;;2731:40;;;;;;;;;;;;;;;;;;;:::o;3152:21::-;;;;;;;;;;;;;:::o;8068:419::-;8136:4;8153:13;8199:2;8181:9;:21;8177:173;;;8235:2;8219:19;;8177:173;;;8280:58;8287:9;8280:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;8271:67;;8177:173;8396:6;8362:10;:22;8373:10;8362:22;;;;;;;;;;;;;;;:31;8385:7;8362:31;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;8441:7;8420:37;;8429:10;8420:37;;;8450:6;8420:37;;;;;;;;;;;;;;;8475:4;8468:11;;;8068:419;;;;:::o;3032:40::-;;;;:::o;4381:122::-;4423:80;;;;;;;;;;;;;;4381:122;:::o;9803:672::-;9885:4;9902:15;9920:10;9902:28;;9941:23;9967:10;:15;9978:3;9967:15;;;;;;;;;;;;;;;:24;9983:7;9967:24;;;;;;;;;;;;;;;;;;;;;;;;;9941:50;;10002:13;10018:58;10025:9;10018:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;10002:74;;10104:3;10093:14;;:7;:14;;;;:48;;;;;10138:2;10111:30;;:16;:30;;;;10093:48;10089:311;;;10158:19;10180:96;10186:16;10204:6;10180:96;;;;;;;;;;;;;;;;;:5;:96::i;:::-;10158:118;;10318:12;10291:10;:15;10302:3;10291:15;;;;;;;;;;;;;;;:24;10307:7;10291:24;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;10366:7;10352:36;;10361:3;10352:36;;;10375:12;10352:36;;;;;;;;;;;;;;;10089:311;;10412:33;10428:3;10433;10438:6;10412:15;:33::i;:::-;10463:4;10456:11;;;;;9803:672;;;;;:::o;4804:137::-;4846:95;;;;;;;;;;;;;;4804:137;:::o;3243:31::-;;;;:::o;2933:35::-;2966:2;2933:35;:::o;6555:1065::-;6640:6;;;;;;;;;;;6626:20;;:10;:20;;;6618:69;;;;;;;;;;;;;;;;;;;;;;6725:19;;6706:15;:38;;6698:86;;;;;;;;;;;;;;;;;;;;;;6818:1;6803:17;;:3;:17;;;;6795:77;;;;;;;;;;;;;;;;;;;;;;6935:54;6948:15;3376:12;6935:54;;:12;:54::i;:::-;6913:19;:76;;;;7030:13;7046:55;7053:9;7046:55;;;;;;;;;;;;;;;;;:6;:55::i;:::-;7030:71;;7130:53;7143:34;7156:11;;3515:1;7143:34;;:12;:34::i;:::-;7179:3;7130:12;:53::i;:::-;7120:6;:63;;;;7112:105;;;;;;;;;;;;;;;;;;;;;;7242:84;7249:33;7262:11;;7275:6;7249:33;;:12;:33::i;:::-;7242:84;;;;;;;;;;;;;;;;;:6;:84::i;:::-;7228:98;;:11;:98;;;;7404:69;7410:8;:13;7419:3;7410:13;;;;;;;;;;;;;;;;;;;;;;;;;7425:6;7404:69;;;;;;;;;;;;;;;;;:5;:69::i;:::-;7388:8;:13;7397:3;7388:13;;;;;;;;;;;;;;;;:85;;;;;;;;;;;;;;;;;;7510:3;7489:33;;7506:1;7489:33;;;7515:6;7489:33;;;;;;;;;;;;;;;7562:50;7585:1;7589:9;:14;7599:3;7589:14;;;;;;;;;;;;;;;;;;;;;;;;;7605:6;7562:14;:50::i;:::-;6555:1065;;;:::o;3831:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;3327:61::-;3376:12;3327:61;:::o;10600:102::-;10662:32;10672:10;10684:9;10662;:32::i;:::-;10600:102;:::o;4259:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;10483:108::-;10542:4;10566:8;:17;10575:7;10566:17;;;;;;;;;;;;;;;;;;;;;;;;;10559:24;;;;10483:108;;;:::o;3483:33::-;3515:1;3483:33;:::o;11509:1218::-;11588:6;11629:12;11615:11;:26;11607:78;;;;;;;;;;;;;;;;;;;;;;11698:19;11720:14;:23;11735:7;11720:23;;;;;;;;;;;;;;;;;;;;;;;;;11698:45;;11774:1;11758:12;:17;;;11754:58;;;11799:1;11792:8;;;;;11754:58;11924:11;11872;:20;11884:7;11872:20;;;;;;;;;;;;;;;:38;11908:1;11893:12;:16;11872:38;;;;;;;;;;;;;;;:48;;;;;;;;;;;;:63;;;11868:147;;11959:11;:20;11971:7;11959:20;;;;;;;;;;;;;;;:38;11995:1;11980:12;:16;11959:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;11952:51;;;;;11868:147;12112:11;12076;:20;12088:7;12076:20;;;;;;;;;;;;;;;:23;12097:1;12076:23;;;;;;;;;;;;;:33;;;;;;;;;;;;:47;;;12072:88;;;12147:1;12140:8;;;;;12072:88;12172:12;12187:1;12172:16;;12199:12;12229:1;12214:12;:16;12199:31;;12241:428;12256:5;12248:13;;:5;:13;;;12241:428;;;12278:13;12320:1;12311:5;12303;:13;12302:19;;;;;;;;12294:5;:27;12278:43;;12363:20;;:::i;:::-;12386:11;:20;12398:7;12386:20;;;;;;;;;;;;;;;:28;12407:6;12386:28;;;;;;;;;;;;;;;12363:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12449:11;12433:2;:12;;;:27;;;12429:229;;;12488:2;:8;;;12481:15;;;;;;;;;12429:229;12537:11;12522:2;:12;;;:26;;;12518:140;;;12577:6;12569:14;;12518:140;;;12641:1;12632:6;:10;12624:18;;12518:140;12241:428;;;;;12686:11;:20;12698:7;12686:20;;;;;;;;;;;;;;;:27;12707:5;12686:27;;;;;;;;;;;;;;;:33;;;;;;;;;;;;12679:40;;;;;11509:1218;;;;;:::o;5022:39::-;;;;;;;;;;;;;;;;;:::o;2832:38::-;;;;;;;;;;;;;;;;;;;:::o;9557:238::-;9622:4;9639:13;9655:59;9662:9;9655:59;;;;;;;;;;;;;;;;;:6;:59::i;:::-;9639:75;;9725:40;9741:10;9753:3;9758:6;9725:15;:40::i;:::-;9783:4;9776:11;;;9557:238;;;;:::o;12735:222::-;12800:6;12819:19;12841:14;:23;12856:7;12841:23;;;;;;;;;;;;;;;;;;;;;;;;;12819:45;;12897:1;12882:12;:16;;;:67;;12948:1;12882:67;;;12901:11;:20;12913:7;12901:20;;;;;;;;;;;;;;;:38;12937:1;12922:12;:16;12901:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;12882:67;12875:74;;;12735:222;;;:::o;10711:789::-;10827:23;4423:80;;;;;;;;;;;;;;10907:4;;;;;;;;;;;;;;;;;10891:22;;;;;;10915:12;:10;:12::i;:::-;10937:4;10863:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10863:80:0;;;10853:91;;;;;;10827:117;;10955:18;4643:71;;;;;;;;;;;;;;11018:9;11029:5;11036:6;10986:57;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10986:57:0;;;10976:68;;;;;;10955:89;;11055:14;11111:15;11128:10;11082:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11082:57:0;;;11072:68;;;;;;11055:85;;11151:17;11171:26;11181:6;11189:1;11192;11195;11171:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11171:26:0;;;;;;;;11151:46;;11237:1;11216:23;;:9;:23;;;;11208:74;;;;;;;;;;;;;;;;;;;;;;11310:6;:17;11317:9;11310:17;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;11301:5;:28;11293:75;;;;;;;;;;;;;;;;;;;;;;11394:6;11387:3;:13;;11379:64;;;;;;;;;;;;;;;;;;;;;;11461:31;11471:9;11482;11461;:31::i;:::-;11454:38;;;;10711:789;;;;;;:::o;8495:1054::-;8625:13;8671:2;8653:9;:21;8649:172;;;8707:2;8691:19;;8649:172;;;8752:57;8759:9;8752:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;8743:66;;8649:172;8833:23;4423:80;;;;;;;;;;;;;;8913:4;;;;;;;;;;;;;;;;;8897:22;;;;;;8921:12;:10;:12::i;:::-;8943:4;8869:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8869:80:0;;;8859:91;;;;;;8833:117;;8961:18;4846:95;;;;;;;;;;;;;;9020:5;9027:7;9036:9;9047:6;:13;9054:5;9047:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;9064:8;8992:81;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8992:81:0;;;8982:92;;;;;;8961:113;;9085:14;9141:15;9158:10;9112:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9112:57:0;;;9102:68;;;;;;9085:85;;9181:17;9201:26;9211:6;9219:1;9222;9225;9201:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9201:26:0;;;;;;;;9181:46;;9267:1;9246:23;;:9;:23;;;;9238:67;;;;;;;;;;;;;;;;;;;;;;9337:5;9324:18;;:9;:18;;;9316:57;;;;;;;;;;;;;;;;;;;;;;9399:8;9392:3;:15;;9384:59;;;;;;;;;;;;;;;;;;;;;;9485:6;9456:10;:17;9467:5;9456:17;;;;;;;;;;;;;;;:26;9474:7;9456:26;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;9525:7;9509:32;;9518:5;9509:32;;;9534:6;9509:32;;;;;;;;;;;;;;;8495:1054;;;;;;;;;;;;:::o;7924:136::-;8000:4;8024:10;:19;8035:7;8024:19;;;;;;;;;;;;;;;:28;8044:7;8024:28;;;;;;;;;;;;;;;;;;;;;;;;;8017:35;;;;7924:136;;;;:::o;4597:117::-;4643:71;;;;;;;;;;;;;;4597:117;:::o;4120:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6315:232::-;6393:6;;;;;;;;;;;6379:20;;:10;:20;;;6371:95;;;;;;;;;;;;;;;;;;;;;;6482:30;6496:6;;;;;;;;;;;6504:7;6482:30;;;;;;;;;;;;;;;;6532:7;6523:6;;:16;;;;;;;;;;;;;;;;;;6315:232;:::o;15554:161::-;15629:6;15660:5;15656:1;:9;15667:12;15648:32;;;;;;;;;;;;;;;;;;;;;;;;;15705:1;15691:16;;15554:161;;;;:::o;15892:165::-;15978:6;16010:1;16005:6;;:1;:6;;;;16013:12;15997:29;;;;;;;;;;;;;;;;;;;;;;;;;16048:1;16044;:5;16037:12;;15892:165;;;;;:::o;14295:614::-;14404:1;14389:17;;:3;:17;;;;14381:90;;;;;;;;;;;;;;;;;;;;;;14505:1;14490:17;;:3;:17;;;;14482:88;;;;;;;;;;;;;;;;;;;;;;14599:86;14605:8;:13;14614:3;14605:13;;;;;;;;;;;;;;;;;;;;;;;;;14620:6;14599:86;;;;;;;;;;;;;;;;;:5;:86::i;:::-;14583:8;:13;14592:3;14583:13;;;;;;;;;;;;;;;;:102;;;;;;;;;;;;;;;;;;14712:80;14718:8;:13;14727:3;14718:13;;;;;;;;;;;;;;;;;;;;;;;;;14733:6;14712:80;;;;;;;;;;;;;;;;;:5;:80::i;:::-;14696:8;:13;14705:3;14696:13;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;14822:3;14808:26;;14817:3;14808:26;;;14827:6;14808:26;;;;;;;;;;;;;;;14847:54;14862:9;:14;14872:3;14862:14;;;;;;;;;;;;;;;;;;;;;;;;;14878:9;:14;14888:3;14878:14;;;;;;;;;;;;;;;;;;;;;;;;;14894:6;14847:14;:54::i;:::-;14295:614;;;:::o;159:181::-;217:7;237:9;253:1;249;:5;237:17;;278:1;273;:6;;265:46;;;;;;;;;;;;;;;;;;;;;;331:1;324:8;;;159:181;;;;:::o;893:471::-;951:7;1201:1;1196;:6;1192:47;;;1226:1;1219:8;;;;1192:47;1251:9;1267:1;1263;:5;1251:17;;1296:1;1291;1287;:5;;;;;;:10;1279:56;;;;;;;;;;;;;;;;;;;;;;1355:1;1348:8;;;893:471;;;;;:::o;1856:132::-;1914:7;1941:39;1945:1;1948;1941:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1934:46;;1856:132;;;;:::o;16065:188::-;16151:6;16170:8;16185:1;16181;:5;16170:16;;16210:1;16205:6;;:1;:6;;;;16213:12;16197:29;;;;;;;;;;;;;;;;;;;;;;;;;16244:1;16237:8;;;16065:188;;;;;:::o;13348:939::-;13453:6;13443:16;;:6;:16;;;;:30;;;;;13472:1;13463:6;:10;;;13443:30;13439:841;;;13512:1;13494:20;;:6;:20;;;13490:382;;13535:16;13554:14;:22;13569:6;13554:22;;;;;;;;;;;;;;;;;;;;;;;;;13535:41;;13595:16;13626:1;13614:9;:13;;;:60;;13673:1;13614:60;;;13630:11;:19;13642:6;13630:19;;;;;;;;;;;;;;;:34;13662:1;13650:9;:13;13630:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;13614:60;13595:79;;13693:16;13712:68;13718:9;13729:6;13712:68;;;;;;;;;;;;;;;;;:5;:68::i;:::-;13693:87;;13799:57;13816:6;13824:9;13835;13846;13799:16;:57::i;:::-;13490:382;;;;13910:1;13892:20;;:6;:20;;;13888:381;;13933:16;13952:14;:22;13967:6;13952:22;;;;;;;;;;;;;;;;;;;;;;;;;13933:41;;13993:16;14024:1;14012:9;:13;;;:60;;14071:1;14012:60;;;14028:11;:19;14040:6;14028:19;;;;;;;;;;;;;;;:34;14060:1;14048:9;:13;14028:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;14012:60;13993:79;;14091:16;14110:67;14116:9;14127:6;14110:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;14091:86;;14196:57;14213:6;14221:9;14232;14243;14196:16;:57::i;:::-;13888:381;;;;13439:841;13348:939;;;:::o;12965:375::-;13042:23;13068:9;:20;13078:9;13068:20;;;;;;;;;;;;;;;;;;;;;;;;;13042:46;;13099:23;13125:8;:19;13134:9;13125:19;;;;;;;;;;;;;;;;;;;;;;;;;13099:45;;13178:9;13155;:20;13165:9;13155:20;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;13249:9;13205:54;;13232:15;13205:54;;13221:9;13205:54;;;;;;;;;;;;13272:60;13287:15;13304:9;13315:16;13272:14;:60::i;:::-;12965:375;;;;:::o;16261:153::-;16306:4;16323:15;16371:9;16360:20;;16399:7;16392:14;;;16261:153;:::o;1996:345::-;2082:7;2181:1;2177;:5;2184:12;2169:28;;;;;;;;;;;;;;;;;;;;;;;;;2208:9;2224:1;2220;:5;;;;;;2208:17;;2332:1;2325:8;;;1996:345;;;;;:::o;14917:629::-;15035:18;15056:76;15063:12;15056:76;;;;;;;;;;;;;;;;;:6;:76::i;:::-;15035:97;;15162:1;15147:12;:16;;;:85;;;;;15221:11;15167:65;;:11;:22;15179:9;15167:22;;;;;;;;;;;;;;;:40;15205:1;15190:12;:16;15167:40;;;;;;;;;;;;;;;:50;;;;;;;;;;;;:65;;;15147:85;15143:329;;;15296:8;15247:11;:22;15259:9;15247:22;;;;;;;;;;;;;;;:40;15285:1;15270:12;:16;15247:40;;;;;;;;;;;;;;;:46;;;:57;;;;;;;;;;;;;;;;;;15143:329;;;15372:33;;;;;;;;15383:11;15372:33;;;;;;15396:8;15372:33;;;;;15333:11;:22;15345:9;15333:22;;;;;;;;;;;;;;;:36;15356:12;15333:36;;;;;;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15461:1;15446:12;:16;15418:14;:25;15433:9;15418:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;15143:329;15508:9;15487:51;;;15519:8;15529;15487:51;;;;;;;;;;;;;;;;14917:629;;;;;:::o;15723:161::-;15798:6;15829:5;15825:1;:9;15836:12;15817:32;;;;;;;;;;;;;;;;;;;;;;;;;15874:1;15860:16;;15723:161;;;;:::o;2660:13757::-;;;;;;;;;;;;;;;;;;;;;;;:::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:331;;5788:67;5852:2;5847:3;5788:67;;;5781:74;;5888:33;5884:1;5879:3;5875:11;5868:54;5950:2;5945:3;5941:12;5934:19;;5774:185;;;;5968:326;;6128:67;6192:2;6187:3;6128:67;;;6121:74;;6228:28;6224:1;6219:3;6215:11;6208:49;6285:2;6280:3;6276:12;6269:19;;6114:180;;;;6303:375;;6463:67;6527:2;6522:3;6463:67;;;6456:74;;6563:34;6559:1;6554:3;6550:11;6543:55;6632:8;6627:2;6622:3;6618:12;6611:30;6669:2;6664:3;6660:12;6653:19;;6449:229;;;;6687:397;;6847:67;6911:2;6906:3;6847:67;;;6840:74;;6947:34;6943:1;6938:3;6934:11;6927:55;7016:30;7011:2;7006:3;7002:12;6995:52;7075:2;7070:3;7066:12;7059:19;;6833:251;;;;7093:398;;7271:84;7353:1;7348:3;7271:84;;;7264:91;;7388:66;7384:1;7379:3;7375:11;7368:87;7483:1;7478:3;7474:11;7467:18;;7257:234;;;;7500:327;;7660:67;7724:2;7719:3;7660:67;;;7653:74;;7760:29;7756:1;7751:3;7747:11;7740:50;7818:2;7813:3;7809:12;7802:19;;7646:181;;;;7836:384;;7996:67;8060:2;8055:3;7996:67;;;7989:74;;8096:34;8092:1;8087:3;8083:11;8076:55;8165:17;8160:2;8155:3;8151:12;8144:39;8211:2;8206:3;8202:12;8195:19;;7982:238;;;;8229:399;;8389:67;8453:2;8448:3;8389:67;;;8382:74;;8489:34;8485:1;8480:3;8476:11;8469:55;8558:32;8553:2;8548:3;8544:12;8537:54;8619:2;8614:3;8610:12;8603:19;;8375:253;;;;8637:395;;8797:67;8861:2;8856:3;8797:67;;;8790:74;;8897:34;8893:1;8888:3;8884:11;8877:55;8966:28;8961:2;8956:3;8952:12;8945:50;9023:2;9018:3;9014:12;9007:19;;8783:249;;;;9041:492;;9219:85;9301:2;9296:3;9219:85;;;9212:92;;9337:34;9333:1;9328:3;9324:11;9317:55;9406:34;9401:2;9396:3;9392:12;9385:56;9475:20;9470:2;9465:3;9461:12;9454:42;9524:2;9519:3;9515:12;9508:19;;9205:328;;;;9542:371;;9702:67;9766:2;9761:3;9702:67;;;9695:74;;9802:34;9798:1;9793:3;9789:11;9782:55;9871:4;9866:2;9861:3;9857:12;9850:26;9904:2;9899:3;9895:12;9888:19;;9688:225;;;;9922:373;;10082:67;10146:2;10141:3;10082:67;;;10075:74;;10182:34;10178:1;10173:3;10169:11;10162:55;10251:6;10246:2;10241:3;10237:12;10230:28;10286:2;10281:3;10277:12;10270:19;;10068:227;;;;10304:372;;10464:67;10528:2;10523:3;10464:67;;;10457:74;;10564:34;10560:1;10555:3;10551:11;10544:55;10633:5;10628:2;10623:3;10619:12;10612:27;10667:2;10662:3;10658:12;10651:19;;10450:226;;;;10685:477;;10863:85;10945:2;10940:3;10863:85;;;10856:92;;10981:34;10977:1;10972:3;10968:11;10961:55;11050:34;11045:2;11040:3;11036:12;11029:56;11119:5;11114:2;11109:3;11105:12;11098:27;11153:2;11148:3;11144:12;11137:19;;10849:313;;;;11171:370;;11331:67;11395:2;11390:3;11331:67;;;11324:74;;11431:34;11427:1;11422:3;11418:11;11411:55;11500:3;11495:2;11490:3;11486:12;11479:25;11532:2;11527:3;11523:12;11516:19;;11317:224;;;;11550:376;;11710:67;11774:2;11769:3;11710:67;;;11703:74;;11810:34;11806:1;11801:3;11797:11;11790:55;11879:9;11874:2;11869:3;11865:12;11858:31;11917:2;11912:3;11908:12;11901:19;;11696:230;;;;11935:331;;12095:67;12159:2;12154:3;12095:67;;;12088:74;;12195:33;12191:1;12186:3;12182:11;12175:54;12257:2;12252:3;12248:12;12241:19;;12081:185;;;;12275:375;;12435:67;12499:2;12494:3;12435:67;;;12428:74;;12535:34;12531:1;12526:3;12522:11;12515:55;12604:8;12599:2;12594:3;12590:12;12583:30;12641:2;12636:3;12632:12;12625:19;;12421:229;;;;12659:431;;12837:85;12919:2;12914:3;12837:85;;;12830:92;;12955:34;12951:1;12946:3;12942:11;12935:55;13024:28;13019:2;13014:3;13010:12;13003:50;13081:2;13076:3;13072:12;13065:19;;12823:267;;;;13099:329;;13259:67;13323:2;13318:3;13259:67;;;13252:74;;13359:31;13355:1;13350:3;13346:11;13339:52;13419:2;13414:3;13410:12;13403:19;;13245:183;;;;13436:113;13519:24;13537:5;13519:24;;;13514:3;13507:37;13501:48;;;13556:110;13637:23;13654:5;13637:23;;;13632:3;13625:36;13619:47;;;13673:107;13752:22;13768:5;13752:22;;;13747:3;13740:35;13734:46;;;13787:124;13869:36;13899:5;13869:36;;;13864:3;13857:49;13851:60;;;13918:110;13999:23;14016:5;13999:23;;;13994:3;13987:36;13981:47;;;14035:650;;14290:148;14434:3;14290:148;;;14283:155;;14449:75;14520:3;14511:6;14449:75;;;14546:2;14541:3;14537:12;14530:19;;14560:75;14631:3;14622:6;14560:75;;;14657:2;14652:3;14648:12;14641:19;;14677:3;14670:10;;14271:414;;;;;;14692:372;;14891:148;15035:3;14891:148;;;14884:155;;15056:3;15049:10;;14872:192;;;;15071:372;;15270:148;15414:3;15270:148;;;15263:155;;15435:3;15428:10;;15251:192;;;;15450:372;;15649:148;15793:3;15649:148;;;15642:155;;15814:3;15807:10;;15630:192;;;;15829:213;;15947:2;15936:9;15932:18;15924:26;;15961:71;16029:1;16018:9;16014:17;16005:6;15961:71;;;15918:124;;;;;16049:324;;16195:2;16184:9;16180:18;16172:26;;16209:71;16277:1;16266:9;16262:17;16253:6;16209:71;;;16291:72;16359:2;16348:9;16344:18;16335:6;16291:72;;;16166:207;;;;;;16380:201;;16492:2;16481:9;16477:18;16469:26;;16506:65;16568:1;16557:9;16553:17;16544:6;16506:65;;;16463:118;;;;;16588:213;;16706:2;16695:9;16691:18;16683:26;;16720:71;16788:1;16777:9;16773:17;16764:6;16720:71;;;16677:124;;;;;16808:771;;17066:3;17055:9;17051:19;17043:27;;17081:71;17149:1;17138:9;17134:17;17125:6;17081:71;;;17163:72;17231:2;17220:9;17216:18;17207:6;17163:72;;;17246;17314:2;17303:9;17299:18;17290:6;17246:72;;;17329;17397:2;17386:9;17382:18;17373:6;17329:72;;;17412:73;17480:3;17469:9;17465:19;17456:6;17412:73;;;17496;17564:3;17553:9;17549:19;17540:6;17496:73;;;17037:542;;;;;;;;;;17586:547;;17788:3;17777:9;17773:19;17765:27;;17803:71;17871:1;17860:9;17856:17;17847:6;17803:71;;;17885:72;17953:2;17942:9;17938:18;17929:6;17885:72;;;17968;18036:2;18025:9;18021:18;18012:6;17968:72;;;18051;18119:2;18108:9;18104:18;18095:6;18051:72;;;17759:374;;;;;;;;18140:547;;18342:3;18331:9;18327:19;18319:27;;18357:71;18425:1;18414:9;18410:17;18401:6;18357:71;;;18439:72;18507:2;18496:9;18492:18;18483:6;18439:72;;;18522;18590:2;18579:9;18575:18;18566:6;18522:72;;;18605;18673:2;18662:9;18658:18;18649:6;18605:72;;;18313:374;;;;;;;;18694:539;;18892:3;18881:9;18877:19;18869:27;;18907:71;18975:1;18964:9;18960:17;18951:6;18907:71;;;18989:68;19053:2;19042:9;19038:18;19029:6;18989:68;;;19068:72;19136:2;19125:9;19121:18;19112:6;19068:72;;;19151;19219:2;19208:9;19204:18;19195:6;19151:72;;;18863:370;;;;;;;;19240:293;;19374:2;19363:9;19359:18;19351:26;;19424:9;19418:4;19414:20;19410:1;19399:9;19395:17;19388:47;19449:74;19518:4;19509:6;19449:74;;;19441:82;;19345:188;;;;;19540:301;;19678:2;19667:9;19663:18;19655:26;;19728:9;19722:4;19718:20;19714:1;19703:9;19699:17;19692:47;19753:78;19826:4;19817:6;19753:78;;;19745:86;;19649:192;;;;;19848:407;;20039:2;20028:9;20024:18;20016:26;;20089:9;20083:4;20079:20;20075:1;20064:9;20060:17;20053:47;20114:131;20240:4;20114:131;;;20106:139;;20010:245;;;;20262:407;;20453:2;20442:9;20438:18;20430:26;;20503:9;20497:4;20493:20;20489:1;20478:9;20474:17;20467:47;20528:131;20654:4;20528:131;;;20520:139;;20424:245;;;;20676:407;;20867:2;20856:9;20852:18;20844:26;;20917:9;20911:4;20907:20;20903:1;20892:9;20888:17;20881:47;20942:131;21068:4;20942:131;;;20934:139;;20838:245;;;;21090:407;;21281:2;21270:9;21266:18;21258:26;;21331:9;21325:4;21321:20;21317:1;21306:9;21302:17;21295:47;21356:131;21482:4;21356:131;;;21348:139;;21252:245;;;;21504:407;;21695:2;21684:9;21680:18;21672:26;;21745:9;21739:4;21735:20;21731:1;21720:9;21716:17;21709:47;21770:131;21896:4;21770:131;;;21762:139;;21666:245;;;;21918:407;;22109:2;22098:9;22094:18;22086:26;;22159:9;22153:4;22149:20;22145:1;22134:9;22130:17;22123:47;22184:131;22310:4;22184:131;;;22176:139;;22080:245;;;;22332:407;;22523:2;22512:9;22508:18;22500:26;;22573:9;22567:4;22563:20;22559:1;22548:9;22544:17;22537:47;22598:131;22724:4;22598:131;;;22590:139;;22494:245;;;;22746:407;;22937:2;22926:9;22922:18;22914:26;;22987:9;22981:4;22977:20;22973:1;22962:9;22958:17;22951:47;23012:131;23138:4;23012:131;;;23004:139;;22908:245;;;;23160:407;;23351:2;23340:9;23336:18;23328:26;;23401:9;23395:4;23391:20;23387:1;23376:9;23372:17;23365:47;23426:131;23552:4;23426:131;;;23418:139;;23322:245;;;;23574:407;;23765:2;23754:9;23750:18;23742:26;;23815:9;23809:4;23805:20;23801:1;23790:9;23786:17;23779:47;23840:131;23966:4;23840:131;;;23832:139;;23736:245;;;;23988:407;;24179:2;24168:9;24164:18;24156:26;;24229:9;24223:4;24219:20;24215:1;24204:9;24200:17;24193:47;24254:131;24380:4;24254:131;;;24246:139;;24150:245;;;;24402:407;;24593:2;24582:9;24578:18;24570:26;;24643:9;24637:4;24633:20;24629:1;24618:9;24614:17;24607:47;24668:131;24794:4;24668:131;;;24660:139;;24564:245;;;;24816:407;;25007:2;24996:9;24992:18;24984:26;;25057:9;25051:4;25047:20;25043:1;25032:9;25028:17;25021:47;25082:131;25208:4;25082:131;;;25074:139;;24978:245;;;;25230:407;;25421:2;25410:9;25406:18;25398:26;;25471:9;25465:4;25461:20;25457:1;25446:9;25442:17;25435:47;25496:131;25622:4;25496:131;;;25488:139;;25392:245;;;;25644:407;;25835:2;25824:9;25820:18;25812:26;;25885:9;25879:4;25875:20;25871:1;25860:9;25856:17;25849:47;25910:131;26036:4;25910:131;;;25902:139;;25806:245;;;;26058:407;;26249:2;26238:9;26234:18;26226:26;;26299:9;26293:4;26289:20;26285:1;26274:9;26270:17;26263:47;26324:131;26450:4;26324:131;;;26316:139;;26220:245;;;;26472:213;;26590:2;26579:9;26575:18;26567:26;;26604:71;26672:1;26661:9;26657:17;26648:6;26604:71;;;26561:124;;;;;26692:209;;26808:2;26797:9;26793:18;26785:26;;26822:69;26888:1;26877:9;26873:17;26864:6;26822:69;;;26779:122;;;;;26908:316;;27050:2;27039:9;27035:18;27027:26;;27064:69;27130:1;27119:9;27115:17;27106:6;27064:69;;;27144:70;27210:2;27199:9;27195:18;27186:6;27144:70;;;27021:203;;;;;;27231:205;;27345:2;27334:9;27330:18;27322:26;;27359:67;27423:1;27412:9;27408:17;27399:6;27359:67;;;27316:120;;;;;27443:211;;27560:2;27549:9;27545:18;27537:26;;27574:70;27641:1;27630:9;27626:17;27617:6;27574:70;;;27531:123;;;;;27661:209;;27777:2;27766:9;27762:18;27754:26;;27791:69;27857:1;27846:9;27842:17;27833:6;27791:69;;;27748:122;;;;;27877:320;;28021:2;28010:9;28006:18;27998:26;;28035:70;28102:1;28091:9;28087:17;28078:6;28035:70;;;28116:71;28183:2;28172:9;28168:18;28159:6;28116:71;;;27992:205;;;;;;28204:118;;28294:5;28288:12;28278:22;;28259:63;;;;28329:122;;28423:5;28417:12;28407:22;;28388:63;;;;28459:163;;28574:6;28569:3;28562:19;28611:4;28606:3;28602:14;28587:29;;28555:67;;;;;28631:145;;28767:3;28752:18;;28745:31;;;;;28784:91;;28846:24;28864:5;28846:24;;;28835:35;;28829:46;;;;28882:85;;28955:5;28948:13;28941:21;28930:32;;28924:43;;;;28974:72;;29036:5;29025:16;;29019:27;;;;29053:121;;29126:42;29119:5;29115:54;29104:65;;29098:76;;;;29181:72;;29243:5;29232:16;;29226:27;;;;29260:88;;29332:10;29325:5;29321:22;29310:33;;29304:44;;;;29355:81;;29426:4;29419:5;29415:16;29404:27;;29398:38;;;;29443:104;;29515:26;29508:5;29504:38;29493:49;;29487:60;;;;29554:106;;29632:23;29649:5;29632:23;;;29619:36;;29613:47;;;;29668:268;29733:1;29740:101;29754:6;29751:1;29748:13;29740:101;;;29830:1;29825:3;29821:11;29815:18;29811:1;29806:3;29802:11;29795:39;29776:2;29773:1;29769:10;29764:15;;29740:101;;;29856:6;29853:1;29850:13;29847:2;;;29921:1;29912:6;29907:3;29903:16;29896:27;29847:2;29717:219;;;;;29944:74;;30008:5;29997:16;;29991:27;;;;30025:97;;30113:2;30109:7;30104:2;30097:5;30093:14;30089:28;30079:38;;30073:49;;;;30130:117;30199:24;30217:5;30199:24;;;30192:5;30189:35;30179:2;;30238:1;30235;30228:12;30179:2;30173:74;;30254:117;30323:24;30341:5;30323:24;;;30316:5;30313:35;30303:2;;30362:1;30359;30352:12;30303:2;30297:74;;30378:117;30447:24;30465:5;30447:24;;;30440:5;30437:35;30427:2;;30486:1;30483;30476:12;30427:2;30421:74;;30502:115;30570:23;30587:5;30570:23;;;30563:5;30560:34;30550:2;;30608:1;30605;30598:12;30550:2;30544:73;;30624:113;30691:22;30707:5;30691:22;;;30684:5;30681:33;30671:2;;30728:1;30725;30718:12;30671:2;30665:72;
Swarm Source
ipfs://ccfc3347239057105babd2cfb6904bafcbe08c1433be86a88119ec59587c438b
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.