ERC-20
Overview
Max Total Supply
4,906,053.849594295650021867 Shards
Holders
1,624
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
13,591.721064814814814798 ShardsValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Shards
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-07-31 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } /* ⠀*⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀*⠀⠀⠀⠀⢀⣀⣀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⣀⣀⡀⠀⠀⠀⠀⠀ ⠀*⠀⠀⠀⠀⢸⣿⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⣿⡇⠀⠀⠀⠀⠀ ⠀*⠀⠀⠀⠀⢸⣿⠀⢸⣿⣿⣿⣿⡿⠟⠁⠀⠀⣀⣾⣿⣿⠀⣿⡇⠀⠀⠀⠀⠀ ⠀*⠀⠀⠀⠀⢸⣿⠀⢸⣿⣿⡿⠋⠀⠀⠀⣠⣾⣿⡿⠋⠁⠀⣿⡇⠀⠀⠀⠀⠀ ⠀*⠀⠀⠀⠀⢸⣿⠀⢸⠟⠉⠀⠀⢀⣴⣾⣿⠿⠋⠀⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀ ⠀*⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⣠⣴⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀ ⠀*⠀⠀⠀⠀⢸⣿⠀⠀⣠⣾⣿⡿⠋⠁⠀⠀⠀⠀⠀⣠⣶⠀⣿⡇⠀⠀⠀⠀⠀ ⠀*⠀⠀⠀⠀⢸⣿⠀⢸⣿⠿⠋⠀⠀⠀⠀⠀⢀⣠⣾⡿⠟⠀⣿⡇⠀⠀⠀⠀⠀ ⠀*⠀⠀⠀⠀⢸⣿⠀⠘⠁⠀⠀⠀⠀⠀⢀⣴⣿⡿⠋⣠⣴⠀⣿⡇⠀⠀⠀⠀⠀ ⠀*⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⣠⣾⣿⠟⢁⣠⣾⣿⣿⠀⣿⡇⠀⠀⠀⠀⠀ ⠀*⠀⠀⠀⠀⢸⣿⠀⠀⠀⢀⣠⣾⡿⠋⢁⣴⣿⣿⣿⣿⣿⠀⣿⡇⠀⠀⠀⠀⠀ ⠀*⠀⠀⠀⠀⢸⣿⣀⣀⣀⣈⣉⣉⣀⣀⣉⣉⣉⣉⣉⣉⣉⣀⣿⡇⠀⠀⠀⠀⠀ ⠀*⠀⠀⠀⠀⠘⠛⠛⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠛⠛⠃⠀⠀⠀⠀⠀ ⠀*⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠛⠛⠛⠛⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ * MIRRORPASS.XYZ */ contract Shards is ERC20, Ownable { uint256 public shardRate = 10 ether; uint256 public shardsDay = 1 days; uint256 private teamRate = 0; mapping(address => bool) public adminAddresses; modifier onlyAdmins() { require(adminAddresses[msg.sender], "You're not authorized to call this"); _; } constructor() ERC20("Shards", "Shards") {} function setAdminAddresses(address contractAddress, bool state) public onlyOwner { adminAddresses[contractAddress] = state; } function changeShardRate(uint256 newRate) public onlyOwner { shardRate = newRate; } function changeShardDay(uint256 day) public onlyOwner { shardsDay = day; } function determineYield(uint256 timestamp) public view returns(uint256) { if (timestamp == 0) { return 0; } else { return shardRate * (block.timestamp - timestamp) / shardsDay; } } function mintShards(address wallet, uint256 amount) public onlyAdmins { _mint(wallet, amount); } function burnShards(address wallet, uint256 amount) public onlyAdmins { _burn(wallet, amount); } function setTeamRate(uint256 newRate) public onlyOwner { teamRate = newRate; } function getTeamRate() public view returns(uint256) { return teamRate; } }
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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"adminAddresses","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":"amount","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":"wallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnShards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"day","type":"uint256"}],"name":"changeShardDay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"changeShardRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"determineYield","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTeamRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintShards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setAdminAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"setTeamRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"shardsDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052678ac7230489e800006006556201518060075560006008553480156200002957600080fd5b506040518060400160405280600681526020017f53686172647300000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f53686172647300000000000000000000000000000000000000000000000000008152508160039080519060200190620000ae929190620001be565b508060049080519060200190620000c7929190620001be565b505050620000ea620000de620000f060201b60201c565b620000f860201b60201c565b620002d3565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001cc906200026e565b90600052602060002090601f016020900481019282620001f057600085556200023c565b82601f106200020b57805160ff19168380011785556200023c565b828001600101855582156200023c579182015b828111156200023b5782518255916020019190600101906200021e565b5b5090506200024b91906200024f565b5090565b5b808211156200026a57600081600090555060010162000250565b5090565b600060028204905060018216806200028757607f821691505b602082108114156200029e576200029d620002a4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6124a680620002e36000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80638da5cb5b116100de578063be80ee6811610097578063cd14382111610071578063cd14382114610460578063dd62ed3e1461047e578063ede6aa29146104ae578063f2fde38b146104ca57610173565b8063be80ee68146103f6578063c684e51614610414578063ca192f2e1461044457610173565b80638da5cb5b1461032057806395d89b411461033e578063a02431701461035c578063a457c2d714610378578063a9059cbb146103a8578063a97af06e146103d857610173565b80632e8f7b1f116101305780632e8f7b1f1461024c578063313ce5671461026857806339509351146102865780634ed38faf146102b657806370a08231146102e6578063715018a61461031657610173565b806306fdde0314610178578063095ea7b31461019657806317bbddf7146101c657806318160ddd146101e257806323b872dd146102005780632c22a12a14610230575b600080fd5b6101806104e6565b60405161018d9190611bee565b60405180910390f35b6101b060048036038101906101ab919061190f565b610578565b6040516101bd9190611bd3565b60405180910390f35b6101e060048036038101906101db919061190f565b610596565b005b6101ea610630565b6040516101f79190611db0565b60405180910390f35b61021a6004803603810190610215919061187c565b61063a565b6040516102279190611bd3565b60405180910390f35b61024a6004803603810190610245919061190f565b610732565b005b6102666004803603810190610261919061194f565b6107cc565b005b610270610852565b60405161027d9190611dcb565b60405180910390f35b6102a0600480360381019061029b919061190f565b61085b565b6040516102ad9190611bd3565b60405180910390f35b6102d060048036038101906102cb919061180f565b610907565b6040516102dd9190611bd3565b60405180910390f35b61030060048036038101906102fb919061180f565b610927565b60405161030d9190611db0565b60405180910390f35b61031e61096f565b005b6103286109f7565b6040516103359190611bb8565b60405180910390f35b610346610a21565b6040516103539190611bee565b60405180910390f35b6103766004803603810190610371919061194f565b610ab3565b005b610392600480360381019061038d919061190f565b610b39565b60405161039f9190611bd3565b60405180910390f35b6103c260048036038101906103bd919061190f565b610c24565b6040516103cf9190611bd3565b60405180910390f35b6103e0610c42565b6040516103ed9190611db0565b60405180910390f35b6103fe610c48565b60405161040b9190611db0565b60405180910390f35b61042e6004803603810190610429919061194f565b610c52565b60405161043b9190611db0565b60405180910390f35b61045e6004803603810190610459919061194f565b610c93565b005b610468610d19565b6040516104759190611db0565b60405180910390f35b6104986004803603810190610493919061183c565b610d1f565b6040516104a59190611db0565b60405180910390f35b6104c860048036038101906104c391906118cf565b610da6565b005b6104e460048036038101906104df919061180f565b610e7d565b005b6060600380546104f590611f9f565b80601f016020809104026020016040519081016040528092919081815260200182805461052190611f9f565b801561056e5780601f106105435761010080835404028352916020019161056e565b820191906000526020600020905b81548152906001019060200180831161055157829003601f168201915b5050505050905090565b600061058c610585610f75565b8484610f7d565b6001905092915050565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061990611cb0565b60405180910390fd5b61062c8282611148565b5050565b6000600254905090565b60006106478484846112a8565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610692610f75565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070990611cd0565b60405180910390fd5b6107268561071e610f75565b858403610f7d565b60019150509392505050565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166107be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b590611cb0565b60405180910390fd5b6107c88282611529565b5050565b6107d4610f75565b73ffffffffffffffffffffffffffffffffffffffff166107f26109f7565b73ffffffffffffffffffffffffffffffffffffffff1614610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083f90611cf0565b60405180910390fd5b8060088190555050565b60006012905090565b60006108fd610868610f75565b848460016000610876610f75565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108f89190611e02565b610f7d565b6001905092915050565b60096020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610977610f75565b73ffffffffffffffffffffffffffffffffffffffff166109956109f7565b73ffffffffffffffffffffffffffffffffffffffff16146109eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e290611cf0565b60405180910390fd5b6109f56000611700565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610a3090611f9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5c90611f9f565b8015610aa95780601f10610a7e57610100808354040283529160200191610aa9565b820191906000526020600020905b815481529060010190602001808311610a8c57829003601f168201915b5050505050905090565b610abb610f75565b73ffffffffffffffffffffffffffffffffffffffff16610ad96109f7565b73ffffffffffffffffffffffffffffffffffffffff1614610b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2690611cf0565b60405180910390fd5b8060078190555050565b60008060016000610b48610f75565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfc90611d70565b60405180910390fd5b610c19610c10610f75565b85858403610f7d565b600191505092915050565b6000610c38610c31610f75565b84846112a8565b6001905092915050565b60075481565b6000600854905090565b600080821415610c655760009050610c8e565b6007548242610c749190611ee3565b600654610c819190611e89565b610c8b9190611e58565b90505b919050565b610c9b610f75565b73ffffffffffffffffffffffffffffffffffffffff16610cb96109f7565b73ffffffffffffffffffffffffffffffffffffffff1614610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0690611cf0565b60405180910390fd5b8060068190555050565b60065481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610dae610f75565b73ffffffffffffffffffffffffffffffffffffffff16610dcc6109f7565b73ffffffffffffffffffffffffffffffffffffffff1614610e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1990611cf0565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610e85610f75565b73ffffffffffffffffffffffffffffffffffffffff16610ea36109f7565b73ffffffffffffffffffffffffffffffffffffffff1614610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef090611cf0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6090611c50565b60405180910390fd5b610f7281611700565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490611d50565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561105d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105490611c70565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161113b9190611db0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111af90611d90565b60405180910390fd5b6111c4600083836117c6565b80600260008282546111d69190611e02565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461122b9190611e02565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112909190611db0565b60405180910390a36112a4600083836117cb565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130f90611d30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f90611c10565b60405180910390fd5b6113938383836117c6565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141090611c90565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114ac9190611e02565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115109190611db0565b60405180910390a36115238484846117cb565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159090611d10565b60405180910390fd5b6115a5826000836117c6565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561162b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162290611c30565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546116829190611ee3565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116e79190611db0565b60405180910390a36116fb836000846117cb565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b6000813590506117df8161242b565b92915050565b6000813590506117f481612442565b92915050565b60008135905061180981612459565b92915050565b6000602082840312156118255761182461205e565b5b6000611833848285016117d0565b91505092915050565b600080604083850312156118535761185261205e565b5b6000611861858286016117d0565b9250506020611872858286016117d0565b9150509250929050565b6000806000606084860312156118955761189461205e565b5b60006118a3868287016117d0565b93505060206118b4868287016117d0565b92505060406118c5868287016117fa565b9150509250925092565b600080604083850312156118e6576118e561205e565b5b60006118f4858286016117d0565b9250506020611905858286016117e5565b9150509250929050565b600080604083850312156119265761192561205e565b5b6000611934858286016117d0565b9250506020611945858286016117fa565b9150509250929050565b6000602082840312156119655761196461205e565b5b6000611973848285016117fa565b91505092915050565b61198581611f17565b82525050565b61199481611f29565b82525050565b60006119a582611de6565b6119af8185611df1565b93506119bf818560208601611f6c565b6119c881612063565b840191505092915050565b60006119e0602383611df1565b91506119eb82612074565b604082019050919050565b6000611a03602283611df1565b9150611a0e826120c3565b604082019050919050565b6000611a26602683611df1565b9150611a3182612112565b604082019050919050565b6000611a49602283611df1565b9150611a5482612161565b604082019050919050565b6000611a6c602683611df1565b9150611a77826121b0565b604082019050919050565b6000611a8f602283611df1565b9150611a9a826121ff565b604082019050919050565b6000611ab2602883611df1565b9150611abd8261224e565b604082019050919050565b6000611ad5602083611df1565b9150611ae08261229d565b602082019050919050565b6000611af8602183611df1565b9150611b03826122c6565b604082019050919050565b6000611b1b602583611df1565b9150611b2682612315565b604082019050919050565b6000611b3e602483611df1565b9150611b4982612364565b604082019050919050565b6000611b61602583611df1565b9150611b6c826123b3565b604082019050919050565b6000611b84601f83611df1565b9150611b8f82612402565b602082019050919050565b611ba381611f55565b82525050565b611bb281611f5f565b82525050565b6000602082019050611bcd600083018461197c565b92915050565b6000602082019050611be8600083018461198b565b92915050565b60006020820190508181036000830152611c08818461199a565b905092915050565b60006020820190508181036000830152611c29816119d3565b9050919050565b60006020820190508181036000830152611c49816119f6565b9050919050565b60006020820190508181036000830152611c6981611a19565b9050919050565b60006020820190508181036000830152611c8981611a3c565b9050919050565b60006020820190508181036000830152611ca981611a5f565b9050919050565b60006020820190508181036000830152611cc981611a82565b9050919050565b60006020820190508181036000830152611ce981611aa5565b9050919050565b60006020820190508181036000830152611d0981611ac8565b9050919050565b60006020820190508181036000830152611d2981611aeb565b9050919050565b60006020820190508181036000830152611d4981611b0e565b9050919050565b60006020820190508181036000830152611d6981611b31565b9050919050565b60006020820190508181036000830152611d8981611b54565b9050919050565b60006020820190508181036000830152611da981611b77565b9050919050565b6000602082019050611dc56000830184611b9a565b92915050565b6000602082019050611de06000830184611ba9565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611e0d82611f55565b9150611e1883611f55565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611e4d57611e4c611fd1565b5b828201905092915050565b6000611e6382611f55565b9150611e6e83611f55565b925082611e7e57611e7d612000565b5b828204905092915050565b6000611e9482611f55565b9150611e9f83611f55565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611ed857611ed7611fd1565b5b828202905092915050565b6000611eee82611f55565b9150611ef983611f55565b925082821015611f0c57611f0b611fd1565b5b828203905092915050565b6000611f2282611f35565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611f8a578082015181840152602081019050611f6f565b83811115611f99576000848401525b50505050565b60006002820490506001821680611fb757607f821691505b60208210811415611fcb57611fca61202f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f596f75277265206e6f7420617574686f72697a656420746f2063616c6c20746860008201527f6973000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61243481611f17565b811461243f57600080fd5b50565b61244b81611f29565b811461245657600080fd5b50565b61246281611f55565b811461246d57600080fd5b5056fea2646970667358221220a903a0b3c3d7098af3575f19fb142c82d1551dd52e5f0785785787f7d7492f8d64736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101735760003560e01c80638da5cb5b116100de578063be80ee6811610097578063cd14382111610071578063cd14382114610460578063dd62ed3e1461047e578063ede6aa29146104ae578063f2fde38b146104ca57610173565b8063be80ee68146103f6578063c684e51614610414578063ca192f2e1461044457610173565b80638da5cb5b1461032057806395d89b411461033e578063a02431701461035c578063a457c2d714610378578063a9059cbb146103a8578063a97af06e146103d857610173565b80632e8f7b1f116101305780632e8f7b1f1461024c578063313ce5671461026857806339509351146102865780634ed38faf146102b657806370a08231146102e6578063715018a61461031657610173565b806306fdde0314610178578063095ea7b31461019657806317bbddf7146101c657806318160ddd146101e257806323b872dd146102005780632c22a12a14610230575b600080fd5b6101806104e6565b60405161018d9190611bee565b60405180910390f35b6101b060048036038101906101ab919061190f565b610578565b6040516101bd9190611bd3565b60405180910390f35b6101e060048036038101906101db919061190f565b610596565b005b6101ea610630565b6040516101f79190611db0565b60405180910390f35b61021a6004803603810190610215919061187c565b61063a565b6040516102279190611bd3565b60405180910390f35b61024a6004803603810190610245919061190f565b610732565b005b6102666004803603810190610261919061194f565b6107cc565b005b610270610852565b60405161027d9190611dcb565b60405180910390f35b6102a0600480360381019061029b919061190f565b61085b565b6040516102ad9190611bd3565b60405180910390f35b6102d060048036038101906102cb919061180f565b610907565b6040516102dd9190611bd3565b60405180910390f35b61030060048036038101906102fb919061180f565b610927565b60405161030d9190611db0565b60405180910390f35b61031e61096f565b005b6103286109f7565b6040516103359190611bb8565b60405180910390f35b610346610a21565b6040516103539190611bee565b60405180910390f35b6103766004803603810190610371919061194f565b610ab3565b005b610392600480360381019061038d919061190f565b610b39565b60405161039f9190611bd3565b60405180910390f35b6103c260048036038101906103bd919061190f565b610c24565b6040516103cf9190611bd3565b60405180910390f35b6103e0610c42565b6040516103ed9190611db0565b60405180910390f35b6103fe610c48565b60405161040b9190611db0565b60405180910390f35b61042e6004803603810190610429919061194f565b610c52565b60405161043b9190611db0565b60405180910390f35b61045e6004803603810190610459919061194f565b610c93565b005b610468610d19565b6040516104759190611db0565b60405180910390f35b6104986004803603810190610493919061183c565b610d1f565b6040516104a59190611db0565b60405180910390f35b6104c860048036038101906104c391906118cf565b610da6565b005b6104e460048036038101906104df919061180f565b610e7d565b005b6060600380546104f590611f9f565b80601f016020809104026020016040519081016040528092919081815260200182805461052190611f9f565b801561056e5780601f106105435761010080835404028352916020019161056e565b820191906000526020600020905b81548152906001019060200180831161055157829003601f168201915b5050505050905090565b600061058c610585610f75565b8484610f7d565b6001905092915050565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061990611cb0565b60405180910390fd5b61062c8282611148565b5050565b6000600254905090565b60006106478484846112a8565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610692610f75565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070990611cd0565b60405180910390fd5b6107268561071e610f75565b858403610f7d565b60019150509392505050565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166107be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b590611cb0565b60405180910390fd5b6107c88282611529565b5050565b6107d4610f75565b73ffffffffffffffffffffffffffffffffffffffff166107f26109f7565b73ffffffffffffffffffffffffffffffffffffffff1614610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083f90611cf0565b60405180910390fd5b8060088190555050565b60006012905090565b60006108fd610868610f75565b848460016000610876610f75565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108f89190611e02565b610f7d565b6001905092915050565b60096020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610977610f75565b73ffffffffffffffffffffffffffffffffffffffff166109956109f7565b73ffffffffffffffffffffffffffffffffffffffff16146109eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e290611cf0565b60405180910390fd5b6109f56000611700565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610a3090611f9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5c90611f9f565b8015610aa95780601f10610a7e57610100808354040283529160200191610aa9565b820191906000526020600020905b815481529060010190602001808311610a8c57829003601f168201915b5050505050905090565b610abb610f75565b73ffffffffffffffffffffffffffffffffffffffff16610ad96109f7565b73ffffffffffffffffffffffffffffffffffffffff1614610b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2690611cf0565b60405180910390fd5b8060078190555050565b60008060016000610b48610f75565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfc90611d70565b60405180910390fd5b610c19610c10610f75565b85858403610f7d565b600191505092915050565b6000610c38610c31610f75565b84846112a8565b6001905092915050565b60075481565b6000600854905090565b600080821415610c655760009050610c8e565b6007548242610c749190611ee3565b600654610c819190611e89565b610c8b9190611e58565b90505b919050565b610c9b610f75565b73ffffffffffffffffffffffffffffffffffffffff16610cb96109f7565b73ffffffffffffffffffffffffffffffffffffffff1614610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0690611cf0565b60405180910390fd5b8060068190555050565b60065481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610dae610f75565b73ffffffffffffffffffffffffffffffffffffffff16610dcc6109f7565b73ffffffffffffffffffffffffffffffffffffffff1614610e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1990611cf0565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610e85610f75565b73ffffffffffffffffffffffffffffffffffffffff16610ea36109f7565b73ffffffffffffffffffffffffffffffffffffffff1614610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef090611cf0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6090611c50565b60405180910390fd5b610f7281611700565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490611d50565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561105d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105490611c70565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161113b9190611db0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111af90611d90565b60405180910390fd5b6111c4600083836117c6565b80600260008282546111d69190611e02565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461122b9190611e02565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112909190611db0565b60405180910390a36112a4600083836117cb565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130f90611d30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f90611c10565b60405180910390fd5b6113938383836117c6565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141090611c90565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114ac9190611e02565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115109190611db0565b60405180910390a36115238484846117cb565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159090611d10565b60405180910390fd5b6115a5826000836117c6565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561162b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162290611c30565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546116829190611ee3565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116e79190611db0565b60405180910390a36116fb836000846117cb565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b6000813590506117df8161242b565b92915050565b6000813590506117f481612442565b92915050565b60008135905061180981612459565b92915050565b6000602082840312156118255761182461205e565b5b6000611833848285016117d0565b91505092915050565b600080604083850312156118535761185261205e565b5b6000611861858286016117d0565b9250506020611872858286016117d0565b9150509250929050565b6000806000606084860312156118955761189461205e565b5b60006118a3868287016117d0565b93505060206118b4868287016117d0565b92505060406118c5868287016117fa565b9150509250925092565b600080604083850312156118e6576118e561205e565b5b60006118f4858286016117d0565b9250506020611905858286016117e5565b9150509250929050565b600080604083850312156119265761192561205e565b5b6000611934858286016117d0565b9250506020611945858286016117fa565b9150509250929050565b6000602082840312156119655761196461205e565b5b6000611973848285016117fa565b91505092915050565b61198581611f17565b82525050565b61199481611f29565b82525050565b60006119a582611de6565b6119af8185611df1565b93506119bf818560208601611f6c565b6119c881612063565b840191505092915050565b60006119e0602383611df1565b91506119eb82612074565b604082019050919050565b6000611a03602283611df1565b9150611a0e826120c3565b604082019050919050565b6000611a26602683611df1565b9150611a3182612112565b604082019050919050565b6000611a49602283611df1565b9150611a5482612161565b604082019050919050565b6000611a6c602683611df1565b9150611a77826121b0565b604082019050919050565b6000611a8f602283611df1565b9150611a9a826121ff565b604082019050919050565b6000611ab2602883611df1565b9150611abd8261224e565b604082019050919050565b6000611ad5602083611df1565b9150611ae08261229d565b602082019050919050565b6000611af8602183611df1565b9150611b03826122c6565b604082019050919050565b6000611b1b602583611df1565b9150611b2682612315565b604082019050919050565b6000611b3e602483611df1565b9150611b4982612364565b604082019050919050565b6000611b61602583611df1565b9150611b6c826123b3565b604082019050919050565b6000611b84601f83611df1565b9150611b8f82612402565b602082019050919050565b611ba381611f55565b82525050565b611bb281611f5f565b82525050565b6000602082019050611bcd600083018461197c565b92915050565b6000602082019050611be8600083018461198b565b92915050565b60006020820190508181036000830152611c08818461199a565b905092915050565b60006020820190508181036000830152611c29816119d3565b9050919050565b60006020820190508181036000830152611c49816119f6565b9050919050565b60006020820190508181036000830152611c6981611a19565b9050919050565b60006020820190508181036000830152611c8981611a3c565b9050919050565b60006020820190508181036000830152611ca981611a5f565b9050919050565b60006020820190508181036000830152611cc981611a82565b9050919050565b60006020820190508181036000830152611ce981611aa5565b9050919050565b60006020820190508181036000830152611d0981611ac8565b9050919050565b60006020820190508181036000830152611d2981611aeb565b9050919050565b60006020820190508181036000830152611d4981611b0e565b9050919050565b60006020820190508181036000830152611d6981611b31565b9050919050565b60006020820190508181036000830152611d8981611b54565b9050919050565b60006020820190508181036000830152611da981611b77565b9050919050565b6000602082019050611dc56000830184611b9a565b92915050565b6000602082019050611de06000830184611ba9565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611e0d82611f55565b9150611e1883611f55565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611e4d57611e4c611fd1565b5b828201905092915050565b6000611e6382611f55565b9150611e6e83611f55565b925082611e7e57611e7d612000565b5b828204905092915050565b6000611e9482611f55565b9150611e9f83611f55565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611ed857611ed7611fd1565b5b828202905092915050565b6000611eee82611f55565b9150611ef983611f55565b925082821015611f0c57611f0b611fd1565b5b828203905092915050565b6000611f2282611f35565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611f8a578082015181840152602081019050611f6f565b83811115611f99576000848401525b50505050565b60006002820490506001821680611fb757607f821691505b60208210811415611fcb57611fca61202f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f596f75277265206e6f7420617574686f72697a656420746f2063616c6c20746860008201527f6973000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61243481611f17565b811461243f57600080fd5b50565b61244b81611f29565b811461245657600080fd5b50565b61246281611f55565b811461246d57600080fd5b5056fea2646970667358221220a903a0b3c3d7098af3575f19fb142c82d1551dd52e5f0785785787f7d7492f8d64736f6c63430008070033
Deployed Bytecode Sourcemap
19668:1416:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8275:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10442:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20659:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9395:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11093:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20777:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20895:92;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9237:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11994:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19826:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9566:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2375:94;;;:::i;:::-;;1724:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8494:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20317:88;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12712:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9906:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19751:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20995:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20413:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20212:97;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19709:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10144:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20065:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2624:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8275:100;8329:13;8362:5;8355:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8275:100;:::o;10442:169::-;10525:4;10542:39;10551:12;:10;:12::i;:::-;10565:7;10574:6;10542:8;:39::i;:::-;10599:4;10592:11;;10442:169;;;;:::o;20659:110::-;19922:14;:26;19937:10;19922:26;;;;;;;;;;;;;;;;;;;;;;;;;19914:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;20740:21:::1;20746:6;20754;20740:5;:21::i;:::-;20659:110:::0;;:::o;9395:108::-;9456:7;9483:12;;9476:19;;9395:108;:::o;11093:492::-;11233:4;11250:36;11260:6;11268:9;11279:6;11250:9;:36::i;:::-;11299:24;11326:11;:19;11338:6;11326:19;;;;;;;;;;;;;;;:33;11346:12;:10;:12::i;:::-;11326:33;;;;;;;;;;;;;;;;11299:60;;11398:6;11378:16;:26;;11370:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11485:57;11494:6;11502:12;:10;:12::i;:::-;11535:6;11516:16;:25;11485:8;:57::i;:::-;11573:4;11566:11;;;11093:492;;;;;:::o;20777:110::-;19922:14;:26;19937:10;19922:26;;;;;;;;;;;;;;;;;;;;;;;;;19914:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;20858:21:::1;20864:6;20872;20858:5;:21::i;:::-;20777:110:::0;;:::o;20895:92::-;1955:12;:10;:12::i;:::-;1944:23;;:7;:5;:7::i;:::-;:23;;;1936:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20972:7:::1;20961:8;:18;;;;20895:92:::0;:::o;9237:93::-;9295:5;9320:2;9313:9;;9237:93;:::o;11994:215::-;12082:4;12099:80;12108:12;:10;:12::i;:::-;12122:7;12168:10;12131:11;:25;12143:12;:10;:12::i;:::-;12131:25;;;;;;;;;;;;;;;:34;12157:7;12131:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12099:8;:80::i;:::-;12197:4;12190:11;;11994:215;;;;:::o;19826:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;9566:127::-;9640:7;9667:9;:18;9677:7;9667:18;;;;;;;;;;;;;;;;9660:25;;9566:127;;;:::o;2375:94::-;1955:12;:10;:12::i;:::-;1944:23;;:7;:5;:7::i;:::-;:23;;;1936:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2440:21:::1;2458:1;2440:9;:21::i;:::-;2375:94::o:0;1724:87::-;1770:7;1797:6;;;;;;;;;;;1790:13;;1724:87;:::o;8494:104::-;8550:13;8583:7;8576:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8494:104;:::o;20317:88::-;1955:12;:10;:12::i;:::-;1944:23;;:7;:5;:7::i;:::-;:23;;;1936:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20394:3:::1;20382:9;:15;;;;20317:88:::0;:::o;12712:413::-;12805:4;12822:24;12849:11;:25;12861:12;:10;:12::i;:::-;12849:25;;;;;;;;;;;;;;;:34;12875:7;12849:34;;;;;;;;;;;;;;;;12822:61;;12922:15;12902:16;:35;;12894:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13015:67;13024:12;:10;:12::i;:::-;13038:7;13066:15;13047:16;:34;13015:8;:67::i;:::-;13113:4;13106:11;;;12712:413;;;;:::o;9906:175::-;9992:4;10009:42;10019:12;:10;:12::i;:::-;10033:9;10044:6;10009:9;:42::i;:::-;10069:4;10062:11;;9906:175;;;;:::o;19751:33::-;;;;:::o;20995:86::-;21038:7;21065:8;;21058:15;;20995:86;:::o;20413:238::-;20476:7;20513:1;20500:9;:14;20496:148;;;20538:1;20531:8;;;;20496:148;20623:9;;20610;20592:15;:27;;;;:::i;:::-;20579:9;;:41;;;;:::i;:::-;:53;;;;:::i;:::-;20572:60;;20413:238;;;;:::o;20212:97::-;1955:12;:10;:12::i;:::-;1944:23;;:7;:5;:7::i;:::-;:23;;;1936:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20294:7:::1;20282:9;:19;;;;20212:97:::0;:::o;19709:35::-;;;;:::o;10144:151::-;10233:7;10260:11;:18;10272:5;10260:18;;;;;;;;;;;;;;;:27;10279:7;10260:27;;;;;;;;;;;;;;;;10253:34;;10144:151;;;;:::o;20065:139::-;1955:12;:10;:12::i;:::-;1944:23;;:7;:5;:7::i;:::-;:23;;;1936:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20191:5:::1;20157:14;:31;20172:15;20157:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20065:139:::0;;:::o;2624:192::-;1955:12;:10;:12::i;:::-;1944:23;;:7;:5;:7::i;:::-;:23;;;1936:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2733:1:::1;2713:22;;:8;:22;;;;2705:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2789:19;2799:8;2789:9;:19::i;:::-;2624:192:::0;:::o;600:98::-;653:7;680:10;673:17;;600:98;:::o;16396:380::-;16549:1;16532:19;;:5;:19;;;;16524:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16630:1;16611:21;;:7;:21;;;;16603:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16714:6;16684:11;:18;16696:5;16684:18;;;;;;;;;;;;;;;:27;16703:7;16684:27;;;;;;;;;;;;;;;:36;;;;16752:7;16736:32;;16745:5;16736:32;;;16761:6;16736:32;;;;;;:::i;:::-;;;;;;;;16396:380;;;:::o;14635:399::-;14738:1;14719:21;;:7;:21;;;;14711:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;14789:49;14818:1;14822:7;14831:6;14789:20;:49::i;:::-;14867:6;14851:12;;:22;;;;;;;:::i;:::-;;;;;;;;14906:6;14884:9;:18;14894:7;14884:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;14949:7;14928:37;;14945:1;14928:37;;;14958:6;14928:37;;;;;;:::i;:::-;;;;;;;;14978:48;15006:1;15010:7;15019:6;14978:19;:48::i;:::-;14635:399;;:::o;13615:733::-;13773:1;13755:20;;:6;:20;;;;13747:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13857:1;13836:23;;:9;:23;;;;13828:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13912:47;13933:6;13941:9;13952:6;13912:20;:47::i;:::-;13972:21;13996:9;:17;14006:6;13996:17;;;;;;;;;;;;;;;;13972:41;;14049:6;14032:13;:23;;14024:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14170:6;14154:13;:22;14134:9;:17;14144:6;14134:17;;;;;;;;;;;;;;;:42;;;;14222:6;14198:9;:20;14208:9;14198:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;14263:9;14246:35;;14255:6;14246:35;;;14274:6;14246:35;;;;;;:::i;:::-;;;;;;;;14294:46;14314:6;14322:9;14333:6;14294:19;:46::i;:::-;13736:612;13615:733;;;:::o;15367:591::-;15470:1;15451:21;;:7;:21;;;;15443:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15523:49;15544:7;15561:1;15565:6;15523:20;:49::i;:::-;15585:22;15610:9;:18;15620:7;15610:18;;;;;;;;;;;;;;;;15585:43;;15665:6;15647:14;:24;;15639:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15784:6;15767:14;:23;15746:9;:18;15756:7;15746:18;;;;;;;;;;;;;;;:44;;;;15828:6;15812:12;;:22;;;;;;;:::i;:::-;;;;;;;;15878:1;15852:37;;15861:7;15852:37;;;15882:6;15852:37;;;;;;:::i;:::-;;;;;;;;15902:48;15922:7;15939:1;15943:6;15902:19;:48::i;:::-;15432:526;15367:591;;:::o;2824:173::-;2880:16;2899:6;;;;;;;;;;;2880:25;;2925:8;2916:6;;:17;;;;;;;;;;;;;;;;;;2980:8;2949:40;;2970:8;2949:40;;;;;;;;;;;;2869:128;2824:173;:::o;17376:125::-;;;;:::o;18105:124::-;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:133::-;195:5;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;152:133;;;;:::o;291:139::-;337:5;375:6;362:20;353:29;;391:33;418:5;391:33;:::i;:::-;291:139;;;;:::o;436:329::-;495:6;544:2;532:9;523:7;519:23;515:32;512:119;;;550:79;;:::i;:::-;512:119;670:1;695:53;740:7;731:6;720:9;716:22;695:53;:::i;:::-;685:63;;641:117;436:329;;;;:::o;771:474::-;839:6;847;896:2;884:9;875:7;871:23;867:32;864:119;;;902:79;;:::i;:::-;864:119;1022:1;1047:53;1092:7;1083:6;1072:9;1068:22;1047:53;:::i;:::-;1037:63;;993:117;1149:2;1175:53;1220:7;1211:6;1200:9;1196:22;1175:53;:::i;:::-;1165:63;;1120:118;771:474;;;;;:::o;1251:619::-;1328:6;1336;1344;1393:2;1381:9;1372:7;1368:23;1364:32;1361:119;;;1399:79;;:::i;:::-;1361:119;1519:1;1544:53;1589:7;1580:6;1569:9;1565:22;1544:53;:::i;:::-;1534:63;;1490:117;1646:2;1672:53;1717:7;1708:6;1697:9;1693:22;1672:53;:::i;:::-;1662:63;;1617:118;1774:2;1800:53;1845:7;1836:6;1825:9;1821:22;1800:53;:::i;:::-;1790:63;;1745:118;1251:619;;;;;:::o;1876:468::-;1941:6;1949;1998:2;1986:9;1977:7;1973:23;1969:32;1966:119;;;2004:79;;:::i;:::-;1966:119;2124:1;2149:53;2194:7;2185:6;2174:9;2170:22;2149:53;:::i;:::-;2139:63;;2095:117;2251:2;2277:50;2319:7;2310:6;2299:9;2295:22;2277:50;:::i;:::-;2267:60;;2222:115;1876:468;;;;;:::o;2350:474::-;2418:6;2426;2475:2;2463:9;2454:7;2450:23;2446:32;2443:119;;;2481:79;;:::i;:::-;2443:119;2601:1;2626:53;2671:7;2662:6;2651:9;2647:22;2626:53;:::i;:::-;2616:63;;2572:117;2728:2;2754:53;2799:7;2790:6;2779:9;2775:22;2754:53;:::i;:::-;2744:63;;2699:118;2350:474;;;;;:::o;2830:329::-;2889:6;2938:2;2926:9;2917:7;2913:23;2909:32;2906:119;;;2944:79;;:::i;:::-;2906:119;3064:1;3089:53;3134:7;3125:6;3114:9;3110:22;3089:53;:::i;:::-;3079:63;;3035:117;2830:329;;;;:::o;3165:118::-;3252:24;3270:5;3252:24;:::i;:::-;3247:3;3240:37;3165:118;;:::o;3289:109::-;3370:21;3385:5;3370:21;:::i;:::-;3365:3;3358:34;3289:109;;:::o;3404:364::-;3492:3;3520:39;3553:5;3520:39;:::i;:::-;3575:71;3639:6;3634:3;3575:71;:::i;:::-;3568:78;;3655:52;3700:6;3695:3;3688:4;3681:5;3677:16;3655:52;:::i;:::-;3732:29;3754:6;3732:29;:::i;:::-;3727:3;3723:39;3716:46;;3496:272;3404:364;;;;:::o;3774:366::-;3916:3;3937:67;4001:2;3996:3;3937:67;:::i;:::-;3930:74;;4013:93;4102:3;4013:93;:::i;:::-;4131:2;4126:3;4122:12;4115:19;;3774:366;;;:::o;4146:::-;4288:3;4309:67;4373:2;4368:3;4309:67;:::i;:::-;4302:74;;4385:93;4474:3;4385:93;:::i;:::-;4503:2;4498:3;4494:12;4487:19;;4146:366;;;:::o;4518:::-;4660:3;4681:67;4745:2;4740:3;4681:67;:::i;:::-;4674:74;;4757:93;4846:3;4757:93;:::i;:::-;4875:2;4870:3;4866:12;4859:19;;4518:366;;;:::o;4890:::-;5032:3;5053:67;5117:2;5112:3;5053:67;:::i;:::-;5046:74;;5129:93;5218:3;5129:93;:::i;:::-;5247:2;5242:3;5238:12;5231:19;;4890:366;;;:::o;5262:::-;5404:3;5425:67;5489:2;5484:3;5425:67;:::i;:::-;5418:74;;5501:93;5590:3;5501:93;:::i;:::-;5619:2;5614:3;5610:12;5603:19;;5262:366;;;:::o;5634:::-;5776:3;5797:67;5861:2;5856:3;5797:67;:::i;:::-;5790:74;;5873:93;5962:3;5873:93;:::i;:::-;5991:2;5986:3;5982:12;5975:19;;5634:366;;;:::o;6006:::-;6148:3;6169:67;6233:2;6228:3;6169:67;:::i;:::-;6162:74;;6245:93;6334:3;6245:93;:::i;:::-;6363:2;6358:3;6354:12;6347:19;;6006:366;;;:::o;6378:::-;6520:3;6541:67;6605:2;6600:3;6541:67;:::i;:::-;6534:74;;6617:93;6706:3;6617:93;:::i;:::-;6735:2;6730:3;6726:12;6719:19;;6378:366;;;:::o;6750:::-;6892:3;6913:67;6977:2;6972:3;6913:67;:::i;:::-;6906:74;;6989:93;7078:3;6989:93;:::i;:::-;7107:2;7102:3;7098:12;7091:19;;6750:366;;;:::o;7122:::-;7264:3;7285:67;7349:2;7344:3;7285:67;:::i;:::-;7278:74;;7361:93;7450:3;7361:93;:::i;:::-;7479:2;7474:3;7470:12;7463:19;;7122:366;;;:::o;7494:::-;7636:3;7657:67;7721:2;7716:3;7657:67;:::i;:::-;7650:74;;7733:93;7822:3;7733:93;:::i;:::-;7851:2;7846:3;7842:12;7835:19;;7494:366;;;:::o;7866:::-;8008:3;8029:67;8093:2;8088:3;8029:67;:::i;:::-;8022:74;;8105:93;8194:3;8105:93;:::i;:::-;8223:2;8218:3;8214:12;8207:19;;7866:366;;;:::o;8238:::-;8380:3;8401:67;8465:2;8460:3;8401:67;:::i;:::-;8394:74;;8477:93;8566:3;8477:93;:::i;:::-;8595:2;8590:3;8586:12;8579:19;;8238:366;;;:::o;8610:118::-;8697:24;8715:5;8697:24;:::i;:::-;8692:3;8685:37;8610:118;;:::o;8734:112::-;8817:22;8833:5;8817:22;:::i;:::-;8812:3;8805:35;8734:112;;:::o;8852:222::-;8945:4;8983:2;8972:9;8968:18;8960:26;;8996:71;9064:1;9053:9;9049:17;9040:6;8996:71;:::i;:::-;8852:222;;;;:::o;9080:210::-;9167:4;9205:2;9194:9;9190:18;9182:26;;9218:65;9280:1;9269:9;9265:17;9256:6;9218:65;:::i;:::-;9080:210;;;;:::o;9296:313::-;9409:4;9447:2;9436:9;9432:18;9424:26;;9496:9;9490:4;9486:20;9482:1;9471:9;9467:17;9460:47;9524:78;9597:4;9588:6;9524:78;:::i;:::-;9516:86;;9296:313;;;;:::o;9615:419::-;9781:4;9819:2;9808:9;9804:18;9796:26;;9868:9;9862:4;9858:20;9854:1;9843:9;9839:17;9832:47;9896:131;10022:4;9896:131;:::i;:::-;9888:139;;9615:419;;;:::o;10040:::-;10206:4;10244:2;10233:9;10229:18;10221:26;;10293:9;10287:4;10283:20;10279:1;10268:9;10264:17;10257:47;10321:131;10447:4;10321:131;:::i;:::-;10313:139;;10040:419;;;:::o;10465:::-;10631:4;10669:2;10658:9;10654:18;10646:26;;10718:9;10712:4;10708:20;10704:1;10693:9;10689:17;10682:47;10746:131;10872:4;10746:131;:::i;:::-;10738:139;;10465:419;;;:::o;10890:::-;11056:4;11094:2;11083:9;11079:18;11071:26;;11143:9;11137:4;11133:20;11129:1;11118:9;11114:17;11107:47;11171:131;11297:4;11171:131;:::i;:::-;11163:139;;10890:419;;;:::o;11315:::-;11481:4;11519:2;11508:9;11504:18;11496:26;;11568:9;11562:4;11558:20;11554:1;11543:9;11539:17;11532:47;11596:131;11722:4;11596:131;:::i;:::-;11588:139;;11315:419;;;:::o;11740:::-;11906:4;11944:2;11933:9;11929:18;11921:26;;11993:9;11987:4;11983:20;11979:1;11968:9;11964:17;11957:47;12021:131;12147:4;12021:131;:::i;:::-;12013:139;;11740:419;;;:::o;12165:::-;12331:4;12369:2;12358:9;12354:18;12346:26;;12418:9;12412:4;12408:20;12404:1;12393:9;12389:17;12382:47;12446:131;12572:4;12446:131;:::i;:::-;12438:139;;12165:419;;;:::o;12590:::-;12756:4;12794:2;12783:9;12779:18;12771:26;;12843:9;12837:4;12833:20;12829:1;12818:9;12814:17;12807:47;12871:131;12997:4;12871:131;:::i;:::-;12863:139;;12590:419;;;:::o;13015:::-;13181:4;13219:2;13208:9;13204:18;13196:26;;13268:9;13262:4;13258:20;13254:1;13243:9;13239:17;13232:47;13296:131;13422:4;13296:131;:::i;:::-;13288:139;;13015:419;;;:::o;13440:::-;13606:4;13644:2;13633:9;13629:18;13621:26;;13693:9;13687:4;13683:20;13679:1;13668:9;13664:17;13657:47;13721:131;13847:4;13721:131;:::i;:::-;13713:139;;13440:419;;;:::o;13865:::-;14031:4;14069:2;14058:9;14054:18;14046:26;;14118:9;14112:4;14108:20;14104:1;14093:9;14089:17;14082:47;14146:131;14272:4;14146:131;:::i;:::-;14138:139;;13865:419;;;:::o;14290:::-;14456:4;14494:2;14483:9;14479:18;14471:26;;14543:9;14537:4;14533:20;14529:1;14518:9;14514:17;14507:47;14571:131;14697:4;14571:131;:::i;:::-;14563:139;;14290:419;;;:::o;14715:::-;14881:4;14919:2;14908:9;14904:18;14896:26;;14968:9;14962:4;14958:20;14954:1;14943:9;14939:17;14932:47;14996:131;15122:4;14996:131;:::i;:::-;14988:139;;14715:419;;;:::o;15140:222::-;15233:4;15271:2;15260:9;15256:18;15248:26;;15284:71;15352:1;15341:9;15337:17;15328:6;15284:71;:::i;:::-;15140:222;;;;:::o;15368:214::-;15457:4;15495:2;15484:9;15480:18;15472:26;;15508:67;15572:1;15561:9;15557:17;15548:6;15508:67;:::i;:::-;15368:214;;;;:::o;15669:99::-;15721:6;15755:5;15749:12;15739:22;;15669:99;;;:::o;15774:169::-;15858:11;15892:6;15887:3;15880:19;15932:4;15927:3;15923:14;15908:29;;15774:169;;;;:::o;15949:305::-;15989:3;16008:20;16026:1;16008:20;:::i;:::-;16003:25;;16042:20;16060:1;16042:20;:::i;:::-;16037:25;;16196:1;16128:66;16124:74;16121:1;16118:81;16115:107;;;16202:18;;:::i;:::-;16115:107;16246:1;16243;16239:9;16232:16;;15949:305;;;;:::o;16260:185::-;16300:1;16317:20;16335:1;16317:20;:::i;:::-;16312:25;;16351:20;16369:1;16351:20;:::i;:::-;16346:25;;16390:1;16380:35;;16395:18;;:::i;:::-;16380:35;16437:1;16434;16430:9;16425:14;;16260:185;;;;:::o;16451:348::-;16491:7;16514:20;16532:1;16514:20;:::i;:::-;16509:25;;16548:20;16566:1;16548:20;:::i;:::-;16543:25;;16736:1;16668:66;16664:74;16661:1;16658:81;16653:1;16646:9;16639:17;16635:105;16632:131;;;16743:18;;:::i;:::-;16632:131;16791:1;16788;16784:9;16773:20;;16451:348;;;;:::o;16805:191::-;16845:4;16865:20;16883:1;16865:20;:::i;:::-;16860:25;;16899:20;16917:1;16899:20;:::i;:::-;16894:25;;16938:1;16935;16932:8;16929:34;;;16943:18;;:::i;:::-;16929:34;16988:1;16985;16981:9;16973:17;;16805:191;;;;:::o;17002:96::-;17039:7;17068:24;17086:5;17068:24;:::i;:::-;17057:35;;17002:96;;;:::o;17104:90::-;17138:7;17181:5;17174:13;17167:21;17156:32;;17104:90;;;:::o;17200:126::-;17237:7;17277:42;17270:5;17266:54;17255:65;;17200:126;;;:::o;17332:77::-;17369:7;17398:5;17387:16;;17332:77;;;:::o;17415:86::-;17450:7;17490:4;17483:5;17479:16;17468:27;;17415:86;;;:::o;17507:307::-;17575:1;17585:113;17599:6;17596:1;17593:13;17585:113;;;17684:1;17679:3;17675:11;17669:18;17665:1;17660:3;17656:11;17649:39;17621:2;17618:1;17614:10;17609:15;;17585:113;;;17716:6;17713:1;17710:13;17707:101;;;17796:1;17787:6;17782:3;17778:16;17771:27;17707:101;17556:258;17507:307;;;:::o;17820:320::-;17864:6;17901:1;17895:4;17891:12;17881:22;;17948:1;17942:4;17938:12;17969:18;17959:81;;18025:4;18017:6;18013:17;18003:27;;17959:81;18087:2;18079:6;18076:14;18056:18;18053:38;18050:84;;;18106:18;;:::i;:::-;18050:84;17871:269;17820:320;;;:::o;18146:180::-;18194:77;18191:1;18184:88;18291:4;18288:1;18281:15;18315:4;18312:1;18305:15;18332:180;18380:77;18377:1;18370:88;18477:4;18474:1;18467:15;18501:4;18498:1;18491:15;18518:180;18566:77;18563:1;18556:88;18663:4;18660:1;18653:15;18687:4;18684:1;18677:15;18827:117;18936:1;18933;18926:12;18950:102;18991:6;19042:2;19038:7;19033:2;19026:5;19022:14;19018:28;19008:38;;18950:102;;;:::o;19058:222::-;19198:34;19194:1;19186:6;19182:14;19175:58;19267:5;19262:2;19254:6;19250:15;19243:30;19058:222;:::o;19286:221::-;19426:34;19422:1;19414:6;19410:14;19403:58;19495:4;19490:2;19482:6;19478:15;19471:29;19286:221;:::o;19513:225::-;19653:34;19649:1;19641:6;19637:14;19630:58;19722:8;19717:2;19709:6;19705:15;19698:33;19513:225;:::o;19744:221::-;19884:34;19880:1;19872:6;19868:14;19861:58;19953:4;19948:2;19940:6;19936:15;19929:29;19744:221;:::o;19971:225::-;20111:34;20107:1;20099:6;20095:14;20088:58;20180:8;20175:2;20167:6;20163:15;20156:33;19971:225;:::o;20202:221::-;20342:34;20338:1;20330:6;20326:14;20319:58;20411:4;20406:2;20398:6;20394:15;20387:29;20202:221;:::o;20429:227::-;20569:34;20565:1;20557:6;20553:14;20546:58;20638:10;20633:2;20625:6;20621:15;20614:35;20429:227;:::o;20662:182::-;20802:34;20798:1;20790:6;20786:14;20779:58;20662:182;:::o;20850:220::-;20990:34;20986:1;20978:6;20974:14;20967:58;21059:3;21054:2;21046:6;21042:15;21035:28;20850:220;:::o;21076:224::-;21216:34;21212:1;21204:6;21200:14;21193:58;21285:7;21280:2;21272:6;21268:15;21261:32;21076:224;:::o;21306:223::-;21446:34;21442:1;21434:6;21430:14;21423:58;21515:6;21510:2;21502:6;21498:15;21491:31;21306:223;:::o;21535:224::-;21675:34;21671:1;21663:6;21659:14;21652:58;21744:7;21739:2;21731:6;21727:15;21720:32;21535:224;:::o;21765:181::-;21905:33;21901:1;21893:6;21889:14;21882:57;21765:181;:::o;21952:122::-;22025:24;22043:5;22025:24;:::i;:::-;22018:5;22015:35;22005:63;;22064:1;22061;22054:12;22005:63;21952:122;:::o;22080:116::-;22150:21;22165:5;22150:21;:::i;:::-;22143:5;22140:32;22130:60;;22186:1;22183;22176:12;22130:60;22080:116;:::o;22202:122::-;22275:24;22293:5;22275:24;:::i;:::-;22268:5;22265:35;22255:63;;22314:1;22311;22304:12;22255:63;22202:122;:::o
Swarm Source
ipfs://a903a0b3c3d7098af3575f19fb142c82d1551dd52e5f0785785787f7d7492f8d
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.