Overview
Max Total Supply
4,005,451,268.386581269681765122 MEOW
Holders
387 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
650,457.5358607786422 MEOWValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
Meowshi
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-06-01 */ // SPDX-License-Identifier: UNLICENSED // @title Meowshi (MEOW) 🐈 🍣 🍱 // @author Gatoshi Nyakamoto pragma solidity 0.8.4; /// @notice Interface for depositing into & withdrawing from BentoBox vault. interface IERC20{} interface IBentoBoxBasic { function deposit( IERC20 token_, address from, address to, uint256 amount, uint256 share ) external payable returns (uint256 amountOut, uint256 shareOut); function withdraw( IERC20 token_, address from, address to, uint256 amount, uint256 share ) external returns (uint256 amountOut, uint256 shareOut); } /// @notice Interface for depositing into & withdrawing from SushiBar. interface ISushiBar { function balanceOf(address account) external view returns (uint256); function enter(uint256 amount) external; function leave(uint256 share) external; function approve(address spender, uint256 amount) external returns (bool); function transfer(address recipient, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); } /// @notice Meowshi takes SUSHI/xSUSHI to mint governing MEOW tokens that can be burned to claim SUSHI/xSUSHI from BENTO with yields. // ៱˳_˳៱ ∫ contract Meowshi { IBentoBoxBasic constant bento = IBentoBoxBasic(0xF5BCE5077908a1b7370B9ae04AdC565EBd643966); // BENTO vault contract (multinet) ISushiBar constant sushiToken = ISushiBar(0x6B3595068778DD592e39A122f4f5a5cF09C90fE2); // SUSHI token contract (mainnet) address constant sushiBar = 0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272; // xSUSHI token contract for staking SUSHI (mainnet) string constant public name = "Meowshi"; string constant public symbol = "MEOW"; uint8 constant public decimals = 18; uint256 constant multiplier = 100_000; // 1 xSUSHI BENTO share = 100,000 MEOW uint256 public totalSupply; /// @notice owner -> spender -> allowance mapping. mapping(address => mapping(address => uint256)) public allowance; /// @notice owner -> balance mapping. mapping(address => uint256) public balanceOf; /// @notice owner -> nonce mapping used in {permit}. mapping(address => uint256) public nonces; /// @notice A record of each account's delegate. mapping(address => address) public delegates; /// @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 ERC-712 typehash for this contract's domain. bytes32 constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)"); /// @notice The ERC-712 typehash for the delegation struct used by the contract. bytes32 constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)"); /// @notice The ERC-712 typehash for the permit struct used by the contract. bytes32 constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); /// @notice Events that are emitted when an ERC-20 approval or transfer occurs. event Approval(address indexed owner, address indexed spender, uint256 amount); event Transfer(address indexed from, address indexed to, uint256 amount); /// @notice An event that's emitted when an account changes its delegate. event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); /// @notice An event that's emitted when a delegate account's vote balance changes. event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance); /// @notice A checkpoint for marking number of votes from a given block. struct Checkpoint { uint32 fromBlock; uint256 votes; } constructor() { sushiToken.approve(sushiBar, type(uint256).max); // max {approve} xSUSHI to draw SUSHI from this contract ISushiBar(sushiBar).approve(address(bento), type(uint256).max); // max {approve} BENTO to draw xSUSHI from this contract } /************* MEOW FUNCTIONS *************/ // **** xSUSHI /// @notice Enter Meowshi. Deposit xSUSHI `amount`. Mint MEOW for `to`. function meow(address to, uint256 amount) external returns (uint256 shares) { ISushiBar(sushiBar).transferFrom(msg.sender, address(bento), amount); // forward to BENTO for skim (, shares) = bento.deposit(IERC20(sushiBar), address(bento), address(this), amount, 0); meowMint(to, shares * multiplier); } /// @notice Leave Meowshi. Burn MEOW `amount`. Claim xSUSHI for `to`. function unmeow(address to, uint256 amount) external returns (uint256 amountOut) { meowBurn(amount); unchecked {(amountOut, ) = bento.withdraw(IERC20(sushiBar), address(this), to, 0, amount / multiplier);} } // **** SUSHI /// @notice Enter Meowshi. Deposit SUSHI `amount`. Mint MEOW for `to`. function meowSushi(address to, uint256 amount) external returns (uint256 shares) { sushiToken.transferFrom(msg.sender, address(this), amount); ISushiBar(sushiBar).enter(amount); (, shares) = bento.deposit(IERC20(sushiBar), address(this), address(this), ISushiBar(sushiBar).balanceOf(address(this)), 0); meowMint(to, shares * multiplier); } /// @notice Leave Meowshi. Burn MEOW `amount`. Claim SUSHI for `to`. function unmeowSushi(address to, uint256 amount) external returns (uint256 amountOut) { meowBurn(amount); unchecked {(amountOut, ) = bento.withdraw(IERC20(sushiBar), address(this), address(this), 0, amount / multiplier);} ISushiBar(sushiBar).leave(amountOut); sushiToken.transfer(to, sushiToken.balanceOf(address(this))); } // **** SUPPLY MGMT /// @notice Internal mint function for *meow*. function meowMint(address to, uint256 amount) private { balanceOf[to] += amount; totalSupply += amount; _moveDelegates(address(0), delegates[to], amount); emit Transfer(address(0), to, amount); } /// @notice Internal burn function for *unmeow*. function meowBurn(uint256 amount) private { balanceOf[msg.sender] -= amount; unchecked {totalSupply -= amount;} _moveDelegates(delegates[msg.sender], address(0), amount); emit Transfer(msg.sender, address(0), amount); } /************** TOKEN FUNCTIONS **************/ /// @notice Approves `amount` from msg.sender to be spent by `spender`. /// @param spender Address of the party that can draw tokens from msg.sender's account. /// @param amount The maximum collective `amount` that `spender` can draw. /// @return (bool) Returns 'true' if succeeded. function approve(address spender, uint256 amount) external returns (bool) { allowance[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } /// @notice Triggers an approval from owner to spends. /// @param owner The address to approve from. /// @param spender The address to be approved. /// @param amount The number of tokens that are approved (2^256-1 means infinite). /// @param deadline The time at which to expire the signature. /// @param v The recovery byte of the signature. /// @param r Half of the ECDSA signature pair. /// @param s Half of the ECDSA signature pair. function permit(address owner, address spender, uint256 amount, uint deadline, uint8 v, bytes32 r, bytes32 s) external { bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this))); unchecked {bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline)); bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); address signatory = ecrecover(digest, v, r, s); require(signatory != address(0), 'Meowshi::permit: invalid signature'); require(signatory == owner, 'Meowshi::permit: unauthorized');} require(block.timestamp <= deadline, 'Meowshi::permit: signature expired'); allowance[owner][spender] = amount; emit Approval(owner, spender, amount); } /// @notice Transfers `amount` tokens from `msg.sender` to `to`. /// @param to The address to move tokens `to`. /// @param amount The token `amount` to move. /// @return (bool) Returns 'true' if succeeded. function transfer(address to, uint256 amount) external returns (bool) { balanceOf[msg.sender] -= amount; unchecked {balanceOf[to] += amount;} _moveDelegates(delegates[msg.sender], delegates[to], amount); emit Transfer(msg.sender, to, amount); return true; } /// @notice Transfers `amount` tokens from `from` to `to`. Caller needs approval from `from`. /// @param from Address to draw tokens `from`. /// @param to The address to move tokens `to`. /// @param amount The token `amount` to move. /// @return (bool) Returns 'true' if succeeded. function transferFrom(address from, address to, uint256 amount) external returns (bool) { if (allowance[from][msg.sender] != type(uint256).max) { allowance[from][msg.sender] -= amount; } balanceOf[from] -= amount; unchecked {balanceOf[to] += amount;} _moveDelegates(delegates[from], delegates[to], amount); emit Transfer(from, to, amount); return true; } /******************* DELEGATION FUNCTIONS *******************/ /// @notice Delegate votes from `msg.sender` to `delegatee`. /// @param delegatee The address to delegate votes to. function delegate(address delegatee) external { return _delegate(msg.sender, delegatee); } /// @notice Delegates votes from signatory to `delegatee`. /// @param delegatee The address to delegate votes to. /// @param nonce The contract state required to match the signature. /// @param expiry The time at which to expire the signature. /// @param v The recovery byte of the signature. /// @param r Half of the ECDSA signature pair. /// @param s Half of the ECDSA signature pair. function delegateBySig(address delegatee, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s) external { 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), 'Meowshi::delegateBySig: invalid signature'); unchecked {require(nonce == nonces[signatory]++, 'Meowshi::delegateBySig: invalid nonce');} require(block.timestamp <= expiry, 'Meowshi::delegateBySig: signature expired'); return _delegate(signatory, delegatee); } /*************** GETTER FUNCTIONS ***************/ /// @notice Get current chain. function getChainId() private view returns (uint256) { uint256 chainId; assembly {chainId := chainid()} return chainId; } /// @notice Gets the current votes balance for `account`. /// @param account The address to get votes balance. /// @return The number of current votes for `account`. function getCurrentVotes(address account) external view returns (uint256) { unchecked {uint32 nCheckpoints = numCheckpoints[account]; return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;} } /// @notice Determine the prior number of votes for an `account` as of a block number. /// @dev Block number must be a finalized block or else this function will revert to prevent misinformation. /// @param account The address of the `account` to check. /// @param blockNumber The block number to get the vote balance at. /// @return The number of votes the `account` had as of the given block. function getPriorVotes(address account, uint256 blockNumber) external view returns (uint256) { require(blockNumber < block.number, 'Meowshi::getPriorVotes: not yet determined'); uint32 nCheckpoints = numCheckpoints[account]; if (nCheckpoints == 0) {return 0;} unchecked { // @dev First check most recent balance. if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {return checkpoints[account][nCheckpoints - 1].votes;} // @dev 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; // 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;} } /*************** HELPER FUNCTIONS ***************/ function _delegate(address delegator, address delegatee) private { address currentDelegate = delegates[delegator]; uint256 delegatorBalance = balanceOf[delegator]; delegates[delegator] = delegatee; emit DelegateChanged(delegator, currentDelegate, delegatee); _moveDelegates(currentDelegate, delegatee, delegatorBalance); } function _moveDelegates(address srcRep, address dstRep, uint256 amount) private { unchecked { if (srcRep != dstRep && amount > 0) { if (srcRep != address(0)) { uint32 srcRepNum = numCheckpoints[srcRep]; uint256 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0; uint256 srcRepNew = srcRepOld - amount; _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew); } if (dstRep != address(0)) { uint32 dstRepNum = numCheckpoints[dstRep]; uint256 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0; uint256 dstRepNew = dstRepOld + amount; _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew); } }} } function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint256 oldVotes, uint256 newVotes) private { uint32 blockNumber = safe32(block.number); unchecked { 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); } /// @notice Enables calling multiple methods in a single call to this contract. function multicall(bytes[] calldata data) external returns (bytes[] memory results) { results = new bytes[](data.length); unchecked { for (uint256 i = 0; i < data.length; i++) { (bool success, bytes memory result) = address(this).delegatecall(data[i]); if (!success) { if (result.length < 68) revert(); assembly {result := add(result, 0x04)} revert(abi.decode(result, (string))); } results[i] = result; }} } function safe32(uint256 n) private pure returns (uint32) { require(n < 2**32, 'Meowshi::_writeCheckpoint: block number exceeds 32 bits'); return uint32(n);} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","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":"uint256","name":"votes","type":"uint256"}],"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":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"meow","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"meowSushi","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","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":"amount","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":[],"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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unmeow","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unmeowSushi","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405163095ea7b360e01b8152738798249c2e607446efb7ad49ec89dd1865ff427260048201526000196024820152736b3595068778dd592e39a122f4f5a5cf09c90fe29063095ea7b390604401602060405180830381600087803b1580156200007b57600080fd5b505af115801562000090573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b6919062000162565b5060405163095ea7b360e01b815273f5bce5077908a1b7370b9ae04adc565ebd64396660048201526000196024820152738798249c2e607446efb7ad49ec89dd1865ff42729063095ea7b390604401602060405180830381600087803b1580156200012057600080fd5b505af115801562000135573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015b919062000162565b506200018b565b60006020828403121562000174578081fd5b8151801515811462000184578182fd5b9392505050565b6120a4806200019b6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063b4b5ea571161007c578063b4b5ea5714610368578063c3cda5201461037b578063d505accf1461038e578063dd62ed3e146103a1578063e6ff41eb146103cc578063f1127ed8146103df57600080fd5b806370a08231146102bf578063782d6fe1146102df5780637ecebe00146102f257806395d89b4114610312578063a9059cbb14610335578063ac9650d81461034857600080fd5b8063313ce56711610115578063313ce567146101ee5780633c0adb6814610208578063587cde1e1461021b5780635c19a95c1461025c578063642ed500146102715780636fcfff451461028457600080fd5b806306fdde0314610152578063095ea7b31461018e57806318160ddd146101b15780631b04a34f146101c857806323b872dd146101db575b600080fd5b610178604051806040016040528060078152602001664d656f7773686960c81b81525081565b6040516101859190611f49565b60405180910390f35b6101a161019c366004611c46565b610436565b6040519015158152602001610185565b6101ba60005481565b604051908152602001610185565b6101ba6101d6366004611c46565b6104a3565b6101a16101e9366004611ba2565b610560565b6101f6601281565b60405160ff9091168152602001610185565b6101ba610216366004611c46565b61067c565b610244610229366004611b56565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610185565b61026f61026a366004611b56565b6108a7565b005b6101ba61027f366004611c46565b6108b4565b6102aa610292366004611b56565b60066020526000908152604090205463ffffffff1681565b60405163ffffffff9091168152602001610185565b6101ba6102cd366004611b56565b60026020526000908152604090205481565b6101ba6102ed366004611c46565b610ae3565b6101ba610300366004611b56565b60036020526000908152604090205481565b610178604051806040016040528060048152602001634d454f5760e01b81525081565b6101a1610343366004611c46565b610d0f565b61035b610356366004611d04565b610da3565b6040516101859190611eb4565b6101ba610376366004611b56565b610f13565b61026f610389366004611c6f565b610f77565b61026f61039c366004611bdd565b611264565b6101ba6103af366004611b70565b600160209081526000928352604080842090915290825290205481565b6101ba6103da366004611c46565b61159e565b61041a6103ed366004611cc6565b60056020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6040805163ffffffff9093168352602083019190915201610185565b3360008181526001602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104919086815260200190565b60405180910390a35060015b92915050565b60006104ae8261169a565b60405163097da6d360e41b815273f5bce5077908a1b7370b9ae04adc565ebd643966906397da6d309061050790738798249c2e607446efb7ad49ec89dd1865ff42729030908890600090620186a08a0490600401611f15565b6040805180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105589190611e55565b509392505050565b6001600160a01b0383166000908152600160209081526040808320338452909152812054600019146105c5576001600160a01b0384166000908152600160209081526040808320338452909152812080548492906105bf908490611fdf565b90915550505b6001600160a01b038416600090815260026020526040812080548492906105ed908490611fdf565b90915550506001600160a01b038084166000818152600260209081526040808320805488019055888516835260049091528082205492825290205461063792918216911684611713565b826001600160a01b0316846001600160a01b031660008051602061204f8339815191528460405161066a91815260200190565b60405180910390a35060019392505050565b6040516323b872dd60e01b815233600482015230602482015260448101829052600090736b3595068778dd592e39a122f4f5a5cf09c90fe2906323b872dd90606401602060405180830381600087803b1580156106d857600080fd5b505af11580156106ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107109190611d74565b50604051632967cf8360e21b815260048101839052738798249c2e607446efb7ad49ec89dd1865ff42729063a59f3e0c90602401600060405180830381600087803b15801561075e57600080fd5b505af1158015610772573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820181905273f5bce5077908a1b7370b9ae04adc565ebd64396693506302b9446c9250738798249c2e607446efb7ad49ec89dd1865ff427291819083906370a082319060240160206040518083038186803b1580156107e257600080fd5b505afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190611e3d565b60006040518663ffffffff1660e01b815260040161083c959493929190611f15565b6040805180830381600087803b15801561085557600080fd5b505af1158015610869573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088d9190611e55565b915061049d9050836108a2620186a084611fc0565b61183f565b6108b133826118dc565b50565b60006108bf8261169a565b60405163097da6d360e41b815273f5bce5077908a1b7370b9ae04adc565ebd643966906397da6d309061091890738798249c2e607446efb7ad49ec89dd1865ff42729030908190600090620186a08a0490600401611f15565b6040805180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109699190611e55565b506040516367dfd4c960e01b815260048101829052909150738798249c2e607446efb7ad49ec89dd1865ff4272906367dfd4c990602401600060405180830381600087803b1580156109ba57600080fd5b505af11580156109ce573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152736b3595068778dd592e39a122f4f5a5cf09c90fe2925063a9059cbb9150859083906370a082319060240160206040518083038186803b158015610a2657600080fd5b505afa158015610a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5e9190611e3d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610aa457600080fd5b505af1158015610ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adc9190611d74565b5092915050565b6000438210610b4c5760405162461bcd60e51b815260206004820152602a60248201527f4d656f777368693a3a6765745072696f72566f7465733a206e6f74207965742060448201526919195d195c9b5a5b995960b21b60648201526084015b60405180910390fd5b6001600160a01b03831660009081526006602052604090205463ffffffff1680610b7a57600091505061049d565b6001600160a01b038416600090815260056020908152604080832063ffffffff600019860181168552925290912054168310610be9576001600160a01b03841660009081526005602090815260408083206000199490940163ffffffff1683529290522060010154905061049d565b6001600160a01b038416600090815260056020908152604080832083805290915290205463ffffffff16831015610c2457600091505061049d565b600060001982015b8163ffffffff168163ffffffff161115610cd8576000600263ffffffff848403166001600160a01b038916600090815260056020908152604080832094909304860363ffffffff8181168452948252918390208351808501909452805490941680845260019094015490830152925090871415610cb35760200151945061049d9350505050565b805163ffffffff16871115610cca57819350610cd1565b6001820392505b5050610c2c565b506001600160a01b038516600090815260056020908152604080832063ffffffff9094168352929052206001015491505092915050565b33600090815260026020526040812080548391908390610d30908490611fdf565b90915550506001600160a01b038084166000818152600260209081526040808320805488019055338352600490915280822054928252902054610d7892918216911684611713565b6040518281526001600160a01b03841690339060008051602061204f83398151915290602001610491565b60608167ffffffffffffffff811115610dcc57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610dff57816020015b6060815260200190600190039081610dea5790505b50905060005b82811015610adc5760008030868685818110610e3157634e487b7160e01b600052603260045260246000fd5b9050602002810190610e439190611f5c565b604051610e51929190611ea4565b600060405180830381855af49150503d8060008114610e8c576040519150601f19603f3d011682016040523d82523d6000602084013e610e91565b606091505b509150915081610edd57604481511015610eaa57600080fd5b60048101905080806020019051810190610ec49190611d94565b60405162461bcd60e51b8152600401610b439190611f49565b80848481518110610efe57634e487b7160e01b600052603260045260246000fd5b60209081029190910101525050600101610e05565b6001600160a01b03811660009081526006602052604081205463ffffffff1680610f3e576000610f70565b6001600160a01b038316600090815260056020908152604080832063ffffffff60001986011684529091529020600101545b9392505050565b60408051808201825260078152664d656f7773686960c81b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527fb2519001d922cc8f01da040a1ebf40356f395758595af77f4a075390db7ffeeb81840152466060820152306080808301919091528351808303909101815260a0820184528051908301207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08301526001600160a01b038a1660e083015261010082018990526101208083018990528451808403909101815261014083019094528351939092019290922061190160f01b6101608401526101628301829052610182830181905290916000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa1580156110f9573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661116e5760405162461bcd60e51b815260206004820152602960248201527f4d656f777368693a3a64656c656761746542795369673a20696e76616c6964206044820152687369676e617475726560b81b6064820152608401610b43565b6001600160a01b038116600090815260036020526040902080546001810190915589146111eb5760405162461bcd60e51b815260206004820152602560248201527f4d656f777368693a3a64656c656761746542795369673a20696e76616c6964206044820152646e6f6e636560d81b6064820152608401610b43565b8742111561124d5760405162461bcd60e51b815260206004820152602960248201527f4d656f777368693a3a64656c656761746542795369673a207369676e617475726044820152681948195e1c1a5c995960ba1b6064820152608401610b43565b611257818b6118dc565b505050505b505050505050565b60408051808201825260078152664d656f7773686960c81b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527fb2519001d922cc8f01da040a1ebf40356f395758595af77f4a075390db7ffeeb81840152466060820152306080808301919091528351808303909101815260a0820184528051908301206001600160a01b038b81166000818152600386528681208054600181019091557f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960c087015260e0860192909252918c1661010085015261012084018b90526101408401526101608084018a90528551808503909101815261018084019095528451949093019390932061190160f01b6101a08301526101a282018490526101c2820181905291906101e20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa15801561140b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166114795760405162461bcd60e51b815260206004820152602260248201527f4d656f777368693a3a7065726d69743a20696e76616c6964207369676e617475604482015261726560f01b6064820152608401610b43565b8a6001600160a01b0316816001600160a01b0316146114da5760405162461bcd60e51b815260206004820152601d60248201527f4d656f777368693a3a7065726d69743a20756e617574686f72697a65640000006044820152606401610b43565b505050844211156115385760405162461bcd60e51b815260206004820152602260248201527f4d656f777368693a3a7065726d69743a207369676e6174757265206578706972604482015261195960f21b6064820152608401610b43565b6001600160a01b038881166000818152600160209081526040808320948c16808452948252918290208a905590518981527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b6040516323b872dd60e01b815233600482015273f5bce5077908a1b7370b9ae04adc565ebd643966602482015260448101829052600090738798249c2e607446efb7ad49ec89dd1865ff4272906323b872dd90606401602060405180830381600087803b15801561160e57600080fd5b505af1158015611622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116469190611d74565b5060405162ae511b60e21b815273f5bce5077908a1b7370b9ae04adc565ebd643966906302b9446c9061083c90738798249c2e607446efb7ad49ec89dd1865ff427290849030908890600090600401611f15565b33600090815260026020526040812080548392906116b9908490611fdf565b9091555050600080548290038155338152600460205260408120546116ea916001600160a01b039091169083611713565b604051818152600090339060008051602061204f8339815191529060200160405180910390a350565b816001600160a01b0316836001600160a01b0316141580156117355750600081115b1561183a576001600160a01b038316156117bc576001600160a01b03831660009081526006602052604081205463ffffffff1690816117755760006117a7565b6001600160a01b038516600090815260056020908152604080832063ffffffff60001987011684529091529020600101545b90508281036117b88684848461195c565b5050505b6001600160a01b0382161561183a576001600160a01b03821660009081526006602052604081205463ffffffff1690816117f7576000611829565b6001600160a01b038416600090815260056020908152604080832063ffffffff60001987011684529091529020600101545b905082810161125c8584848461195c565b505050565b6001600160a01b03821660009081526002602052604081208054839290611867908490611fa8565b925050819055508060008082825461187f9190611fa8565b90915550506001600160a01b038083166000908152600460205260408120546118a9921683611713565b6040518181526001600160a01b0383169060009060008051602061204f8339815191529060200160405180910390a35050565b6001600160a01b03808316600081815260046020818152604080842080546002845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611956828483611713565b50505050565b600061196743611aa9565b905060008463ffffffff161180156119b057506001600160a01b038516600090815260056020908152604080832063ffffffff6000198901811685529252909120548282169116145b156119ed576001600160a01b038516600090815260056020908152604080832063ffffffff60001989011684529091529020600101829055611a5e565b60408051808201825263ffffffff808416825260208083018681526001600160a01b038a166000818152600584528681208b8616825284528681209551865490861663ffffffff19918216178755925160019687015590815260069092529390208054928801909116919092161790555b60408051848152602081018490526001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b60006401000000008210611b255760405162461bcd60e51b815260206004820152603760248201527f4d656f777368693a3a5f7772697465436865636b706f696e743a20626c6f636b60448201527f206e756d626572206578636565647320333220626974730000000000000000006064820152608401610b43565b5090565b80356001600160a01b0381168114611b4057600080fd5b919050565b803560ff81168114611b4057600080fd5b600060208284031215611b67578081fd5b610f7082611b29565b60008060408385031215611b82578081fd5b611b8b83611b29565b9150611b9960208401611b29565b90509250929050565b600080600060608486031215611bb6578081fd5b611bbf84611b29565b9250611bcd60208501611b29565b9150604084013590509250925092565b600080600080600080600060e0888a031215611bf7578283fd5b611c0088611b29565b9650611c0e60208901611b29565b95506040880135945060608801359350611c2a60808901611b45565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611c58578182fd5b611c6183611b29565b946020939093013593505050565b60008060008060008060c08789031215611c87578182fd5b611c9087611b29565b95506020870135945060408701359350611cac60608801611b45565b92506080870135915060a087013590509295509295509295565b60008060408385031215611cd8578182fd5b611ce183611b29565b9150602083013563ffffffff81168114611cf9578182fd5b809150509250929050565b60008060208385031215611d16578182fd5b823567ffffffffffffffff80821115611d2d578384fd5b818501915085601f830112611d40578384fd5b813581811115611d4e578485fd5b8660208260051b8501011115611d62578485fd5b60209290920196919550909350505050565b600060208284031215611d85578081fd5b81518015158114610f70578182fd5b600060208284031215611da5578081fd5b815167ffffffffffffffff80821115611dbc578283fd5b818401915084601f830112611dcf578283fd5b815181811115611de157611de1612038565b604051601f8201601f19908116603f01168101908382118183101715611e0957611e09612038565b81604052828152876020848701011115611e21578586fd5b611e32836020830160208801611ff6565b979650505050505050565b600060208284031215611e4e578081fd5b5051919050565b60008060408385031215611e67578182fd5b505080516020909101519092909150565b60008151808452611e90816020860160208601611ff6565b601f01601f19169290920160200192915050565b8183823760009101908152919050565b6000602080830181845280855180835260408601915060408160051b8701019250838701855b82811015611f0857603f19888603018452611ef6858351611e78565b94509285019290850190600101611eda565b5092979650505050505050565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b602081526000610f706020830184611e78565b6000808335601e19843603018112611f72578283fd5b83018035915067ffffffffffffffff821115611f8c578283fd5b602001915036819003821315611fa157600080fd5b9250929050565b60008219821115611fbb57611fbb612022565b500190565b6000816000190483118215151615611fda57611fda612022565b500290565b600082821015611ff157611ff1612022565b500390565b60005b83811015612011578181015183820152602001611ff9565b838111156119565750506000910152565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122035b0fe5adbdae498498519145e816863e43ce263ac09956b745a7b88ea999a1f64736f6c63430008040033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063b4b5ea571161007c578063b4b5ea5714610368578063c3cda5201461037b578063d505accf1461038e578063dd62ed3e146103a1578063e6ff41eb146103cc578063f1127ed8146103df57600080fd5b806370a08231146102bf578063782d6fe1146102df5780637ecebe00146102f257806395d89b4114610312578063a9059cbb14610335578063ac9650d81461034857600080fd5b8063313ce56711610115578063313ce567146101ee5780633c0adb6814610208578063587cde1e1461021b5780635c19a95c1461025c578063642ed500146102715780636fcfff451461028457600080fd5b806306fdde0314610152578063095ea7b31461018e57806318160ddd146101b15780631b04a34f146101c857806323b872dd146101db575b600080fd5b610178604051806040016040528060078152602001664d656f7773686960c81b81525081565b6040516101859190611f49565b60405180910390f35b6101a161019c366004611c46565b610436565b6040519015158152602001610185565b6101ba60005481565b604051908152602001610185565b6101ba6101d6366004611c46565b6104a3565b6101a16101e9366004611ba2565b610560565b6101f6601281565b60405160ff9091168152602001610185565b6101ba610216366004611c46565b61067c565b610244610229366004611b56565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610185565b61026f61026a366004611b56565b6108a7565b005b6101ba61027f366004611c46565b6108b4565b6102aa610292366004611b56565b60066020526000908152604090205463ffffffff1681565b60405163ffffffff9091168152602001610185565b6101ba6102cd366004611b56565b60026020526000908152604090205481565b6101ba6102ed366004611c46565b610ae3565b6101ba610300366004611b56565b60036020526000908152604090205481565b610178604051806040016040528060048152602001634d454f5760e01b81525081565b6101a1610343366004611c46565b610d0f565b61035b610356366004611d04565b610da3565b6040516101859190611eb4565b6101ba610376366004611b56565b610f13565b61026f610389366004611c6f565b610f77565b61026f61039c366004611bdd565b611264565b6101ba6103af366004611b70565b600160209081526000928352604080842090915290825290205481565b6101ba6103da366004611c46565b61159e565b61041a6103ed366004611cc6565b60056020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6040805163ffffffff9093168352602083019190915201610185565b3360008181526001602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104919086815260200190565b60405180910390a35060015b92915050565b60006104ae8261169a565b60405163097da6d360e41b815273f5bce5077908a1b7370b9ae04adc565ebd643966906397da6d309061050790738798249c2e607446efb7ad49ec89dd1865ff42729030908890600090620186a08a0490600401611f15565b6040805180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105589190611e55565b509392505050565b6001600160a01b0383166000908152600160209081526040808320338452909152812054600019146105c5576001600160a01b0384166000908152600160209081526040808320338452909152812080548492906105bf908490611fdf565b90915550505b6001600160a01b038416600090815260026020526040812080548492906105ed908490611fdf565b90915550506001600160a01b038084166000818152600260209081526040808320805488019055888516835260049091528082205492825290205461063792918216911684611713565b826001600160a01b0316846001600160a01b031660008051602061204f8339815191528460405161066a91815260200190565b60405180910390a35060019392505050565b6040516323b872dd60e01b815233600482015230602482015260448101829052600090736b3595068778dd592e39a122f4f5a5cf09c90fe2906323b872dd90606401602060405180830381600087803b1580156106d857600080fd5b505af11580156106ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107109190611d74565b50604051632967cf8360e21b815260048101839052738798249c2e607446efb7ad49ec89dd1865ff42729063a59f3e0c90602401600060405180830381600087803b15801561075e57600080fd5b505af1158015610772573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820181905273f5bce5077908a1b7370b9ae04adc565ebd64396693506302b9446c9250738798249c2e607446efb7ad49ec89dd1865ff427291819083906370a082319060240160206040518083038186803b1580156107e257600080fd5b505afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190611e3d565b60006040518663ffffffff1660e01b815260040161083c959493929190611f15565b6040805180830381600087803b15801561085557600080fd5b505af1158015610869573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088d9190611e55565b915061049d9050836108a2620186a084611fc0565b61183f565b6108b133826118dc565b50565b60006108bf8261169a565b60405163097da6d360e41b815273f5bce5077908a1b7370b9ae04adc565ebd643966906397da6d309061091890738798249c2e607446efb7ad49ec89dd1865ff42729030908190600090620186a08a0490600401611f15565b6040805180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109699190611e55565b506040516367dfd4c960e01b815260048101829052909150738798249c2e607446efb7ad49ec89dd1865ff4272906367dfd4c990602401600060405180830381600087803b1580156109ba57600080fd5b505af11580156109ce573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152736b3595068778dd592e39a122f4f5a5cf09c90fe2925063a9059cbb9150859083906370a082319060240160206040518083038186803b158015610a2657600080fd5b505afa158015610a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5e9190611e3d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610aa457600080fd5b505af1158015610ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adc9190611d74565b5092915050565b6000438210610b4c5760405162461bcd60e51b815260206004820152602a60248201527f4d656f777368693a3a6765745072696f72566f7465733a206e6f74207965742060448201526919195d195c9b5a5b995960b21b60648201526084015b60405180910390fd5b6001600160a01b03831660009081526006602052604090205463ffffffff1680610b7a57600091505061049d565b6001600160a01b038416600090815260056020908152604080832063ffffffff600019860181168552925290912054168310610be9576001600160a01b03841660009081526005602090815260408083206000199490940163ffffffff1683529290522060010154905061049d565b6001600160a01b038416600090815260056020908152604080832083805290915290205463ffffffff16831015610c2457600091505061049d565b600060001982015b8163ffffffff168163ffffffff161115610cd8576000600263ffffffff848403166001600160a01b038916600090815260056020908152604080832094909304860363ffffffff8181168452948252918390208351808501909452805490941680845260019094015490830152925090871415610cb35760200151945061049d9350505050565b805163ffffffff16871115610cca57819350610cd1565b6001820392505b5050610c2c565b506001600160a01b038516600090815260056020908152604080832063ffffffff9094168352929052206001015491505092915050565b33600090815260026020526040812080548391908390610d30908490611fdf565b90915550506001600160a01b038084166000818152600260209081526040808320805488019055338352600490915280822054928252902054610d7892918216911684611713565b6040518281526001600160a01b03841690339060008051602061204f83398151915290602001610491565b60608167ffffffffffffffff811115610dcc57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610dff57816020015b6060815260200190600190039081610dea5790505b50905060005b82811015610adc5760008030868685818110610e3157634e487b7160e01b600052603260045260246000fd5b9050602002810190610e439190611f5c565b604051610e51929190611ea4565b600060405180830381855af49150503d8060008114610e8c576040519150601f19603f3d011682016040523d82523d6000602084013e610e91565b606091505b509150915081610edd57604481511015610eaa57600080fd5b60048101905080806020019051810190610ec49190611d94565b60405162461bcd60e51b8152600401610b439190611f49565b80848481518110610efe57634e487b7160e01b600052603260045260246000fd5b60209081029190910101525050600101610e05565b6001600160a01b03811660009081526006602052604081205463ffffffff1680610f3e576000610f70565b6001600160a01b038316600090815260056020908152604080832063ffffffff60001986011684529091529020600101545b9392505050565b60408051808201825260078152664d656f7773686960c81b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527fb2519001d922cc8f01da040a1ebf40356f395758595af77f4a075390db7ffeeb81840152466060820152306080808301919091528351808303909101815260a0820184528051908301207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08301526001600160a01b038a1660e083015261010082018990526101208083018990528451808403909101815261014083019094528351939092019290922061190160f01b6101608401526101628301829052610182830181905290916000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa1580156110f9573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661116e5760405162461bcd60e51b815260206004820152602960248201527f4d656f777368693a3a64656c656761746542795369673a20696e76616c6964206044820152687369676e617475726560b81b6064820152608401610b43565b6001600160a01b038116600090815260036020526040902080546001810190915589146111eb5760405162461bcd60e51b815260206004820152602560248201527f4d656f777368693a3a64656c656761746542795369673a20696e76616c6964206044820152646e6f6e636560d81b6064820152608401610b43565b8742111561124d5760405162461bcd60e51b815260206004820152602960248201527f4d656f777368693a3a64656c656761746542795369673a207369676e617475726044820152681948195e1c1a5c995960ba1b6064820152608401610b43565b611257818b6118dc565b505050505b505050505050565b60408051808201825260078152664d656f7773686960c81b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527fb2519001d922cc8f01da040a1ebf40356f395758595af77f4a075390db7ffeeb81840152466060820152306080808301919091528351808303909101815260a0820184528051908301206001600160a01b038b81166000818152600386528681208054600181019091557f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960c087015260e0860192909252918c1661010085015261012084018b90526101408401526101608084018a90528551808503909101815261018084019095528451949093019390932061190160f01b6101a08301526101a282018490526101c2820181905291906101e20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa15801561140b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166114795760405162461bcd60e51b815260206004820152602260248201527f4d656f777368693a3a7065726d69743a20696e76616c6964207369676e617475604482015261726560f01b6064820152608401610b43565b8a6001600160a01b0316816001600160a01b0316146114da5760405162461bcd60e51b815260206004820152601d60248201527f4d656f777368693a3a7065726d69743a20756e617574686f72697a65640000006044820152606401610b43565b505050844211156115385760405162461bcd60e51b815260206004820152602260248201527f4d656f777368693a3a7065726d69743a207369676e6174757265206578706972604482015261195960f21b6064820152608401610b43565b6001600160a01b038881166000818152600160209081526040808320948c16808452948252918290208a905590518981527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b6040516323b872dd60e01b815233600482015273f5bce5077908a1b7370b9ae04adc565ebd643966602482015260448101829052600090738798249c2e607446efb7ad49ec89dd1865ff4272906323b872dd90606401602060405180830381600087803b15801561160e57600080fd5b505af1158015611622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116469190611d74565b5060405162ae511b60e21b815273f5bce5077908a1b7370b9ae04adc565ebd643966906302b9446c9061083c90738798249c2e607446efb7ad49ec89dd1865ff427290849030908890600090600401611f15565b33600090815260026020526040812080548392906116b9908490611fdf565b9091555050600080548290038155338152600460205260408120546116ea916001600160a01b039091169083611713565b604051818152600090339060008051602061204f8339815191529060200160405180910390a350565b816001600160a01b0316836001600160a01b0316141580156117355750600081115b1561183a576001600160a01b038316156117bc576001600160a01b03831660009081526006602052604081205463ffffffff1690816117755760006117a7565b6001600160a01b038516600090815260056020908152604080832063ffffffff60001987011684529091529020600101545b90508281036117b88684848461195c565b5050505b6001600160a01b0382161561183a576001600160a01b03821660009081526006602052604081205463ffffffff1690816117f7576000611829565b6001600160a01b038416600090815260056020908152604080832063ffffffff60001987011684529091529020600101545b905082810161125c8584848461195c565b505050565b6001600160a01b03821660009081526002602052604081208054839290611867908490611fa8565b925050819055508060008082825461187f9190611fa8565b90915550506001600160a01b038083166000908152600460205260408120546118a9921683611713565b6040518181526001600160a01b0383169060009060008051602061204f8339815191529060200160405180910390a35050565b6001600160a01b03808316600081815260046020818152604080842080546002845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611956828483611713565b50505050565b600061196743611aa9565b905060008463ffffffff161180156119b057506001600160a01b038516600090815260056020908152604080832063ffffffff6000198901811685529252909120548282169116145b156119ed576001600160a01b038516600090815260056020908152604080832063ffffffff60001989011684529091529020600101829055611a5e565b60408051808201825263ffffffff808416825260208083018681526001600160a01b038a166000818152600584528681208b8616825284528681209551865490861663ffffffff19918216178755925160019687015590815260069092529390208054928801909116919092161790555b60408051848152602081018490526001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b60006401000000008210611b255760405162461bcd60e51b815260206004820152603760248201527f4d656f777368693a3a5f7772697465436865636b706f696e743a20626c6f636b60448201527f206e756d626572206578636565647320333220626974730000000000000000006064820152608401610b43565b5090565b80356001600160a01b0381168114611b4057600080fd5b919050565b803560ff81168114611b4057600080fd5b600060208284031215611b67578081fd5b610f7082611b29565b60008060408385031215611b82578081fd5b611b8b83611b29565b9150611b9960208401611b29565b90509250929050565b600080600060608486031215611bb6578081fd5b611bbf84611b29565b9250611bcd60208501611b29565b9150604084013590509250925092565b600080600080600080600060e0888a031215611bf7578283fd5b611c0088611b29565b9650611c0e60208901611b29565b95506040880135945060608801359350611c2a60808901611b45565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611c58578182fd5b611c6183611b29565b946020939093013593505050565b60008060008060008060c08789031215611c87578182fd5b611c9087611b29565b95506020870135945060408701359350611cac60608801611b45565b92506080870135915060a087013590509295509295509295565b60008060408385031215611cd8578182fd5b611ce183611b29565b9150602083013563ffffffff81168114611cf9578182fd5b809150509250929050565b60008060208385031215611d16578182fd5b823567ffffffffffffffff80821115611d2d578384fd5b818501915085601f830112611d40578384fd5b813581811115611d4e578485fd5b8660208260051b8501011115611d62578485fd5b60209290920196919550909350505050565b600060208284031215611d85578081fd5b81518015158114610f70578182fd5b600060208284031215611da5578081fd5b815167ffffffffffffffff80821115611dbc578283fd5b818401915084601f830112611dcf578283fd5b815181811115611de157611de1612038565b604051601f8201601f19908116603f01168101908382118183101715611e0957611e09612038565b81604052828152876020848701011115611e21578586fd5b611e32836020830160208801611ff6565b979650505050505050565b600060208284031215611e4e578081fd5b5051919050565b60008060408385031215611e67578182fd5b505080516020909101519092909150565b60008151808452611e90816020860160208601611ff6565b601f01601f19169290920160200192915050565b8183823760009101908152919050565b6000602080830181845280855180835260408601915060408160051b8701019250838701855b82811015611f0857603f19888603018452611ef6858351611e78565b94509285019290850190600101611eda565b5092979650505050505050565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b602081526000610f706020830184611e78565b6000808335601e19843603018112611f72578283fd5b83018035915067ffffffffffffffff821115611f8c578283fd5b602001915036819003821315611fa157600080fd5b9250929050565b60008219821115611fbb57611fbb612022565b500190565b6000816000190483118215151615611fda57611fda612022565b500290565b600082821015611ff157611ff1612022565b500390565b60005b83811015612011578181015183820152602001611ff9565b838111156119565750506000910152565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122035b0fe5adbdae498498519145e816863e43ce263ac09956b745a7b88ea999a1f64736f6c63430008040033
Deployed Bytecode Sourcemap
1375:15284:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1787:39;;;;;;;;;;;;;;;-1:-1:-1;;;1787:39:0;;;;;;;;;;;;:::i;:::-;;;;;;;;7195:207;;;;;;:::i;:::-;;:::i;:::-;;;8131:14:1;;8124:22;8106:41;;8094:2;8079:18;7195:207:0;8061:92:1;2003:26:0;;;;;;;;;14702:25:1;;;14690:2;14675:18;2003:26:0;14657:76:1;5006:230:0;;;;;;:::i;:::-;;:::i;9620:435::-;;;;;;:::i;:::-;;:::i;1878:35::-;;1911:2;1878:35;;;;;15628:4:1;15616:17;;;15598:36;;15586:2;15571:18;1878:35:0;15553:87:1;5343:380:0;;;;;;:::i;:::-;;:::i;2423:44::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2423:44:0;;;;;;-1:-1:-1;;;;;6455:32:1;;;6437:51;;6425:2;6410:18;2423:44:0;6392:102:1;10271:104:0;;;;;;:::i;:::-;;:::i;:::-;;5805:365;;;;;;:::i;:::-;;:::i;2685:48::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15165:10:1;15153:23;;;15135:42;;15123:2;15108:18;2685:48:0;15090:93:1;2212:44:0;;;;;;:::i;:::-;;;;;;;;;;;;;;12755:1133;;;;;;:::i;:::-;;:::i;2321:41::-;;;;;;:::i;:::-;;;;;;;;;;;;;;1833:38;;;;;;;;;;;;;;;-1:-1:-1;;;1833:38:0;;;;;8997:308;;;;;;:::i;:::-;;:::i;15928:551::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12092:235::-;;;;;;:::i;:::-;;:::i;10805:830::-;;;;;;:::i;:::-;;:::i;7887:872::-;;;;;;:::i;:::-;;:::i;2098:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;4590:333;;;;;;:::i;:::-;;:::i;2549:68::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15390:10:1;15378:23;;;15360:42;;15433:2;15418:18;;15411:34;;;;15333:18;2549:68:0;15315:136:1;7195:207:0;7290:10;7263:4;7280:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;7280:30:0;;;;;;;;;;:39;;;7335:37;7263:4;;7280:30;;7335:37;;;;7313:6;14702:25:1;;14690:2;14675:18;;14657:76;7335:37:0;;;;;;;;-1:-1:-1;7390:4:0;7195:207;;;;;:::o;5006:230::-;5068:17;5098:16;5107:6;5098:8;:16::i;:::-;5152:75;;-1:-1:-1;;;5152:75:0;;1446:42;;5152:14;;:75;;1685:42;;5193:4;;5200:2;;5204:1;;1950:7;5207:19;;;5152:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5136:91:0;5006:230;-1:-1:-1;;;5006:230:0:o;9620:435::-;-1:-1:-1;;;;;9723:15:0;;9702:4;9723:15;;;:9;:15;;;;;;;;9739:10;9723:27;;;;;;;;-1:-1:-1;;9723:48:0;9719:118;;-1:-1:-1;;;;;9788:15:0;;;;;;:9;:15;;;;;;;;9804:10;9788:27;;;;;;;:37;;9819:6;;9788:15;:37;;9819:6;;9788:37;:::i;:::-;;;;-1:-1:-1;;9719:118:0;-1:-1:-1;;;;;9847:15:0;;;;;;:9;:15;;;;;:25;;9866:6;;9847:15;:25;;9866:6;;9847:25;:::i;:::-;;;;-1:-1:-1;;;;;;;9894:13:0;;;;;;;:9;:13;;;;;;;;:23;;;;;;9944:15;;;;;:9;:15;;;;;;;9961:13;;;;;;9929:54;;9944:15;;;;9961:13;9911:6;9929:14;:54::i;:::-;10014:2;-1:-1:-1;;;;;9999:26:0;10008:4;-1:-1:-1;;;;;9999:26:0;-1:-1:-1;;;;;;;;;;;10018:6:0;9999:26;;;;14702:25:1;;14690:2;14675:18;;14657:76;9999:26:0;;;;;;;;-1:-1:-1;10043:4:0;9620:435;;;;;:::o;5343:380::-;5435:58;;-1:-1:-1;;;5435:58:0;;5459:10;5435:58;;;6739:34:1;5479:4:0;6789:18:1;;;6782:43;6841:18;;;6834:34;;;5408:14:0;;1573:42;;5435:23;;6674:18:1;;5435:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5504:33:0;;-1:-1:-1;;;5504:33:0;;;;;14702:25:1;;;1685:42:0;;5504:25;;14675:18:1;;5504:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5623:44:0;;-1:-1:-1;;;5623:44:0;;5601:4;5623:44;;;6437:51:1;;;1446:42:0;;-1:-1:-1;5561:13:0;;-1:-1:-1;1685:42:0;;5601:4;;1685:42;;5623:29;;6410:18:1;;5623:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5669:1;5561:110;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5548:123;-1:-1:-1;5682:33:0;;-1:-1:-1;5691:2:0;5695:19;1950:7;5548:123;5695:19;:::i;:::-;5682:8;:33::i;10271:104::-;10335:32;10345:10;10357:9;10335;:32::i;:::-;10271:104;:::o;5805:365::-;5872:17;5902:16;5911:6;5902:8;:16::i;:::-;5956:86;;-1:-1:-1;;;5956:86:0;;1446:42;;5956:14;;:86;;1685:42;;5997:4;;;;6019:1;;1950:7;6022:19;;;5956:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6054:36:0;;-1:-1:-1;;;6054:36:0;;;;;14702:25:1;;;5940:102:0;;-1:-1:-1;1685:42:0;;6054:25;;14675:18:1;;6054:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6125:35:0;;-1:-1:-1;;;6125:35:0;;6154:4;6125:35;;;6437:51:1;1573:42:0;;-1:-1:-1;6101:19:0;;-1:-1:-1;6121:2:0;;1573:42;;6125:20;;6410:18:1;;6125:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6101:60;;-1:-1:-1;;;;;;6101:60:0;;;;;;;-1:-1:-1;;;;;7071:32:1;;;6101:60:0;;;7053:51:1;7120:18;;;7113:34;7026:18;;6101:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5805:365;;;;:::o;12755:1133::-;12839:7;12881:12;12867:11;:26;12859:81;;;;-1:-1:-1;;;12859:81:0;;12360:2:1;12859:81:0;;;12342:21:1;12399:2;12379:18;;;12372:30;12438:34;12418:18;;;12411:62;-1:-1:-1;;;12489:18:1;;;12482:40;12539:19;;12859:81:0;;;;;;;;;-1:-1:-1;;;;;12973:23:0;;12951:19;12973:23;;;:14;:23;;;;;;;;13011:17;13007:34;;13038:1;13031:8;;;;;13007:34;-1:-1:-1;;;;;13126:20:0;;;;;;:11;:20;;;;;;;;:38;-1:-1:-1;;13147:16:0;;13126:38;;;;;;;;;:48;;:63;-1:-1:-1;13122:123:0;;-1:-1:-1;;;;;13199:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;13220:16:0;;;;13199:38;;;;;;;;13235:1;13199:44;;;-1:-1:-1;13192:51:0;;13122:123;-1:-1:-1;;;;;13310:20:0;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;13306:64:0;;;13367:1;13360:8;;;;;13306:64;13380:12;-1:-1:-1;;13422:16:0;;13449:380;13464:5;13456:13;;:5;:13;;;13449:380;;;13486:13;13528:1;13510:19;13511:13;;;13510:19;-1:-1:-1;;;;;13588:20:0;;13565;13588;;;:11;:20;;;;;;;;13510:19;;;;13502:27;;13588:28;;;;;;;;;;;;;13565:51;;;;;;;;;;;;;;;;;;;;;;;;;13502:27;-1:-1:-1;13565:51:0;13635:27;;13631:197;;;13690:8;;;;-1:-1:-1;13683:15:0;;-1:-1:-1;;;;13683:15:0;13631:197;13724:12;;:26;;;-1:-1:-1;13720:108:0;;;13779:6;13771:14;;13720:108;;;13825:1;13816:6;:10;13808:18;;13720:108;13449:380;;;;;-1:-1:-1;;;;;;13846:20:0;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;;;;-1:-1:-1;;12755:1133:0;;;;:::o;8997:308::-;9088:10;9061:4;9078:21;;;:9;:21;;;;;:31;;9103:6;;9078:21;9061:4;;9078:31;;9103:6;;9078:31;:::i;:::-;;;;-1:-1:-1;;;;;;;9132:13:0;;;;;;;:9;:13;;;;;;;;:23;;;;;;9192:10;9182:21;;:9;:21;;;;;;;9205:13;;;;;;9167:60;;9182:21;;;;9205:13;9149:6;9167:14;:60::i;:::-;9243:32;;14702:25:1;;;-1:-1:-1;;;;;9243:32:0;;;9252:10;;-1:-1:-1;;;;;;;;;;;9243:32:0;14690:2:1;14675:18;9243:32:0;14657:76:1;15928:551:0;15988:22;16045:4;16033:24;;;;;;-1:-1:-1;;;16033:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16023:34;;16094:9;16089:382;16109:15;;;16089:382;;;16147:12;;16192:4;16211;;16216:1;16211:7;;;;;-1:-1:-1;;;16211:7:0;;;;;;;;;;;;;;;;;;;;:::i;:::-;16184:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16146:73;;;;16239:7;16234:192;;16287:2;16271:6;:13;:18;16267:32;;;16291:8;;;16267:32;16350:4;16342:6;16338:17;16328:27;;16392:6;16381:28;;;;;;;;;;;;:::i;:::-;16374:36;;-1:-1:-1;;;16374:36:0;;;;;;;;:::i;16234:192::-;16453:6;16440:7;16448:1;16440:10;;;;;;-1:-1:-1;;;16440:10:0;;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;16126:3:0;;16089:382;;12092:235;-1:-1:-1;;;;;12210:23:0;;12157:7;12210:23;;;:14;:23;;;;;;;;12251:16;:67;;12317:1;12251:67;;;-1:-1:-1;;;;;12270:20:0;;;;;;:11;:20;;;;;;;;:38;-1:-1:-1;;12291:16:0;;12270:38;;;;;;;;12306:1;12270:44;;12251:67;12244:74;12092:235;-1:-1:-1;;;12092:235:0:o;10805:830::-;11009:4;;;;;;;;;;;-1:-1:-1;;;11009:4:0;;;;;10965:80;;2841;10965;;;9407:25:1;10993:22:0;9448:18:1;;;9441:34;11861:9:0;9491:18:1;;;9484:34;11039:4:0;9534:18:1;;;;9527:60;;;;10965:80:0;;;;;;;;;;9379:19:1;;;10965:80:0;;10955:91;;;;;;3053:71;11088:57;;;8985:25:1;-1:-1:-1;;;;;9046:32:1;;9026:18;;;9019:60;9095:18;;;9088:34;;;9138:18;;;;9131:34;;;11088:57:0;;;;;;;;;;8957:19:1;;;11088:57:0;;;11078:68;;;;;;;;;;-1:-1:-1;;;11184:57:0;;;6152:27:1;6195:11;;;6188:27;;;6231:12;;;6224:28;;;10955:91:0;;-1:-1:-1;;6268:12:1;;11184:57:0;;;-1:-1:-1;;11184:57:0;;;;;;;;;11174:68;;11184:57;11174:68;;;;11253:17;11273:26;;;;;;;;;9825:25:1;;;9898:4;9886:17;;9866:18;;;9859:45;;;;9920:18;;;9913:34;;;9963:18;;;9956:34;;;11174:68:0;;-1:-1:-1;11253:17:0;11273:26;;9797:19:1;;11273:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11273:26:0;;-1:-1:-1;;11273:26:0;;;-1:-1:-1;;;;;;;11318:23:0;;11310:77;;;;-1:-1:-1;;;11310:77:0;;13938:2:1;11310:77:0;;;13920:21:1;13977:2;13957:18;;;13950:30;14016:34;13996:18;;;13989:62;-1:-1:-1;;;14067:18:1;;;14060:39;14116:19;;11310:77:0;13910:231:1;11310:77:0;-1:-1:-1;;;;;11426:17:0;;;;;;:6;:17;;;;;:19;;;;;;;;11417:28;;11409:78;;;;-1:-1:-1;;;11409:78:0;;13532:2:1;11409:78:0;;;13514:21:1;13571:2;13551:18;;;13544:30;13610:34;13590:18;;;13583:62;-1:-1:-1;;;13661:18:1;;;13654:35;13706:19;;11409:78:0;13504:227:1;11409:78:0;11526:6;11507:15;:25;;11499:79;;;;-1:-1:-1;;;11499:79:0;;14348:2:1;11499:79:0;;;14330:21:1;14387:2;14367:18;;;14360:30;14426:34;14406:18;;;14399:62;-1:-1:-1;;;14477:18:1;;;14470:39;14526:19;;11499:79:0;14320:231:1;11499:79:0;11596:31;11606:9;11617;11596;:31::i;:::-;11589:38;;;;10805:830;;;;;;;:::o;7887:872::-;8097:4;;;;;;;;;;;-1:-1:-1;;;8097:4:0;;;;;8053:80;;2841;8053;;;9407:25:1;8081:22:0;9448:18:1;;;9441:34;11861:9:0;9491:18:1;;;9484:34;8127:4:0;9534:18:1;;;;9527:60;;;;8053:80:0;;;;;;;;;;9379:19:1;;;8053:80:0;;8043:91;;;;;;-1:-1:-1;;;;;8239:13:0;;;-1:-1:-1;8239:13:0;;;:6;:13;;;;;:15;;;;;;;;3248:95;8187:78;;;8445:25:1;8524:18;;;8517:43;;;;8596:15;;;8576:18;;;8569:43;8628:18;;;8621:34;;;8671:19;;;8664:35;8715:19;;;;8708:35;;;8187:78:0;;;;;;;;;;8417:19:1;;;8187:78:0;;;8177:89;;;;;;;;;;-1:-1:-1;;;8304:57:0;;;6152:27:1;6195:11;;;6188:27;;;6231:12;;;6224:28;;;8177:89:0;-1:-1:-1;6268:12:1;;8304:57:0;;;-1:-1:-1;;8304:57:0;;;;;;;;;8294:68;;8304:57;8294:68;;;;8373:17;8393:26;;;;;;;;;9825:25:1;;;9898:4;9886:17;;9866:18;;;9859:45;;;;9920:18;;;9913:34;;;9963:18;;;9956:34;;;8294:68:0;;-1:-1:-1;8373:17:0;8393:26;;9797:19:1;;8393:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8393:26:0;;-1:-1:-1;;8393:26:0;;;-1:-1:-1;;;;;;;8439:23:0;;8431:70;;;;-1:-1:-1;;;8431:70:0;;12771:2:1;8431:70:0;;;12753:21:1;12810:2;12790:18;;;12783:30;12849:34;12829:18;;;12822:62;-1:-1:-1;;;12900:18:1;;;12893:32;12942:19;;8431:70:0;12743:224:1;8431:70:0;8533:5;-1:-1:-1;;;;;8520:18:0;:9;-1:-1:-1;;;;;8520:18:0;;8512:60;;;;-1:-1:-1;;;8512:60:0;;13174:2:1;8512:60:0;;;13156:21:1;13213:2;13193:18;;;13186:30;13252:31;13232:18;;;13225:59;13301:18;;8512:60:0;13146:179:1;8512:60:0;7887:872;;;8611:8;8592:15;:27;;8584:74;;;;-1:-1:-1;;;8584:74:0;;11533:2:1;8584:74:0;;;11515:21:1;11572:2;11552:18;;;11545:30;11611:34;11591:18;;;11584:62;-1:-1:-1;;;11662:18:1;;;11655:32;11704:19;;8584:74:0;11505:224:1;8584:74:0;-1:-1:-1;;;;;8669:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:34;;;8719:32;;14702:25:1;;;8719:32:0;;14675:18:1;8719:32:0;;;;;;;7887:872;;;;;;;;:::o;4590:333::-;4677:68;;-1:-1:-1;;;4677:68:0;;4710:10;4677:68;;;6739:34:1;1446:42:0;6789:18:1;;;6782:43;6841:18;;;6834:34;;;4650:14:0;;1685:42;;4677:32;;6674:18:1;;4677:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4798:73:0;;-1:-1:-1;;;4798:73:0;;1446:42;;4798:13;;:73;;1685:42;;1446;;4854:4;;4861:6;;4869:1;;4798:73;;;:::i;6557:260::-;6620:10;6610:21;;;;:9;:21;;;;;:31;;6635:6;;6610:21;:31;;6635:6;;6610:31;:::i;:::-;;;;-1:-1:-1;;6663:11:0;:21;;;;;;;6721:10;6711:21;;:9;:21;;;;;;6696:57;;-1:-1:-1;;;;;6711:21:0;;;;6663;6696:14;:57::i;:::-;6769:40;;14702:25:1;;;6798:1:0;;6778:10;;-1:-1:-1;;;;;;;;;;;6769:40:0;14690:2:1;14675:18;6769:40:0;;;;;;;6557:260;:::o;14347:864::-;14473:6;-1:-1:-1;;;;;14463:16:0;:6;-1:-1:-1;;;;;14463:16:0;;;:30;;;;;14492:1;14483:6;:10;14463:30;14459:744;;;-1:-1:-1;;;;;14514:20:0;;;14510:334;;-1:-1:-1;;;;;14574:22:0;;14555:16;14574:22;;;:14;:22;;;;;;;;;14635:13;:60;;14694:1;14635:60;;;-1:-1:-1;;;;;14651:19:0;;;;;;:11;:19;;;;;;;;:34;-1:-1:-1;;14671:13:0;;14651:34;;;;;;;;14683:1;14651:40;;14635:60;14615:80;-1:-1:-1;14734:18:0;;;14771:57;14788:6;14796:9;14615:80;14734:18;14771:16;:57::i;:::-;14510:334;;;;-1:-1:-1;;;;;14862:20:0;;;14858:334;;-1:-1:-1;;;;;14922:22:0;;14903:16;14922:22;;;:14;:22;;;;;;;;;14983:13;:60;;15042:1;14983:60;;;-1:-1:-1;;;;;14999:19:0;;;;;;:11;:19;;;;;;;;:34;-1:-1:-1;;15019:13:0;;14999:34;;;;;;;;15031:1;14999:40;;14983:60;14963:80;-1:-1:-1;15082:18:0;;;15119:57;15136:6;15144:9;14963:80;15082:18;15119:16;:57::i;14858:334::-;14347:864;;;:::o;6255:236::-;-1:-1:-1;;;;;6320:13:0;;;;;;:9;:13;;;;;:23;;6337:6;;6320:13;:23;;6337:6;;6320:23;:::i;:::-;;;;;;;;6369:6;6354:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;6413:13:0;;;6409:1;6413:13;;;:9;:13;;;;;;6386:49;;6413:13;6428:6;6386:14;:49::i;:::-;6451:32;;14702:25:1;;;-1:-1:-1;;;;;6451:32:0;;;6468:1;;-1:-1:-1;;;;;;;;;;;6451:32:0;14690:2:1;14675:18;6451:32:0;;;;;;;6255:236;;:::o;13966:373::-;-1:-1:-1;;;;;14068:20:0;;;14042:23;14068:20;;;:9;:20;;;;;;;;;;14127:9;:20;;;;;;14158;;;;:32;;;-1:-1:-1;;;;;;14158:32:0;;;;;;;14206:54;;14068:20;;;;;14127;;14158:32;;14068:20;;;14206:54;;14042:23;14206:54;14271:60;14286:15;14303:9;14314:16;14271:14;:60::i;:::-;13966:373;;;;:::o;15223:608::-;15344:18;15365:20;15372:12;15365:6;:20::i;:::-;15344:41;;15436:1;15421:12;:16;;;:85;;;;-1:-1:-1;;;;;;15441:22:0;;;;;;:11;:22;;;;;;;;:65;-1:-1:-1;;15464:16:0;;15441:40;;;;;;;;;:50;:65;;;:50;;:65;15421:85;15417:339;;;-1:-1:-1;;;;;15523:22:0;;;;;;:11;:22;;;;;;;;:40;-1:-1:-1;;15546:16:0;;15523:40;;;;;;;;15561:1;15523:46;:57;;;15417:339;;;15652:33;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15613:22:0;;-1:-1:-1;15613:22:0;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;-1:-1:-1;;15613:72:0;;;;;;;;;;;;;15700:25;;;:14;:25;;;;;;:44;;15728:16;;;15700:44;;;;;;;;;;15417:339;15772:51;;;14912:25:1;;;14968:2;14953:18;;14946:34;;;-1:-1:-1;;;;;15772:51:0;;;;;14885:18:1;15772:51:0;;;;;;;15223:608;;;;;:::o;16491:165::-;16540:6;16571:5;16567:1;:9;16559:77;;;;-1:-1:-1;;;16559:77:0;;11936:2:1;16559:77:0;;;11918:21:1;11975:2;11955:18;;;11948:30;12014:34;11994:18;;;11987:62;12085:25;12065:18;;;12058:53;12128:19;;16559:77:0;11908:245:1;16559:77:0;-1:-1:-1;16652:1:0;16491:165::o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:156::-;258:20;;318:4;307:16;;297:27;;287:2;;338:1;335;328:12;353:196;412:6;465:2;453:9;444:7;440:23;436:32;433:2;;;486:6;478;471:22;433:2;514:29;533:9;514:29;:::i;554:270::-;622:6;630;683:2;671:9;662:7;658:23;654:32;651:2;;;704:6;696;689:22;651:2;732:29;751:9;732:29;:::i;:::-;722:39;;780:38;814:2;803:9;799:18;780:38;:::i;:::-;770:48;;641:183;;;;;:::o;829:338::-;906:6;914;922;975:2;963:9;954:7;950:23;946:32;943:2;;;996:6;988;981:22;943:2;1024:29;1043:9;1024:29;:::i;:::-;1014:39;;1072:38;1106:2;1095:9;1091:18;1072:38;:::i;:::-;1062:48;;1157:2;1146:9;1142:18;1129:32;1119:42;;933:234;;;;;:::o;1172:616::-;1283:6;1291;1299;1307;1315;1323;1331;1384:3;1372:9;1363:7;1359:23;1355:33;1352:2;;;1406:6;1398;1391:22;1352:2;1434:29;1453:9;1434:29;:::i;:::-;1424:39;;1482:38;1516:2;1505:9;1501:18;1482:38;:::i;:::-;1472:48;;1567:2;1556:9;1552:18;1539:32;1529:42;;1618:2;1607:9;1603:18;1590:32;1580:42;;1641:37;1673:3;1662:9;1658:19;1641:37;:::i;:::-;1631:47;;1725:3;1714:9;1710:19;1697:33;1687:43;;1777:3;1766:9;1762:19;1749:33;1739:43;;1342:446;;;;;;;;;;:::o;1793:264::-;1861:6;1869;1922:2;1910:9;1901:7;1897:23;1893:32;1890:2;;;1943:6;1935;1928:22;1890:2;1971:29;1990:9;1971:29;:::i;:::-;1961:39;2047:2;2032:18;;;;2019:32;;-1:-1:-1;;;1880:177:1:o;2062:541::-;2164:6;2172;2180;2188;2196;2204;2257:3;2245:9;2236:7;2232:23;2228:33;2225:2;;;2279:6;2271;2264:22;2225:2;2307:29;2326:9;2307:29;:::i;:::-;2297:39;;2383:2;2372:9;2368:18;2355:32;2345:42;;2434:2;2423:9;2419:18;2406:32;2396:42;;2457:36;2489:2;2478:9;2474:18;2457:36;:::i;:::-;2447:46;;2540:3;2529:9;2525:19;2512:33;2502:43;;2592:3;2581:9;2577:19;2564:33;2554:43;;2215:388;;;;;;;;:::o;2608:370::-;2675:6;2683;2736:2;2724:9;2715:7;2711:23;2707:32;2704:2;;;2757:6;2749;2742:22;2704:2;2785:29;2804:9;2785:29;:::i;:::-;2775:39;;2864:2;2853:9;2849:18;2836:32;2908:10;2901:5;2897:22;2890:5;2887:33;2877:2;;2939:6;2931;2924:22;2877:2;2967:5;2957:15;;;2694:284;;;;;:::o;2983:676::-;3080:6;3088;3141:2;3129:9;3120:7;3116:23;3112:32;3109:2;;;3162:6;3154;3147:22;3109:2;3207:9;3194:23;3236:18;3277:2;3269:6;3266:14;3263:2;;;3298:6;3290;3283:22;3263:2;3341:6;3330:9;3326:22;3316:32;;3386:7;3379:4;3375:2;3371:13;3367:27;3357:2;;3413:6;3405;3398:22;3357:2;3458;3445:16;3484:2;3476:6;3473:14;3470:2;;;3505:6;3497;3490:22;3470:2;3563:7;3558:2;3548:6;3545:1;3541:14;3537:2;3533:23;3529:32;3526:45;3523:2;;;3589:6;3581;3574:22;3523:2;3625;3617:11;;;;;3647:6;;-1:-1:-1;3099:560:1;;-1:-1:-1;;;;3099:560:1:o;3664:297::-;3731:6;3784:2;3772:9;3763:7;3759:23;3755:32;3752:2;;;3805:6;3797;3790:22;3752:2;3842:9;3836:16;3895:5;3888:13;3881:21;3874:5;3871:32;3861:2;;3922:6;3914;3907:22;3966:924;4046:6;4099:2;4087:9;4078:7;4074:23;4070:32;4067:2;;;4120:6;4112;4105:22;4067:2;4158:9;4152:16;4187:18;4228:2;4220:6;4217:14;4214:2;;;4249:6;4241;4234:22;4214:2;4292:6;4281:9;4277:22;4267:32;;4337:7;4330:4;4326:2;4322:13;4318:27;4308:2;;4364:6;4356;4349:22;4308:2;4398;4392:9;4420:2;4416;4413:10;4410:2;;;4426:18;;:::i;:::-;4501:2;4495:9;4469:2;4555:13;;-1:-1:-1;;4551:22:1;;;4575:2;4547:31;4543:40;4531:53;;;4599:18;;;4619:22;;;4596:46;4593:2;;;4645:18;;:::i;:::-;4685:10;4681:2;4674:22;4720:2;4712:6;4705:18;4760:7;4755:2;4750;4746;4742:11;4738:20;4735:33;4732:2;;;4786:6;4778;4771:22;4732:2;4804:55;4856:2;4851;4843:6;4839:15;4834:2;4830;4826:11;4804:55;:::i;:::-;4878:6;4057:833;-1:-1:-1;;;;;;;4057:833:1:o;4895:194::-;4965:6;5018:2;5006:9;4997:7;4993:23;4989:32;4986:2;;;5039:6;5031;5024:22;4986:2;-1:-1:-1;5067:16:1;;4976:113;-1:-1:-1;4976:113:1:o;5094:255::-;5173:6;5181;5234:2;5222:9;5213:7;5209:23;5205:32;5202:2;;;5255:6;5247;5240:22;5202:2;-1:-1:-1;;5283:16:1;;5339:2;5324:18;;;5318:25;5283:16;;5318:25;;-1:-1:-1;5192:157:1:o;5354:257::-;5395:3;5433:5;5427:12;5460:6;5455:3;5448:19;5476:63;5532:6;5525:4;5520:3;5516:14;5509:4;5502:5;5498:16;5476:63;:::i;:::-;5593:2;5572:15;-1:-1:-1;;5568:29:1;5559:39;;;;5600:4;5555:50;;5403:208;-1:-1:-1;;5403:208:1:o;5616:273::-;5799:6;5791;5786:3;5773:33;5755:3;5825:16;;5850:15;;;5825:16;5763:126;-1:-1:-1;5763:126:1:o;7158:803::-;7318:4;7347:2;7387;7376:9;7372:18;7417:2;7406:9;7399:21;7440:6;7475;7469:13;7506:6;7498;7491:22;7544:2;7533:9;7529:18;7522:25;;7606:2;7596:6;7593:1;7589:14;7578:9;7574:30;7570:39;7556:53;;7644:2;7636:6;7632:15;7665:4;7678:254;7692:6;7689:1;7686:13;7678:254;;;7785:2;7781:7;7769:9;7761:6;7757:22;7753:36;7748:3;7741:49;7813:39;7845:6;7836;7830:13;7813:39;:::i;:::-;7803:49;-1:-1:-1;7910:12:1;;;;7875:15;;;;7714:1;7707:9;7678:254;;;-1:-1:-1;7949:6:1;;7327:634;-1:-1:-1;;;;;;;7327:634:1:o;10001:548::-;-1:-1:-1;;;;;10336:15:1;;;10318:34;;10388:15;;;10383:2;10368:18;;10361:43;10440:15;;;;10435:2;10420:18;;10413:43;10487:2;10472:18;;10465:34;;;;10530:3;10515:19;;10508:35;;;;10267:3;10252:19;;10234:315::o;11107:219::-;11256:2;11245:9;11238:21;11219:4;11276:44;11316:2;11305:9;11301:18;11293:6;11276:44;:::i;15645:533::-;15722:4;15728:6;15788:11;15775:25;15882:2;15878:7;15867:8;15851:14;15847:29;15843:43;15823:18;15819:68;15809:2;;15904:4;15898;15891:18;15809:2;15934:33;;15986:20;;;-1:-1:-1;16029:18:1;16018:30;;16015:2;;;16064:4;16058;16051:18;16015:2;16100:4;16088:17;;-1:-1:-1;16131:14:1;16127:27;;;16117:38;;16114:2;;;16168:1;16165;16158:12;16114:2;15739:439;;;;;:::o;16183:128::-;16223:3;16254:1;16250:6;16247:1;16244:13;16241:2;;;16260:18;;:::i;:::-;-1:-1:-1;16296:9:1;;16231:80::o;16316:168::-;16356:7;16422:1;16418;16414:6;16410:14;16407:1;16404:21;16399:1;16392:9;16385:17;16381:45;16378:2;;;16429:18;;:::i;:::-;-1:-1:-1;16469:9:1;;16368:116::o;16489:125::-;16529:4;16557:1;16554;16551:8;16548:2;;;16562:18;;:::i;:::-;-1:-1:-1;16599:9:1;;16538:76::o;16619:258::-;16691:1;16701:113;16715:6;16712:1;16709:13;16701:113;;;16791:11;;;16785:18;16772:11;;;16765:39;16737:2;16730:10;16701:113;;;16832:6;16829:1;16826:13;16823:2;;;-1:-1:-1;;16867:1:1;16849:16;;16842:27;16672:205::o;16882:127::-;16943:10;16938:3;16934:20;16931:1;16924:31;16974:4;16971:1;16964:15;16998:4;16995:1;16988:15;17014:127;17075:10;17070:3;17066:20;17063:1;17056:31;17106:4;17103:1;17096:15;17130:4;17127:1;17120:15
Swarm Source
ipfs://35b0fe5adbdae498498519145e816863e43ce263ac09956b745a7b88ea999a1f
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.