ERC-20
Prediction Market
Overview
Max Total Supply
7,016,919,091 HTN
Holders
629 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
109,547.848693877313244901 HTNValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
HTN_TOKEN
Compiler Version
v0.5.2+commit.1df8f40c
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-05-10 */ pragma solidity >=0.4.22 <0.6.0; /** * HEART NUMBER 2019 */ interface IERC20 { function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @title SafeMath * @dev Unsigned math operations with safety checks that revert on error. */ library SafeMath { /** * @dev Multiplies two unsigned integers, reverts on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } /** * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } /** * @dev Adds two unsigned integers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } /** * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address payable private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor () internal { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } /** * @return the address of the owner. */ function owner() public view returns (address payable) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(),"Invalid owner"); _; } /** * @return true if `msg.sender` is the owner of the contract. */ function isOwner() public view returns (bool) { return msg.sender == _owner; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address payable newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function _transferOwnership(address payable newOwner) internal { require(newOwner != address(0)); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } /** * @title ERC20Detailed token * @dev The decimals are only for visualization purposes. * All the operations are done using the smallest and indivisible token unit, * just as on Ethereum all the operations are done in wei. */ contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 public _decimals; constructor (string memory name, string memory symbol, uint8 decimals) public { _name = name; _symbol = symbol; _decimals = decimals; } /** * @return the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @return the symbol of the token. */ function symbol() public view returns (string memory) { return _symbol; } /** * @return the number of decimals of the token. */ function decimals() public view returns (uint8) { return _decimals; } } /** * @title Standard ERC20 token * * @dev Implementation of the basic standard token. * https://eips.ethereum.org/EIPS/eip-20 * Originally based on code by FirstBlood: * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol * * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for * all accounts just by listening to said events. Note that this isn't required by the specification, and other * compliant implementations may not do it. */ contract ERC20 is IERC20 { using SafeMath for uint256; mapping (address => uint256) public _balances; mapping (address => mapping (address => uint256)) private _allowed; mapping (address => bool) public frozenAccount; uint256 private _totalSupply; /** * @dev Total number of tokens in existence. */ function totalSupply() public view returns (uint256) { return _totalSupply; } /** * @dev Gets the balance of the specified address. * @param owner The address to query the balance of. * @return A uint256 representing the amount owned by the passed address. */ function balanceOf(address owner) public view returns (uint256) { return _balances[owner]; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param owner address The address which owns the funds. * @param spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address owner, address spender) public view returns (uint256) { return _allowed[owner][spender]; } /** * @dev Transfer token to a specified address. * @param to The address to transfer to. * @param value The amount to be transferred. */ function transfer(address to, uint256 value) public returns (bool) { _transfer(msg.sender, to, value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * 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 * @param spender The address which will spend the funds. * @param value The amount of tokens to be spent. */ function approve(address spender, uint256 value) public returns (bool) { _approve(msg.sender, spender, value); return true; } /** * @dev Transfer tokens from one address to another. * Note that while this function emits an Approval event, this is not required as per the specification, * and other compliant implementations may not emit the event. * @param from address The address which you want to send tokens from * @param to address The address which you want to transfer to * @param value uint256 the amount of tokens to be transferred */ function transferFrom(address from, address to, uint256 value) public returns (bool) { _transfer(from, to, value); _approve(from, msg.sender, _allowed[from][msg.sender].sub(value)); return true; } /** * @dev Transfer token for a specified addresses. * @param from The address to transfer from. * @param to The address to transfer to. * @param value The amount to be transferred. */ function _transfer(address from, address to, uint256 value) internal { require(to != address(0),"Check recipient is owner"); // Check if sender is frozen require(!frozenAccount[from],"Check if sender is frozen"); // Check if recipient is frozen require(!frozenAccount[to],"Check if recipient is frozen"); _balances[from] = _balances[from].sub(value); _balances[to] = _balances[to].add(value); emit Transfer(from, to, value); } /** * @dev Internal function that mints an amount of the token and assigns it to * an account. This encapsulates the modification of balances such that the * proper events are emitted. * @param account The account that will receive the created tokens. * @param value The amount that will be created. */ function _mint(address account, uint256 value) internal { require(account != address(0),"Check recipient is '0x0'"); _totalSupply = _totalSupply.add(value); _balances[account] = _balances[account].add(value); emit Transfer(address(0), account, value); } /** * @dev Internal function that burns an amount of the token of a given * account. * @param account The account whose tokens will be burnt. * @param value The amount that will be burnt. */ function _burn(address account, uint256 value) internal { require(account != address(0),"Check recipient is owner"); _totalSupply = _totalSupply.sub(value); _balances[account] = _balances[account].sub(value); emit Transfer(account, address(0), value); } /** * @dev Approve an address to spend another addresses' tokens. * @param owner The address that owns the tokens. * @param spender The address that will spend the tokens. * @param value The number of tokens that can be spent. */ function _approve(address owner, address spender, uint256 value) internal { require(spender != address(0)); require(owner != address(0)); _allowed[owner][spender] = value; emit Approval(owner, spender, value); } } /** * @title Roles * @dev Library for managing addresses assigned to a Role. */ library Roles { struct Role { mapping (address => bool) bearer; } /** * @dev Give an account access to this role. */ function add(Role storage role, address account) internal { require(account != address(0)); require(!has(role, account)); role.bearer[account] = true; } /** * @dev Remove an account's access to this role. */ function remove(Role storage role, address account) internal { require(account != address(0)); require(has(role, account)); role.bearer[account] = false; } /** * @dev Check if an account has this role. * @return bool */ function has(Role storage role, address account) internal view returns (bool) { require(account != address(0)); return role.bearer[account]; } } contract MinterRole is Ownable { using Roles for Roles.Role; event MinterAdded(address indexed account); event MinterRemoved(address indexed account); Roles.Role private _minters; constructor () internal { _addMinter(msg.sender); } function isMinter(address account) public view returns (bool) { return _minters.has(account); } function _addMinter(address account) internal { _minters.add(account); emit MinterAdded(account); } function _removeMinter(address account) internal { _minters.remove(account); emit MinterRemoved(account); } } /** * @title ERC20Mintable * @dev ERC20 minting logic. */ contract ERC20Mintable is ERC20, Ownable { /** * @dev Function to mint tokens * @param to The address that will receive the minted tokens. * @param value The amount of tokens to mint. * @return A boolean that indicates if the operation was successful. */ function mint(address to, uint256 value) public onlyOwner returns (bool) { _mint(to, value); return true; } } /** * @title Burnable Token * @dev Token that can be irreversibly burned (destroyed). */ contract ERC20Burnable is ERC20,Ownable{ /** * @dev Burns a specific amount of tokens. * @param value The amount of token to be burned. */ function burn(uint256 value) onlyOwner public { _burn(msg.sender, value); } } contract PauserRole is Ownable { using Roles for Roles.Role; event PauserAdded(address indexed account); event PauserRemoved(address indexed account); Roles.Role private _pausers; constructor () internal { _addPauser(msg.sender); } modifier onlyPauser() { require(isPauser(msg.sender)); _; } function isPauser(address account) public view returns (bool) { return _pausers.has(account); } function _addPauser(address account) internal { _pausers.add(account); emit PauserAdded(account); } function _removePauser(address account) internal { _pausers.remove(account); emit PauserRemoved(account); } } /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. */ contract Pausable is PauserRole { event Paused(address account); event Unpaused(address account); bool private _paused; constructor () internal { _paused = false; } // modifier onlyPauser() { // require(isPauser(msg.sender)); // _; // } /** * @return True if the contract is paused, false otherwise. */ function paused() public view returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!_paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(_paused); _; } /** * @dev Called by a pauser to pause, triggers stopped state. */ function pause() public onlyOwner whenNotPaused { _paused = true; emit Paused(msg.sender); } /** * @dev Called by a pauser to unpause, returns to normal state. */ function unpause() public onlyOwner whenPaused { _paused = false; emit Unpaused(msg.sender); } } /** * @title Pausable token * @dev ERC20 modified with pausable transfers. */ contract ERC20Pausable is ERC20, Pausable { function transfer(address to, uint256 value) public whenNotPaused returns (bool) { return super.transfer(to, value); } function transferFrom(address from, address to, uint256 value) public whenNotPaused returns (bool) { return super.transferFrom(from, to, value); } function approve(address spender, uint256 value) public whenNotPaused returns (bool) { return super.approve(spender, value); } } /** * @title Heart Number Token * @dev Very simple ERC20 Token example, where all tokens are pre-assigned to the creator. * Note they can later distribute these tokens as they wish using `transfer` and other * `ERC20` functions. */ contract HTN_TOKEN is ERC20, ERC20Detailed, ERC20Burnable, ERC20Mintable, ERC20Pausable { string private constant NAME = "Heart Number"; string private constant SYMBOL = "HTN"; uint8 private constant DECIMALS = 18; /** * The price of tokenBuy. */ uint256 public TokenPerETHBuy = 100000; /** * The price of tokenSell. */ uint256 public TokenPerETHSell = 100000; /** * Sell token is enabled */ bool public SellTokenAllowed; /** * Buy token is enabled */ bool public BuyTokenAllowed; /** * This notifies clients about the new Buy price. */ event BuyRateChanged(uint256 oldValue, uint256 newValue); /** * This notifies clients about the new Sell price. */ event SellRateChanged(uint256 oldValue, uint256 newValue); /** * This notifies clients about the Buy Token. */ event BuyToken(address user, uint256 eth, uint256 token); /** * This notifies clients about the Sell Token. */ event SellToken(address user, uint256 eth, uint256 token); /** * This notifies clients about frozen accounts. */ event FrozenFunds(address target, bool frozen); /** * This notifies sell token status. */ event SellTokenAllowedEvent(bool isAllowed); /** * This notifies buy token status. */ event BuyTokenAllowedEvent(bool isAllowed); uint256 public constant INITIAL_SUPPLY = 10000000000 *(10 ** uint256(DECIMALS)); /** * Constructor that gives msg.sender all of existing tokens. */ constructor () public ERC20Detailed(NAME, SYMBOL, DECIMALS) { _mint(msg.sender, INITIAL_SUPPLY); SellTokenAllowed = false; BuyTokenAllowed = true; } /** * Freeze Account */ function freezeAccount(address target, bool freeze) onlyOwner public { frozenAccount[target] = freeze; emit FrozenFunds(target, freeze); } /** * Set price function for Buy */ function setBuyRate(uint256 value) onlyOwner public { require(value > 0); emit BuyRateChanged(TokenPerETHBuy, value); TokenPerETHBuy = value; } /** * Set price function for Sell */ function setSellRate(uint256 value) onlyOwner public { require(value > 0); emit SellRateChanged(TokenPerETHSell, value); TokenPerETHSell = value; } /** * Function for Buy Token */ function buy() payable public returns (uint amount){ require(msg.value > 0 , "Ivalid Ether amount"); require(!frozenAccount[msg.sender], "Accout is frozen"); require(BuyTokenAllowed, "Buy Token is not allowed"); amount = ((msg.value.mul(TokenPerETHBuy)).mul( 10 ** uint256(decimals()))).div(1 ether); _balances[address(this)] = _balances[address(this)].sub(amount); _balances[msg.sender] = _balances[msg.sender].add(amount) ; emit Transfer(address(this),msg.sender ,amount); return amount; } /** * function for Sell Token */ function sell(uint amount) public returns (uint revenue){ require(_balances[msg.sender] >= amount,"Checks if the sender has enough to sell"); require(!frozenAccount[msg.sender],"Check if sender is frozen"); require(SellTokenAllowed); _balances[address(this)] = _balances[address(this)].add(amount); _balances[msg.sender] = _balances[msg.sender].sub(amount); revenue = (amount.mul(1 ether)).div(TokenPerETHSell.mul(10 ** uint256(decimals()))) ; msg.sender.transfer(revenue); emit Transfer(msg.sender, address(this), amount); return revenue; } /** * Enable Sell Token */ function enableSellToken() onlyOwner public { SellTokenAllowed = true; emit SellTokenAllowedEvent (true); } /** * Disable Sell Token */ function disableSellToken() onlyOwner public { SellTokenAllowed = false; emit SellTokenAllowedEvent (false); } /** * Enable Buy Token */ function enableBuyToken() onlyOwner public { BuyTokenAllowed = true; emit BuyTokenAllowedEvent (true); } /** * Disable Buy Token */ function disableBuyToken() onlyOwner public { BuyTokenAllowed = false; emit BuyTokenAllowedEvent (false); } /** * Withdraw for Ether */ function withdraw(uint withdrawAmount) onlyOwner public { require(withdrawAmount <= address(this).balance); owner().transfer(withdrawAmount); } /** * Withdraw for Token */ function withdrawToken(uint tokenAmount) onlyOwner public { require(tokenAmount <= _balances[address(this)]); _transfer(address(this),owner(),tokenAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"BuyTokenAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TokenPerETHSell","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"SellTokenAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"withdrawAmount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isPauser","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"disableSellToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenAmount","type":"uint256"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TokenPerETHBuy","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enableSellToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"_balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"disableBuyToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"setBuyRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"setSellRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enableBuyToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[{"name":"amount","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"frozenAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"sell","outputs":[{"name":"revenue","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldValue","type":"uint256"},{"indexed":false,"name":"newValue","type":"uint256"}],"name":"BuyRateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldValue","type":"uint256"},{"indexed":false,"name":"newValue","type":"uint256"}],"name":"SellRateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"eth","type":"uint256"},{"indexed":false,"name":"token","type":"uint256"}],"name":"BuyToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"eth","type":"uint256"},{"indexed":false,"name":"token","type":"uint256"}],"name":"SellToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"frozen","type":"bool"}],"name":"FrozenFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"isAllowed","type":"bool"}],"name":"SellTokenAllowedEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"isAllowed","type":"bool"}],"name":"BuyTokenAllowedEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"PauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"PauserRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
6080604052620186a0600955620186a0600a553480156200001f57600080fd5b506040805190810160405280600c81526020017f4865617274204e756d62657200000000000000000000000000000000000000008152506040805190810160405280600381526020017f48544e000000000000000000000000000000000000000000000000000000000081525060128260049080519060200190620000a6929190620005f8565b508160059080519060200190620000bf929190620005f8565b5080600660006101000a81548160ff021916908360ff16021790555050505033600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3620001b63362000236640100000000026401000000009004565b6000600860006101000a81548160ff021916908315150217905550620001fa33601260ff16600a0a6402540be40002620002a0640100000000026401000000009004565b6000600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550620006a7565b6200025a8160076200047e6401000000000262002f3c179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151562000346576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f436865636b20726563697069656e74206973202730783027000000000000000081525060200191505060405180910390fd5b6200036b81600354620005416401000000000262002ca5179091906401000000009004565b600381905550620003d2816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620005416401000000000262002ca5179091906401000000009004565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515620004bb57600080fd5b620004d6828262000563640100000000026401000000009004565b151515620004e357600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008082840190508381101515156200055957600080fd5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515620005a157600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200063b57805160ff19168380011785556200066c565b828001600101855582156200066c579182015b828111156200066b5782518255916020019190600101906200064e565b5b5090506200067b91906200067f565b5090565b620006a491905b80821115620006a057600081600090555060010162000686565b5090565b90565b61303f80620006b76000396000f3fe608060405260043610610237576000357c0100000000000000000000000000000000000000000000000000000000900480635c975abb116101405780638f32d59b116100c8578063b414d4b61161008c578063b414d4b614610a6b578063dd62ed3e14610ad4578063e4849b3214610b59578063e724529c14610ba8578063f2fde38b14610c0557610237565b80638f32d59b1461090457806394357c6b1461093357806395d89b411461094a578063a6f2ae3a146109da578063a9059cbb146109f857610237565b80637794de551161010f5780637794de55146108095780638456cb591461082057806385e436bf146108375780638da5cb5b146108725780638e0b017d146108c957610237565b80635c975abb146106f95780636aa737e0146107285780636ebcf6071461073f57806370a08231146107a457610237565b8063313ce567116101c357806342966c681161019257806342966c68146105d857806346fbf68e146106135780634b0d54171461067c57806350baa62214610693578063534f36c5146106ce57610237565b8063313ce567146104ec57806332424aa31461051d5780633f4ba83a1461054e57806340c10f191461056557610237565b80631d0b482f1161020a5780631d0b482f1461039957806323b872dd146103c457806328b93702146104575780632e1a7d4d146104865780632ff2e9dc146104c157610237565b806306fdde031461023c578063095ea7b3146102cc5780630f7ca5771461033f57806318160ddd1461036e575b600080fd5b34801561024857600080fd5b50610251610c56565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610291578082015181840152602081019050610276565b50505050905090810190601f1680156102be5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d857600080fd5b50610325600480360360408110156102ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cf8565b604051808215151515815260200191505060405180910390f35b34801561034b57600080fd5b50610354610d28565b604051808215151515815260200191505060405180910390f35b34801561037a57600080fd5b50610383610d3b565b6040518082815260200191505060405180910390f35b3480156103a557600080fd5b506103ae610d45565b6040518082815260200191505060405180910390f35b3480156103d057600080fd5b5061043d600480360360608110156103e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d4b565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b5061046c610d7d565b604051808215151515815260200191505060405180910390f35b34801561049257600080fd5b506104bf600480360360208110156104a957600080fd5b8101908080359060200190929190505050610d90565b005b3480156104cd57600080fd5b506104d6610e83565b6040518082815260200191505060405180910390f35b3480156104f857600080fd5b50610501610e95565b604051808260ff1660ff16815260200191505060405180910390f35b34801561052957600080fd5b50610532610eac565b604051808260ff1660ff16815260200191505060405180910390f35b34801561055a57600080fd5b50610563610ebf565b005b34801561057157600080fd5b506105be6004803603604081101561058857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fd6565b604051808215151515815260200191505060405180910390f35b3480156105e457600080fd5b50610611600480360360208110156105fb57600080fd5b8101908080359060200190929190505050611068565b005b34801561061f57600080fd5b506106626004803603602081101561063657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110f1565b604051808215151515815260200191505060405180910390f35b34801561068857600080fd5b5061069161110e565b005b34801561069f57600080fd5b506106cc600480360360208110156106b657600080fd5b81019080803590602001909291905050506111e3565b005b3480156106da57600080fd5b506106e36112c1565b6040518082815260200191505060405180910390f35b34801561070557600080fd5b5061070e6112c7565b604051808215151515815260200191505060405180910390f35b34801561073457600080fd5b5061073d6112de565b005b34801561074b57600080fd5b5061078e6004803603602081101561076257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113b3565b6040518082815260200191505060405180910390f35b3480156107b057600080fd5b506107f3600480360360208110156107c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113cb565b6040518082815260200191505060405180910390f35b34801561081557600080fd5b5061081e611413565b005b34801561082c57600080fd5b506108356114e8565b005b34801561084357600080fd5b506108706004803603602081101561085a57600080fd5b8101908080359060200190929190505050611600565b005b34801561087e57600080fd5b506108876116d6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108d557600080fd5b50610902600480360360208110156108ec57600080fd5b8101908080359060200190929190505050611700565b005b34801561091057600080fd5b506109196117d6565b604051808215151515815260200191505060405180910390f35b34801561093f57600080fd5b5061094861182e565b005b34801561095657600080fd5b5061095f611903565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561099f578082015181840152602081019050610984565b50505050905090810190601f1680156109cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109e26119a5565b6040518082815260200191505060405180910390f35b348015610a0457600080fd5b50610a5160048036036040811015610a1b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d45565b604051808215151515815260200191505060405180910390f35b348015610a7757600080fd5b50610aba60048036036020811015610a8e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d75565b604051808215151515815260200191505060405180910390f35b348015610ae057600080fd5b50610b4360048036036040811015610af757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d95565b6040518082815260200191505060405180910390f35b348015610b6557600080fd5b50610b9260048036036020811015610b7c57600080fd5b8101908080359060200190929190505050611e1c565b6040518082815260200191505060405180910390f35b348015610bb457600080fd5b50610c0360048036036040811015610bcb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506121be565b005b348015610c1157600080fd5b50610c5460048036036020811015610c2857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612304565b005b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cee5780601f10610cc357610100808354040283529160200191610cee565b820191906000526020600020905b815481529060010190602001808311610cd157829003601f168201915b5050505050905090565b6000600860009054906101000a900460ff16151515610d1657600080fd5b610d20838361238c565b905092915050565b600b60019054906101000a900460ff1681565b6000600354905090565b600a5481565b6000600860009054906101000a900460ff16151515610d6957600080fd5b610d748484846123a3565b90509392505050565b600b60009054906101000a900460ff1681565b610d986117d6565b1515610e0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16318111151515610e3257600080fd5b610e3a6116d6565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610e7f573d6000803e3d6000fd5b5050565b601260ff16600a0a6402540be4000281565b6000600660009054906101000a900460ff16905090565b600660009054906101000a900460ff1681565b610ec76117d6565b1515610f3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b600860009054906101000a900460ff161515610f5657600080fd5b6000600860006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000610fe06117d6565b1515611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b61105e8383612454565b6001905092915050565b6110706117d6565b15156110e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b6110ee3382612611565b50565b60006111078260076127ce90919063ffffffff16565b9050919050565b6111166117d6565b151561118a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055507f1a26afc103797a41cda97337e6bccd6b52abf0b3ca40d8b88c3958d827ec2f976000604051808215151515815260200191505060405180910390a1565b6111eb6117d6565b151561125f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b6000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111515156112ac57600080fd5b6112be306112b86116d6565b83612862565b50565b60095481565b6000600860009054906101000a900460ff16905090565b6112e66117d6565b151561135a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055507f1a26afc103797a41cda97337e6bccd6b52abf0b3ca40d8b88c3958d827ec2f976001604051808215151515815260200191505060405180910390a1565b60006020528060005260406000206000915090505481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61141b6117d6565b151561148f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600b60016101000a81548160ff0219169083151502179055507f3b5b2c71f43810b5658cc67290694552f6e7aecd6bb56ae2f75661a2929401d66000604051808215151515815260200191505060405180910390a1565b6114f06117d6565b1515611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b600860009054906101000a900460ff1615151561158057600080fd5b6001600860006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6116086117d6565b151561167c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b60008111151561168b57600080fd5b7fcfa7074b22c98fb9291e698be8caae9fd3391198b3dd068fbe42c6da6b9c9bf560095482604051808381526020018281526020019250505060405180910390a18060098190555050565b6000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117086117d6565b151561177c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b60008111151561178b57600080fd5b7ffa46b8b4ccaecf1d18401d52f6693d32659468c8553f904bf40cbcfd416ac0f6600a5482604051808381526020018281526020019250505060405180910390a180600a8190555050565b6000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6118366117d6565b15156118aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055507f3b5b2c71f43810b5658cc67290694552f6e7aecd6bb56ae2f75661a2929401d66001604051808215151515815260200191505060405180910390a1565b606060058054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561199b5780601f106119705761010080835404028352916020019161199b565b820191906000526020600020905b81548152906001019060200180831161197e57829003601f168201915b5050505050905090565b60008034111515611a1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4976616c696420457468657220616d6f756e740000000000000000000000000081525060200191505060405180910390fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611ae0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4163636f75742069732066726f7a656e0000000000000000000000000000000081525060200191505060405180910390fd5b600b60019054906101000a900460ff161515611b64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f42757920546f6b656e206973206e6f7420616c6c6f776564000000000000000081525060200191505060405180910390fd5b611bb2670de0b6b3a7640000611ba4611b7b610e95565b60ff16600a0a611b9660095434612c1b90919063ffffffff16565b612c1b90919063ffffffff16565b612c5990919063ffffffff16565b9050611c05816000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c8390919063ffffffff16565b6000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c98816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca590919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a380905090565b6000600860009054906101000a900460ff16151515611d6357600080fd5b611d6d8383612cc6565b905092915050565b60026020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515611eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180612fed6027913960400191505060405180910390fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611f79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f436865636b2069662073656e6465722069732066726f7a656e0000000000000081525060200191505060405180910390fd5b600b60009054906101000a900460ff161515611f9457600080fd5b611fe5826000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca590919063ffffffff16565b6000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612078826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c8390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121086120df6120c8610e95565b60ff16600a0a600a54612c1b90919063ffffffff16565b6120fa670de0b6b3a764000085612c1b90919063ffffffff16565b612c5990919063ffffffff16565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612150573d6000803e3d6000fd5b503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3809050919050565b6121c66117d6565b151561223a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b61230c6117d6565b1515612380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b61238981612cdd565b50565b6000612399338484612dd9565b6001905092915050565b60006123b0848484612862565b612449843361244485600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c8390919063ffffffff16565b612dd9565b600190509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156124f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f436865636b20726563697069656e74206973202730783027000000000000000081525060200191505060405180910390fd5b61250e81600354612ca590919063ffffffff16565b600381905550612565816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156126b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f436865636b20726563697069656e74206973206f776e6572000000000000000081525060200191505060405180910390fd5b6126cb81600354612c8390919063ffffffff16565b600381905550612722816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c8390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561280b57600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f436865636b20726563697069656e74206973206f776e6572000000000000000081525060200191505060405180910390fd5b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156129c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f436865636b2069662073656e6465722069732066726f7a656e0000000000000081525060200191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515612a8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436865636b20696620726563697069656e742069732066726f7a656e0000000081525060200191505060405180910390fd5b612adc816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c8390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b6f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080831415612c2e5760009050612c53565b60008284029050828482811515612c4157fe5b04141515612c4e57600080fd5b809150505b92915050565b60008082111515612c6957600080fd5b60008284811515612c7657fe5b0490508091505092915050565b6000828211151515612c9457600080fd5b600082840390508091505092915050565b6000808284019050838110151515612cbc57600080fd5b8091505092915050565b6000612cd3338484612862565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612d1957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612e1557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612e5157600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612f7857600080fd5b612f8282826127ce565b151515612f8e57600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe436865636b73206966207468652073656e6465722068617320656e6f75676820746f2073656c6ca165627a7a723058204bed6036a5af5228d2d731ab869778b91e31c64b5c8a73c415d1eec09d025f4d0029
Deployed Bytecode
0x608060405260043610610237576000357c0100000000000000000000000000000000000000000000000000000000900480635c975abb116101405780638f32d59b116100c8578063b414d4b61161008c578063b414d4b614610a6b578063dd62ed3e14610ad4578063e4849b3214610b59578063e724529c14610ba8578063f2fde38b14610c0557610237565b80638f32d59b1461090457806394357c6b1461093357806395d89b411461094a578063a6f2ae3a146109da578063a9059cbb146109f857610237565b80637794de551161010f5780637794de55146108095780638456cb591461082057806385e436bf146108375780638da5cb5b146108725780638e0b017d146108c957610237565b80635c975abb146106f95780636aa737e0146107285780636ebcf6071461073f57806370a08231146107a457610237565b8063313ce567116101c357806342966c681161019257806342966c68146105d857806346fbf68e146106135780634b0d54171461067c57806350baa62214610693578063534f36c5146106ce57610237565b8063313ce567146104ec57806332424aa31461051d5780633f4ba83a1461054e57806340c10f191461056557610237565b80631d0b482f1161020a5780631d0b482f1461039957806323b872dd146103c457806328b93702146104575780632e1a7d4d146104865780632ff2e9dc146104c157610237565b806306fdde031461023c578063095ea7b3146102cc5780630f7ca5771461033f57806318160ddd1461036e575b600080fd5b34801561024857600080fd5b50610251610c56565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610291578082015181840152602081019050610276565b50505050905090810190601f1680156102be5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d857600080fd5b50610325600480360360408110156102ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cf8565b604051808215151515815260200191505060405180910390f35b34801561034b57600080fd5b50610354610d28565b604051808215151515815260200191505060405180910390f35b34801561037a57600080fd5b50610383610d3b565b6040518082815260200191505060405180910390f35b3480156103a557600080fd5b506103ae610d45565b6040518082815260200191505060405180910390f35b3480156103d057600080fd5b5061043d600480360360608110156103e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d4b565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b5061046c610d7d565b604051808215151515815260200191505060405180910390f35b34801561049257600080fd5b506104bf600480360360208110156104a957600080fd5b8101908080359060200190929190505050610d90565b005b3480156104cd57600080fd5b506104d6610e83565b6040518082815260200191505060405180910390f35b3480156104f857600080fd5b50610501610e95565b604051808260ff1660ff16815260200191505060405180910390f35b34801561052957600080fd5b50610532610eac565b604051808260ff1660ff16815260200191505060405180910390f35b34801561055a57600080fd5b50610563610ebf565b005b34801561057157600080fd5b506105be6004803603604081101561058857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fd6565b604051808215151515815260200191505060405180910390f35b3480156105e457600080fd5b50610611600480360360208110156105fb57600080fd5b8101908080359060200190929190505050611068565b005b34801561061f57600080fd5b506106626004803603602081101561063657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110f1565b604051808215151515815260200191505060405180910390f35b34801561068857600080fd5b5061069161110e565b005b34801561069f57600080fd5b506106cc600480360360208110156106b657600080fd5b81019080803590602001909291905050506111e3565b005b3480156106da57600080fd5b506106e36112c1565b6040518082815260200191505060405180910390f35b34801561070557600080fd5b5061070e6112c7565b604051808215151515815260200191505060405180910390f35b34801561073457600080fd5b5061073d6112de565b005b34801561074b57600080fd5b5061078e6004803603602081101561076257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113b3565b6040518082815260200191505060405180910390f35b3480156107b057600080fd5b506107f3600480360360208110156107c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113cb565b6040518082815260200191505060405180910390f35b34801561081557600080fd5b5061081e611413565b005b34801561082c57600080fd5b506108356114e8565b005b34801561084357600080fd5b506108706004803603602081101561085a57600080fd5b8101908080359060200190929190505050611600565b005b34801561087e57600080fd5b506108876116d6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108d557600080fd5b50610902600480360360208110156108ec57600080fd5b8101908080359060200190929190505050611700565b005b34801561091057600080fd5b506109196117d6565b604051808215151515815260200191505060405180910390f35b34801561093f57600080fd5b5061094861182e565b005b34801561095657600080fd5b5061095f611903565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561099f578082015181840152602081019050610984565b50505050905090810190601f1680156109cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109e26119a5565b6040518082815260200191505060405180910390f35b348015610a0457600080fd5b50610a5160048036036040811015610a1b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d45565b604051808215151515815260200191505060405180910390f35b348015610a7757600080fd5b50610aba60048036036020811015610a8e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d75565b604051808215151515815260200191505060405180910390f35b348015610ae057600080fd5b50610b4360048036036040811015610af757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d95565b6040518082815260200191505060405180910390f35b348015610b6557600080fd5b50610b9260048036036020811015610b7c57600080fd5b8101908080359060200190929190505050611e1c565b6040518082815260200191505060405180910390f35b348015610bb457600080fd5b50610c0360048036036040811015610bcb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506121be565b005b348015610c1157600080fd5b50610c5460048036036020811015610c2857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612304565b005b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cee5780601f10610cc357610100808354040283529160200191610cee565b820191906000526020600020905b815481529060010190602001808311610cd157829003601f168201915b5050505050905090565b6000600860009054906101000a900460ff16151515610d1657600080fd5b610d20838361238c565b905092915050565b600b60019054906101000a900460ff1681565b6000600354905090565b600a5481565b6000600860009054906101000a900460ff16151515610d6957600080fd5b610d748484846123a3565b90509392505050565b600b60009054906101000a900460ff1681565b610d986117d6565b1515610e0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16318111151515610e3257600080fd5b610e3a6116d6565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610e7f573d6000803e3d6000fd5b5050565b601260ff16600a0a6402540be4000281565b6000600660009054906101000a900460ff16905090565b600660009054906101000a900460ff1681565b610ec76117d6565b1515610f3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b600860009054906101000a900460ff161515610f5657600080fd5b6000600860006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000610fe06117d6565b1515611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b61105e8383612454565b6001905092915050565b6110706117d6565b15156110e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b6110ee3382612611565b50565b60006111078260076127ce90919063ffffffff16565b9050919050565b6111166117d6565b151561118a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055507f1a26afc103797a41cda97337e6bccd6b52abf0b3ca40d8b88c3958d827ec2f976000604051808215151515815260200191505060405180910390a1565b6111eb6117d6565b151561125f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b6000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111515156112ac57600080fd5b6112be306112b86116d6565b83612862565b50565b60095481565b6000600860009054906101000a900460ff16905090565b6112e66117d6565b151561135a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055507f1a26afc103797a41cda97337e6bccd6b52abf0b3ca40d8b88c3958d827ec2f976001604051808215151515815260200191505060405180910390a1565b60006020528060005260406000206000915090505481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61141b6117d6565b151561148f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600b60016101000a81548160ff0219169083151502179055507f3b5b2c71f43810b5658cc67290694552f6e7aecd6bb56ae2f75661a2929401d66000604051808215151515815260200191505060405180910390a1565b6114f06117d6565b1515611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b600860009054906101000a900460ff1615151561158057600080fd5b6001600860006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6116086117d6565b151561167c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b60008111151561168b57600080fd5b7fcfa7074b22c98fb9291e698be8caae9fd3391198b3dd068fbe42c6da6b9c9bf560095482604051808381526020018281526020019250505060405180910390a18060098190555050565b6000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117086117d6565b151561177c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b60008111151561178b57600080fd5b7ffa46b8b4ccaecf1d18401d52f6693d32659468c8553f904bf40cbcfd416ac0f6600a5482604051808381526020018281526020019250505060405180910390a180600a8190555050565b6000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6118366117d6565b15156118aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055507f3b5b2c71f43810b5658cc67290694552f6e7aecd6bb56ae2f75661a2929401d66001604051808215151515815260200191505060405180910390a1565b606060058054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561199b5780601f106119705761010080835404028352916020019161199b565b820191906000526020600020905b81548152906001019060200180831161197e57829003601f168201915b5050505050905090565b60008034111515611a1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4976616c696420457468657220616d6f756e740000000000000000000000000081525060200191505060405180910390fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611ae0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4163636f75742069732066726f7a656e0000000000000000000000000000000081525060200191505060405180910390fd5b600b60019054906101000a900460ff161515611b64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f42757920546f6b656e206973206e6f7420616c6c6f776564000000000000000081525060200191505060405180910390fd5b611bb2670de0b6b3a7640000611ba4611b7b610e95565b60ff16600a0a611b9660095434612c1b90919063ffffffff16565b612c1b90919063ffffffff16565b612c5990919063ffffffff16565b9050611c05816000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c8390919063ffffffff16565b6000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c98816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca590919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a380905090565b6000600860009054906101000a900460ff16151515611d6357600080fd5b611d6d8383612cc6565b905092915050565b60026020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515611eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180612fed6027913960400191505060405180910390fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611f79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f436865636b2069662073656e6465722069732066726f7a656e0000000000000081525060200191505060405180910390fd5b600b60009054906101000a900460ff161515611f9457600080fd5b611fe5826000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca590919063ffffffff16565b6000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612078826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c8390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121086120df6120c8610e95565b60ff16600a0a600a54612c1b90919063ffffffff16565b6120fa670de0b6b3a764000085612c1b90919063ffffffff16565b612c5990919063ffffffff16565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612150573d6000803e3d6000fd5b503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3809050919050565b6121c66117d6565b151561223a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b61230c6117d6565b1515612380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496e76616c6964206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b61238981612cdd565b50565b6000612399338484612dd9565b6001905092915050565b60006123b0848484612862565b612449843361244485600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c8390919063ffffffff16565b612dd9565b600190509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156124f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f436865636b20726563697069656e74206973202730783027000000000000000081525060200191505060405180910390fd5b61250e81600354612ca590919063ffffffff16565b600381905550612565816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156126b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f436865636b20726563697069656e74206973206f776e6572000000000000000081525060200191505060405180910390fd5b6126cb81600354612c8390919063ffffffff16565b600381905550612722816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c8390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561280b57600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f436865636b20726563697069656e74206973206f776e6572000000000000000081525060200191505060405180910390fd5b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156129c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f436865636b2069662073656e6465722069732066726f7a656e0000000000000081525060200191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515612a8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436865636b20696620726563697069656e742069732066726f7a656e0000000081525060200191505060405180910390fd5b612adc816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c8390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b6f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080831415612c2e5760009050612c53565b60008284029050828482811515612c4157fe5b04141515612c4e57600080fd5b809150505b92915050565b60008082111515612c6957600080fd5b60008284811515612c7657fe5b0490508091505092915050565b6000828211151515612c9457600080fd5b600082840390508091505092915050565b6000808284019050838110151515612cbc57600080fd5b8091505092915050565b6000612cd3338484612862565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612d1957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612e1557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612e5157600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612f7857600080fd5b612f8282826127ce565b151515612f8e57600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe436865636b73206966207468652073656e6465722068617320656e6f75676820746f2073656c6ca165627a7a723058204bed6036a5af5228d2d731ab869778b91e31c64b5c8a73c415d1eec09d025f4d0029
Deployed Bytecode Sourcemap
16967:5514:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5000:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5000:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5000:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16573:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16573:140:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16573:140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17547:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17547:27:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6328:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6328:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17363:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17363:39:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16405:160;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16405:160:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16405:160:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17461:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17461:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22053:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22053:178:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22053:178:0;;;;;;;;;;;;;;;;;:::i;:::-;;18510:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18510:79:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5316:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5316:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4737:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4737:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16005:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16005:117:0;;;:::i;:::-;;13485:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13485:130:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13485:130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13887:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13887:89:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13887:89:0;;;;;;;;;;;;;;;;;:::i;:::-;;14359:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14359:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14359:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;21504:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21504:133:0;;;:::i;:::-;;22286:180;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22286:180:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22286:180:0;;;;;;;;;;;;;;;;;:::i;:::-;;17262:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17262:38:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15259:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15259:78:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;21323:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21323:130:0;;;:::i;:::-;;6031:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6031:45:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6031:45:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6640:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6640:106:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6640:106:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21867:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21867:130:0;;;:::i;:::-;;15795:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15795:115:0;;;:::i;:::-;;19144:175;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19144:175:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19144:175:0;;;;;;;;;;;;;;;;;:::i;:::-;;3305:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3305:87:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19383:179;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19383:179:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19383:179:0;;;;;;;;;;;;;;;;;:::i;:::-;;3664:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3664:92:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;21690:127;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21690:127:0;;;:::i;:::-;;5150:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5150:87:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5150:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19622:689;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16265:132;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16265:132:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16265:132:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6164:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6164:46:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6164:46:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7085:131;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7085:131:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7085:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20372:897;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20372:897:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20372:897:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18919:162;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18919:162:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18919:162:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3933:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3933:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3933:117:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;5000:83;5037:13;5070:5;5063:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5000:83;:::o;16573:140::-;16652:4;15496:7;;;;;;;;;;;15495:8;15487:17;;;;;;;;16676:29;16690:7;16699:5;16676:13;:29::i;:::-;16669:36;;16573:140;;;;:::o;17547:27::-;;;;;;;;;;;;;:::o;6328:91::-;6372:7;6399:12;;6392:19;;6328:91;:::o;17363:39::-;;;;:::o;16405:160::-;16498:4;15496:7;;;;;;;;;;;15495:8;15487:17;;;;;;;;16522:35;16541:4;16547:2;16551:5;16522:18;:35::i;:::-;16515:42;;16405:160;;;;;:::o;17461:28::-;;;;;;;;;;;;;:::o;22053:178::-;3525:9;:7;:9::i;:::-;3517:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22155:4;22147:21;;;22129:14;:39;;22121:48;;;;;;;;22181:7;:5;:7::i;:::-;:16;;:32;22198:14;22181:32;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22181:32:0;22053:178;:::o;18510:79::-;17197:2;18571:17;;18565:2;:23;18551:11;:38;18510:79;:::o;5316:83::-;5357:5;5382:9;;;;;;;;;;;5375:16;;5316:83;:::o;4737:22::-;;;;;;;;;;;;;:::o;16005:117::-;3525:9;:7;:9::i;:::-;3517:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15675:7;;;;;;;;;;;15667:16;;;;;;;;16073:5;16063:7;;:15;;;;;;;;;;;;;;;;;;16094:20;16103:10;16094:20;;;;;;;;;;;;;;;;;;;;;;16005:117::o;13485:130::-;13552:4;3525:9;:7;:9::i;:::-;3517:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13569:16;13575:2;13579:5;13569;:16::i;:::-;13603:4;13596:11;;13485:130;;;;:::o;13887:89::-;3525:9;:7;:9::i;:::-;3517:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13944:24;13950:10;13962:5;13944;:24::i;:::-;13887:89;:::o;14359:109::-;14415:4;14439:21;14452:7;14439:8;:12;;:21;;;;:::i;:::-;14432:28;;14359:109;;;:::o;21504:133::-;3525:9;:7;:9::i;:::-;3517:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21579:5;21560:16;;:24;;;;;;;;;;;;;;;;;;21600:29;21623:5;21600:29;;;;;;;;;;;;;;;;;;;;;;21504:133::o;22286:180::-;3525:9;:7;:9::i;:::-;3517:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22378:9;:24;22396:4;22378:24;;;;;;;;;;;;;;;;22363:11;:39;;22355:48;;;;;;;;22414:44;22432:4;22438:7;:5;:7::i;:::-;22446:11;22414:9;:44::i;:::-;22286:180;:::o;17262:38::-;;;;:::o;15259:78::-;15298:4;15322:7;;;;;;;;;;;15315:14;;15259:78;:::o;21323:130::-;3525:9;:7;:9::i;:::-;3517:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21397:4;21378:16;;:23;;;;;;;;;;;;;;;;;;21417:28;21440:4;21417:28;;;;;;;;;;;;;;;;;;;;;;21323:130::o;6031:45::-;;;;;;;;;;;;;;;;;:::o;6640:106::-;6695:7;6722:9;:16;6732:5;6722:16;;;;;;;;;;;;;;;;6715:23;;6640:106;;;:::o;21867:130::-;3525:9;:7;:9::i;:::-;3517:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21940:5;21922:15;;:23;;;;;;;;;;;;;;;;;;21961:28;21983:5;21961:28;;;;;;;;;;;;;;;;;;;;;;21867:130::o;15795:115::-;3525:9;:7;:9::i;:::-;3517:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15496:7;;;;;;;;;;;15495:8;15487:17;;;;;;;;15864:4;15854:7;;:14;;;;;;;;;;;;;;;;;;15884:18;15891:10;15884:18;;;;;;;;;;;;;;;;;;;;;;15795:115::o;19144:175::-;3525:9;:7;:9::i;:::-;3517:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19223:1;19215:5;:9;19207:18;;;;;;;;19241:37;19256:14;;19272:5;19241:37;;;;;;;;;;;;;;;;;;;;;;;;19306:5;19289:14;:22;;;;19144:175;:::o;3305:87::-;3343:15;3378:6;;;;;;;;;;;3371:13;;3305:87;:::o;19383:179::-;3525:9;:7;:9::i;:::-;3517:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19463:1;19455:5;:9;19447:18;;;;;;;;19481:39;19497:15;;19514:5;19481:39;;;;;;;;;;;;;;;;;;;;;;;;19549:5;19531:15;:23;;;;19383:179;:::o;3664:92::-;3704:4;3742:6;;;;;;;;;;;3728:20;;:10;:20;;;3721:27;;3664:92;:::o;21690:127::-;3525:9;:7;:9::i;:::-;3517:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21762:4;21744:15;;:22;;;;;;;;;;;;;;;;;;21782:27;21804:4;21782:27;;;;;;;;;;;;;;;;;;;;;;21690:127::o;5150:87::-;5189:13;5222:7;5215:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5150:87;:::o;19622:689::-;19661:11;19704:1;19692:9;:13;19684:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19750:13;:25;19764:10;19750:25;;;;;;;;;;;;;;;;;;;;;;;;;19749:26;19741:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19837:15;;;;;;;;;;;19829:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19926:78;19996:7;19927:63;19978:10;:8;:10::i;:::-;19970:19;;19964:2;:25;19928:29;19942:14;;19928:9;:13;;:29;;;;:::i;:::-;19927:35;;:63;;;;:::i;:::-;19926:69;;:78;;;;:::i;:::-;19917:87;;20053:36;20082:6;20053:9;:24;20071:4;20053:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;20026:9;:24;20044:4;20026:24;;;;;;;;;;;;;;;:63;;;;20144:33;20170:6;20144:9;:21;20154:10;20144:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;20120:9;:21;20130:10;20120:21;;;;;;;;;;;;;;;:57;;;;20260:10;20237:42;;20254:4;20237:42;;;20272:6;20237:42;;;;;;;;;;;;;;;;;;20297:6;20290:13;;19622:689;:::o;16265:132::-;16340:4;15496:7;;;;;;;;;;;15495:8;15487:17;;;;;;;;16364:25;16379:2;16383:5;16364:14;:25::i;:::-;16357:32;;16265:132;;;;:::o;6164:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;7085:131::-;7157:7;7184:8;:15;7193:5;7184:15;;;;;;;;;;;;;;;:24;7200:7;7184:24;;;;;;;;;;;;;;;;7177:31;;7085:131;;;;:::o;20372:897::-;20415:12;20482:6;20457:9;:21;20467:10;20457:21;;;;;;;;;;;;;;;;:31;;20449:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20559:13;:25;20573:10;20559:25;;;;;;;;;;;;;;;;;;;;;;;;;20558:26;20550:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20660:16;;;;;;;;;;;20652:25;;;;;;;;20787:36;20816:6;20787:9;:24;20805:4;20787:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;20760:9;:24;20778:4;20760:24;;;;;;;;;;;;;;;:63;;;;20884:33;20910:6;20884:9;:21;20894:10;20884:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;20860:9;:21;20870:10;20860:21;;;;;;;;;;;;;;;:57;;;;20979:73;21005:46;21039:10;:8;:10::i;:::-;21031:19;;21025:2;:25;21005:15;;:19;;:46;;;;:::i;:::-;20980:19;20991:7;20980:6;:10;;:19;;;;:::i;:::-;20979:25;;:73;;;;:::i;:::-;20969:83;;21074:10;:19;;:28;21094:7;21074:28;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21074:28:0;21203:4;21174:43;;21183:10;21174:43;;;21210:6;21174:43;;;;;;;;;;;;;;;;;;21244:7;21237:14;;20372:897;;;:::o;18919:162::-;3525:9;:7;:9::i;:::-;3517:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19024:6;19000:13;:21;19014:6;19000:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;19046:27;19058:6;19066;19046:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18919:162;;:::o;3933:117::-;3525:9;:7;:9::i;:::-;3517:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4014:28;4033:8;4014:18;:28::i;:::-;3933:117;:::o;8178:148::-;8243:4;8260:36;8269:10;8281:7;8290:5;8260:8;:36::i;:::-;8314:4;8307:11;;8178:148;;;;:::o;8799:228::-;8878:4;8895:26;8905:4;8911:2;8915:5;8895:9;:26::i;:::-;8932:65;8941:4;8947:10;8959:37;8990:5;8959:8;:14;8968:4;8959:14;;;;;;;;;;;;;;;:26;8974:10;8959:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;8932:8;:65::i;:::-;9015:4;9008:11;;8799:228;;;;;:::o;10120:296::-;10214:1;10195:21;;:7;:21;;;;10187:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10272:23;10289:5;10272:12;;:16;;:23;;;;:::i;:::-;10257:12;:38;;;;10327:29;10350:5;10327:9;:18;10337:7;10327:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;10306:9;:18;10316:7;10306:18;;;;;;;;;;;;;;;:50;;;;10393:7;10372:36;;10389:1;10372:36;;;10402:5;10372:36;;;;;;;;;;;;;;;;;;10120:296;;:::o;10650:::-;10744:1;10725:21;;:7;:21;;;;10717:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10802:23;10819:5;10802:12;;:16;;:23;;;;:::i;:::-;10787:12;:38;;;;10857:29;10880:5;10857:9;:18;10867:7;10857:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;10836:9;:18;10846:7;10836:18;;;;;;;;;;;;;;;:50;;;;10928:1;10902:36;;10911:7;10902:36;;;10932:5;10902:36;;;;;;;;;;;;;;;;;;10650:296;;:::o;12285:165::-;12357:4;12401:1;12382:21;;:7;:21;;;;12374:30;;;;;;;;12422:4;:11;;:20;12434:7;12422:20;;;;;;;;;;;;;;;;;;;;;;;;;12415:27;;12285:165;;;;:::o;9255:513::-;9357:1;9343:16;;:2;:16;;;;9335:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9445:13;:19;9459:4;9445:19;;;;;;;;;;;;;;;;;;;;;;;;;9444:20;9436:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9554:13;:17;9568:2;9554:17;;;;;;;;;;;;;;;;;;;;;;;;;9553:18;9545:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9642:26;9662:5;9642:9;:15;9652:4;9642:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;9624:9;:15;9634:4;9624:15;;;;;;;;;;;;;;;:44;;;;9695:24;9713:5;9695:9;:13;9705:2;9695:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;9679:9;:13;9689:2;9679:13;;;;;;;;;;;;;;;:40;;;;9750:2;9735:25;;9744:4;9735:25;;;9754:5;9735:25;;;;;;;;;;;;;;;;;;9255:513;;;:::o;952:433::-;1010:7;1259:1;1254;:6;1250:47;;;1284:1;1277:8;;;;1250:47;1309:9;1325:1;1321;:5;1309:17;;1354:1;1349;1345;:5;;;;;;;;:10;1337:19;;;;;;;;1376:1;1369:8;;;952:433;;;;;:::o;1520:303::-;1578:7;1677:1;1673;:5;1665:14;;;;;;;;1690:9;1706:1;1702;:5;;;;;;;;1690:17;;1814:1;1807:8;;;1520:303;;;;:::o;1961:150::-;2019:7;2052:1;2047;:6;;2039:15;;;;;;;;2065:9;2081:1;2077;:5;2065:17;;2102:1;2095:8;;;1961:150;;;;:::o;2199:::-;2257:7;2277:9;2293:1;2289;:5;2277:17;;2318:1;2313;:6;;2305:15;;;;;;;;2340:1;2333:8;;;2199:150;;;;:::o;7391:140::-;7452:4;7469:32;7479:10;7491:2;7495:5;7469:9;:32::i;:::-;7519:4;7512:11;;7391:140;;;;:::o;4200:195::-;4302:1;4282:22;;:8;:22;;;;4274:31;;;;;;;;4350:8;4321:38;;4342:6;;;;;;;;;;;4321:38;;;;;;;;;;;;4379:8;4370:6;;:17;;;;;;;;;;;;;;;;;;4200:195;:::o;11219:254::-;11331:1;11312:21;;:7;:21;;;;11304:30;;;;;;;;11370:1;11353:19;;:5;:19;;;;11345:28;;;;;;;;11413:5;11386:8;:15;11395:5;11386:15;;;;;;;;;;;;;;;:24;11402:7;11386:24;;;;;;;;;;;;;;;:32;;;;11450:7;11434:31;;11443:5;11434:31;;;11459:5;11434:31;;;;;;;;;;;;;;;;;;11219:254;;;:::o;11735:186::-;11831:1;11812:21;;:7;:21;;;;11804:30;;;;;;;;11854:18;11858:4;11864:7;11854:3;:18::i;:::-;11853:19;11845:28;;;;;;;;11909:4;11886;:11;;:20;11898:7;11886:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;11735:186;;:::o
Swarm Source
bzzr://4bed6036a5af5228d2d731ab869778b91e31c64b5c8a73c415d1eec09d025f4d
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.