ETH Price: $2,309.53 (-0.27%)

Token

Freedom Dividend Coin (FDC)
 

Overview

Max Total Supply

25,000,000 FDC

Holders

143 (0.00%)

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 2 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Freedom Dividend Dapp is a front-end for the Uniswap v2 protocol. It has market metrics such as token data and charts. Freedom Dividend Coin allows for the collection of a decentralized Freedom Dividend every 30 days.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
FreedomDividendCoin

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-08-29
*/

pragma solidity 0.5.16;

/**
 * @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 ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
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 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 private _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 FreedomDividendCoin ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
 * 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 FreedomDividendCoin is IERC20,ERC20Detailed {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowed;

    uint256 private _totalSupply;

    string private _name="Freedom Dividend Coin";

    string private _symbol="FDC";

    uint8 private _decimals=2;

    /**
    * @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 An 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 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) {
        require(spender != address(0));

        _allowed[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev Increase the amount of tokens that an owner allowed to a spender.
     * approve should be called when allowed_[_spender] == 0. To increment
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * Emits an Approval event.
     * @param spender The address which will spend the funds.
     * @param addedValue The amount of tokens to increase the allowance by.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        require(spender != address(0));

        _allowed[msg.sender][spender] = _allowed[msg.sender][spender].add(addedValue);
        emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
        return true;
    }

    /**
     * @dev Decrease the amount of tokens that an owner allowed to a spender.
     * approve should be called when allowed_[_spender] == 0. To decrement
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * Emits an Approval event.
     * @param spender The address which will spend the funds.
     * @param subtractedValue The amount of tokens to decrease the allowance by.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        require(spender != address(0));

        _allowed[msg.sender][spender] = _allowed[msg.sender][spender].sub(subtractedValue);
        emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
        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));

        _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));

        _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));

        _totalSupply = _totalSupply.sub(value);
        _balances[account] = _balances[account].sub(value);
        emit Transfer(account, address(0), value);
    }

    /**
     * @dev Internal function that burns an amount of the token of a given
     * account, deducting from the sender's allowance for said account. Uses the
     * internal burn function.
     * Emits an Approval event (reflecting the reduced allowance).
     * @param account The account whose tokens will be burnt.
     * @param value The amount that will be burnt.
     */
    function _burnFrom(address account, uint256 value) internal {
        _allowed[account][msg.sender] = _allowed[account][msg.sender].sub(value);
        _burn(account, value);
        emit Approval(account, msg.sender, _allowed[account][msg.sender]);
    }

    address private DividendDistributor = 0xa100E22A959D869137827D963cED87d4B545ce45;
    uint256 private globalDistributionTimestamp;
    uint256 private balanceOfDividendDistributorAtDistributionTimestamp;

    struct DividendAddresses {
        address individualAddress;
        uint256 lastDistributionTimestamp;
    }

    mapping(address => DividendAddresses) private FreedomDividendAddresses;

    constructor ()
    ERC20Detailed(_name, _symbol, _decimals)
    public
    {
        _mint(msg.sender, 2500000000);
        transfer(DividendDistributor, 10000000);
        globalDistributionTimestamp = now;
        balanceOfDividendDistributorAtDistributionTimestamp = balanceOf(DividendDistributor);
    }

    function transferCoin(address _from, address _to, uint256 _value) internal {
        uint256 transferRate = _value / 10;
        require(transferRate > 0, "Transfer Rate needs to be higher than the minimum");
        require(_value > transferRate, "Value sent needs to be higher than the Transfer Rate");
        uint256 sendValue = _value - transferRate;
        _transfer(_from, _to, sendValue);
        _transfer(_from, DividendDistributor, transferRate);
    }

    function transfer(address to, uint256 value) public returns (bool) {
        transferCoin(msg.sender, to, value);
        return true;
    }

    function transferFrom(address from, address to, uint256 value) public returns (bool) {
        _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value);
        transferCoin(from, to, value);
        emit Approval(from, msg.sender, _allowed[from][msg.sender]);
        return true;
    }

    function collectFreedomDividendFromSender() public returns (bool) {
        collectFreedomDividend(msg.sender);
        return true;
    }

    function collectFreedomDividendWithAddress(address collectionAddress) public returns (bool) {
        collectFreedomDividend(collectionAddress);
        return true;
    }

    function collectFreedomDividend(address collectionAddress) internal {

        require(collectionAddress != address(0), "Need to use a valid Address");
        require(collectionAddress != DividendDistributor, "Dividend Distributor does not distribute a dividend to itself");

        if (FreedomDividendAddresses[collectionAddress].individualAddress != address(0)) {
            if ((now - globalDistributionTimestamp) >= 30 days) {
                require(balanceOf(DividendDistributor) > 0, "Balance of Dividend Distributor needs to be greater than 0");
                globalDistributionTimestamp = now;
                balanceOfDividendDistributorAtDistributionTimestamp = balanceOf(DividendDistributor);
            }
            
            if (FreedomDividendAddresses[collectionAddress].lastDistributionTimestamp > globalDistributionTimestamp) {
                require(1 == 0, "Freedom Dividend has already been collected in past 30 days or just signed up for Dividend and need to wait up to 30 days");
            } else if ((now - FreedomDividendAddresses[collectionAddress].lastDistributionTimestamp) >= 30 days) {
                require(balanceOf(collectionAddress) > 0, "Balance of Collection Address needs to be greater than 0");
                uint256 percentageOfTotalSupply = balanceOf(collectionAddress) * totalSupply() / 625000000;
                require(percentageOfTotalSupply > 0, "Percentage of Total Supply needs to be higher than the minimum");
                uint256 distributionAmount = balanceOfDividendDistributorAtDistributionTimestamp * percentageOfTotalSupply / 10000000000;
                require(distributionAmount > 0, "Distribution amount needs to be higher than 0");
                _transfer(DividendDistributor, collectionAddress, distributionAmount);
                FreedomDividendAddresses[collectionAddress].lastDistributionTimestamp = now;
            } else {
                require(1 == 0, "It has not been 30 days since last collection of the Freedom Dividend");
            }
        } else {
            DividendAddresses memory newDividendAddresses;
            newDividendAddresses.individualAddress = collectionAddress;
            newDividendAddresses.lastDistributionTimestamp = now;
            FreedomDividendAddresses[collectionAddress] = newDividendAddresses;
        }

    }

    function getDividendAddress() public view returns(address) {
        return FreedomDividendAddresses[msg.sender].individualAddress;
    }

    function getDividendAddressWithAddress(address Address) public view returns(address) {
        return FreedomDividendAddresses[Address].individualAddress;
    }

    function getLastDistributionTimestamp() public view returns(uint256) {
        return FreedomDividendAddresses[msg.sender].lastDistributionTimestamp;
    }

    function getLastDistributionTimestampWithAddress(address Address) public view returns(uint256) {
        return FreedomDividendAddresses[Address].lastDistributionTimestamp;
    }

    function getGlobalDistributionTimestamp() public view returns(uint256) {
        return globalDistributionTimestamp;
    }

    function getbalanceOfDividendDistributorAtDistributionTimestamp() public view returns(uint256) {
        return balanceOfDividendDistributorAtDistributionTimestamp;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"collectFreedomDividendFromSender","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"collectionAddress","type":"address"}],"name":"collectFreedomDividendWithAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getDividendAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"Address","type":"address"}],"name":"getDividendAddressWithAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getGlobalDistributionTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getLastDistributionTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"Address","type":"address"}],"name":"getLastDistributionTimestampWithAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getbalanceOfDividendDistributorAtDistributionTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040526040518060400160405280601581526020017f46726565646f6d204469766964656e6420436f696e0000000000000000000000815250600690805190602001906200005192919062000855565b506040518060400160405280600381526020017f4644430000000000000000000000000000000000000000000000000000000000815250600790805190602001906200009f92919062000855565b506002600860006101000a81548160ff021916908360ff16021790555073a100e22a959d869137827d963ced87d4b545ce45600860016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200011e57600080fd5b5060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620001b95780601f106200018d57610100808354040283529160200191620001b9565b820191906000526020600020905b8154815290600101906020018083116200019b57829003601f168201915b505050505060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620002585780601f106200022c5761010080835404028352916020019162000258565b820191906000526020600020905b8154815290600101906020018083116200023a57829003601f168201915b5050505050600860009054906101000a900460ff1682600090805190602001906200028592919062000855565b5081600190805190602001906200029e92919062000855565b5080600260006101000a81548160ff021916908360ff160217905550505050620002d333639502f9006200035160201b60201c565b6200030a600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662989680620004b460201b60201c565b504260098190555062000345600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620004d360201b60201c565b600a8190555062000904565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200038c57600080fd5b620003a8816005546200051c60201b62001abe1790919060201c565b6005819055506200040781600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200051c60201b62001abe1790919060201c565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000620004c93384846200053c60201b60201c565b6001905092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000808284019050838110156200053257600080fd5b8091505092915050565b6000600a82816200054957fe5b04905060008111620005a7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180620028956031913960400191505060405180910390fd5b80821162000601576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180620028616034913960400191505060405180910390fd5b600081830390506200061b8585836200065760201b60201c565b6200065085600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846200065760201b60201c565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200069257600080fd5b620006eb81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200083460201b620019981790919060201c565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200078781600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200051c60201b62001abe1790919060201c565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000828211156200084457600080fd5b600082840390508091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200089857805160ff1916838001178555620008c9565b82800160010185558215620008c9579182015b82811115620008c8578251825591602001919060010190620008ab565b5b509050620008d89190620008dc565b5090565b6200090191905b80821115620008fd576000816000905550600101620008e3565b5090565b90565b611f4d80620009146000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80636a40cc71116100ad57806395d89b411161007157806395d89b4114610575578063a457c2d7146105f8578063a9059cbb1461065e578063b2b6a8be146106c4578063dd62ed3e146106e257610121565b80636a40cc71146103d957806370a08231146103f75780637b4fba841461044f5780638967e3b9146104d35780638f858f661461052b57610121565b806318160ddd116100f457806318160ddd1461024f57806323b872dd1461026d5780632711e9bb146102f3578063313ce5671461034f578063395093511461037357610121565b8063041e7adb1461012657806306fdde0314610144578063095ea7b3146101c75780630972c8451461022d575b600080fd5b61012e61075a565b6040518082815260200191505060405180910390f35b61014c6107a4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018c578082015181840152602081019050610171565b50505050905090810190601f1680156101b95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610213600480360360408110156101dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b610235610971565b604051808215151515815260200191505060405180910390f35b610257610983565b6040518082815260200191505060405180910390f35b6102d96004803603606081101561028357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061098d565b604051808215151515815260200191505060405180910390f35b6103356004803603602081101561030957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b95565b604051808215151515815260200191505060405180910390f35b610357610ba9565b604051808260ff1660ff16815260200191505060405180910390f35b6103bf6004803603604081101561038957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bc0565b604051808215151515815260200191505060405180910390f35b6103e1610df5565b6040518082815260200191505060405180910390f35b6104396004803603602081101561040d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dff565b6040518082815260200191505060405180910390f35b6104916004803603602081101561046557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e48565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610515600480360360208110156104e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eb4565b6040518082815260200191505060405180910390f35b610533610f00565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61057d610f6a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105bd5780820151818401526020810190506105a2565b50505050905090810190601f1680156105ea5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106446004803603604081101561060e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061100c565b604051808215151515815260200191505060405180910390f35b6106aa6004803603604081101561067457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611241565b604051808215151515815260200191505060405180910390f35b6106cc611258565b6040518082815260200191505060405180910390f35b610744600480360360408110156106f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611262565b6040518082815260200191505060405180910390f35b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905090565b606060008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561083c5780601f106108115761010080835404028352916020019161083c565b820191906000526020600020905b81548152906001019060200180831161081f57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561088157600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600061097c336112e9565b6001905090565b6000600554905090565b6000610a1e82600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461199890919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610aa98484846119b8565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b6000610ba0826112e9565b60019050919050565b6000600260009054906101000a900460ff16905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bfb57600080fd5b610c8a82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611abe90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600a54905090565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110025780601f10610fd757610100808354040283529160200191611002565b820191906000526020600020905b815481529060010190602001808311610fe557829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561104757600080fd5b6110d682600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461199890919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600061124e3384846119b8565b6001905092915050565b6000600954905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561138c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e65656420746f2075736520612076616c69642041646472657373000000000081525060200191505060405180910390fd5b600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180611dff603d913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b55762278d00600954420310611593576000611504600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dff565b1161155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180611e3c603a913960400191505060405180910390fd5b4260098190555061158c600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dff565b600a819055505b600954600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154111561163e576000600114611639576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526079815260200180611d1a6079913960800191505060405180910390fd5b6118b0565b62278d00600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015442031061185457600061169782610dff565b116116ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611dc76038913960400191505060405180910390fd5b6000632540be406116fc610983565b61170584610dff565b028161170d57fe5b04905060008111611769576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180611cdc603e913960400191505060405180910390fd5b60006402540be40082600a54028161177d57fe5b049050600081116117d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180611e76602d913960400191505060405180910390fd5b611806600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168483611add565b42600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555050506118af565b60006001146118ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526045815260200180611ed46045913960600191505060405180910390fd5b5b5b611995565b6118bd611cab565b81816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250504281602001818152505080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155905050505b50565b6000828211156119a757600080fd5b600082840390508091505092915050565b6000600a82816119c457fe5b04905060008111611a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611ea36031913960400191505060405180910390fd5b808211611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180611d936034913960400191505060405180910390fd5b60008183039050611a8a858583611add565b611ab785600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611add565b5050505050565b600080828401905083811015611ad357600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b1757600080fd5b611b6981600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461199890919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bfe81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611abe90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152509056fe50657263656e74616765206f6620546f74616c20537570706c79206e6565647320746f20626520686967686572207468616e20746865206d696e696d756d46726565646f6d204469766964656e642068617320616c7265616479206265656e20636f6c6c656374656420696e20706173742033302064617973206f72206a757374207369676e656420757020666f72204469766964656e6420616e64206e65656420746f207761697420757020746f203330206461797356616c75652073656e74206e6565647320746f20626520686967686572207468616e20746865205472616e73666572205261746542616c616e6365206f6620436f6c6c656374696f6e2041646472657373206e6565647320746f2062652067726561746572207468616e20304469766964656e64204469737472696275746f7220646f6573206e6f7420646973747269627574652061206469766964656e6420746f20697473656c6642616c616e6365206f66204469766964656e64204469737472696275746f72206e6565647320746f2062652067726561746572207468616e2030446973747269627574696f6e20616d6f756e74206e6565647320746f20626520686967686572207468616e20305472616e736665722052617465206e6565647320746f20626520686967686572207468616e20746865206d696e696d756d497420686173206e6f74206265656e20333020646179732073696e6365206c61737420636f6c6c656374696f6e206f66207468652046726565646f6d204469766964656e64a265627a7a7231582087f47bcdfae9173cfed5bba41f68a229c614a7f2b5f34f0c15453519ecb6f69564736f6c6343000510003256616c75652073656e74206e6565647320746f20626520686967686572207468616e20746865205472616e7366657220526174655472616e736665722052617465206e6565647320746f20626520686967686572207468616e20746865206d696e696d756d

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101215760003560e01c80636a40cc71116100ad57806395d89b411161007157806395d89b4114610575578063a457c2d7146105f8578063a9059cbb1461065e578063b2b6a8be146106c4578063dd62ed3e146106e257610121565b80636a40cc71146103d957806370a08231146103f75780637b4fba841461044f5780638967e3b9146104d35780638f858f661461052b57610121565b806318160ddd116100f457806318160ddd1461024f57806323b872dd1461026d5780632711e9bb146102f3578063313ce5671461034f578063395093511461037357610121565b8063041e7adb1461012657806306fdde0314610144578063095ea7b3146101c75780630972c8451461022d575b600080fd5b61012e61075a565b6040518082815260200191505060405180910390f35b61014c6107a4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018c578082015181840152602081019050610171565b50505050905090810190601f1680156101b95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610213600480360360408110156101dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b610235610971565b604051808215151515815260200191505060405180910390f35b610257610983565b6040518082815260200191505060405180910390f35b6102d96004803603606081101561028357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061098d565b604051808215151515815260200191505060405180910390f35b6103356004803603602081101561030957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b95565b604051808215151515815260200191505060405180910390f35b610357610ba9565b604051808260ff1660ff16815260200191505060405180910390f35b6103bf6004803603604081101561038957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bc0565b604051808215151515815260200191505060405180910390f35b6103e1610df5565b6040518082815260200191505060405180910390f35b6104396004803603602081101561040d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dff565b6040518082815260200191505060405180910390f35b6104916004803603602081101561046557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e48565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610515600480360360208110156104e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eb4565b6040518082815260200191505060405180910390f35b610533610f00565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61057d610f6a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105bd5780820151818401526020810190506105a2565b50505050905090810190601f1680156105ea5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106446004803603604081101561060e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061100c565b604051808215151515815260200191505060405180910390f35b6106aa6004803603604081101561067457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611241565b604051808215151515815260200191505060405180910390f35b6106cc611258565b6040518082815260200191505060405180910390f35b610744600480360360408110156106f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611262565b6040518082815260200191505060405180910390f35b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905090565b606060008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561083c5780601f106108115761010080835404028352916020019161083c565b820191906000526020600020905b81548152906001019060200180831161081f57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561088157600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600061097c336112e9565b6001905090565b6000600554905090565b6000610a1e82600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461199890919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610aa98484846119b8565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b6000610ba0826112e9565b60019050919050565b6000600260009054906101000a900460ff16905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bfb57600080fd5b610c8a82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611abe90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600a54905090565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110025780601f10610fd757610100808354040283529160200191611002565b820191906000526020600020905b815481529060010190602001808311610fe557829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561104757600080fd5b6110d682600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461199890919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600061124e3384846119b8565b6001905092915050565b6000600954905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561138c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e65656420746f2075736520612076616c69642041646472657373000000000081525060200191505060405180910390fd5b600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180611dff603d913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b55762278d00600954420310611593576000611504600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dff565b1161155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180611e3c603a913960400191505060405180910390fd5b4260098190555061158c600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dff565b600a819055505b600954600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154111561163e576000600114611639576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526079815260200180611d1a6079913960800191505060405180910390fd5b6118b0565b62278d00600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015442031061185457600061169782610dff565b116116ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611dc76038913960400191505060405180910390fd5b6000632540be406116fc610983565b61170584610dff565b028161170d57fe5b04905060008111611769576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180611cdc603e913960400191505060405180910390fd5b60006402540be40082600a54028161177d57fe5b049050600081116117d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180611e76602d913960400191505060405180910390fd5b611806600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168483611add565b42600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555050506118af565b60006001146118ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526045815260200180611ed46045913960600191505060405180910390fd5b5b5b611995565b6118bd611cab565b81816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250504281602001818152505080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155905050505b50565b6000828211156119a757600080fd5b600082840390508091505092915050565b6000600a82816119c457fe5b04905060008111611a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611ea36031913960400191505060405180910390fd5b808211611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180611d936034913960400191505060405180910390fd5b60008183039050611a8a858583611add565b611ab785600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611add565b5050505050565b600080828401905083811015611ad357600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b1757600080fd5b611b6981600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461199890919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bfe81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611abe90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152509056fe50657263656e74616765206f6620546f74616c20537570706c79206e6565647320746f20626520686967686572207468616e20746865206d696e696d756d46726565646f6d204469766964656e642068617320616c7265616479206265656e20636f6c6c656374656420696e20706173742033302064617973206f72206a757374207369676e656420757020666f72204469766964656e6420616e64206e65656420746f207761697420757020746f203330206461797356616c75652073656e74206e6565647320746f20626520686967686572207468616e20746865205472616e73666572205261746542616c616e6365206f6620436f6c6c656374696f6e2041646472657373206e6565647320746f2062652067726561746572207468616e20304469766964656e64204469737472696275746f7220646f6573206e6f7420646973747269627574652061206469766964656e6420746f20697473656c6642616c616e6365206f66204469766964656e64204469737472696275746f72206e6565647320746f2062652067726561746572207468616e2030446973747269627574696f6e20616d6f756e74206e6565647320746f20626520686967686572207468616e20305472616e736665722052617465206e6565647320746f20626520686967686572207468616e20746865206d696e696d756d497420686173206e6f74206265656e20333020646179732073696e6365206c61737420636f6c6c656374696f6e206f66207468652046726565646f6d204469766964656e64a265627a7a7231582087f47bcdfae9173cfed5bba41f68a229c614a7f2b5f34f0c15453519ecb6f69564736f6c63430005100032

Deployed Bytecode Sourcemap

4274:11559:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4274:11559:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15171:157;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3279:83;;;:::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;3279:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6255:244;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6255:244:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12140:141;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4725:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11830:302;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11830:302:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12289:174;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12289:174:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3595:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7014:323;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7014:323:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15656:172;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5032:106;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5032:106:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15001:162;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15001:162:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15336:180;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15336:180:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14854:139;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3429:87;;;:::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;3429:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7857:333;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7857:333:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11679:143;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11679:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15524:124;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5477:131;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5477:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15171:157;15231:7;15258:24;:36;15283:10;15258:36;;;;;;;;;;;;;;;:62;;;15251:69;;15171:157;:::o;3279:83::-;3316:13;3349:5;3342:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3279:83;:::o;6255:244::-;6320:4;6364:1;6345:21;;:7;:21;;;;6337:30;;;;;;6412:5;6380:8;:20;6389:10;6380:20;;;;;;;;;;;;;;;:29;6401:7;6380:29;;;;;;;;;;;;;;;:37;;;;6454:7;6433:36;;6442:10;6433:36;;;6463:5;6433:36;;;;;;;;;;;;;;;;;;6487:4;6480:11;;6255:244;;;;:::o;12140:141::-;12200:4;12217:34;12240:10;12217:22;:34::i;:::-;12269:4;12262:11;;12140:141;:::o;4725:91::-;4769:7;4796:12;;4789:19;;4725:91;:::o;11830:302::-;11909:4;11955:37;11986:5;11955:8;:14;11964:4;11955:14;;;;;;;;;;;;;;;:26;11970:10;11955:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;11926:8;:14;11935:4;11926:14;;;;;;;;;;;;;;;:26;11941:10;11926:26;;;;;;;;;;;;;;;:66;;;;12003:29;12016:4;12022:2;12026:5;12003:12;:29::i;:::-;12063:10;12048:54;;12057:4;12048:54;;;12075:8;:14;12084:4;12075:14;;;;;;;;;;;;;;;:26;12090:10;12075:26;;;;;;;;;;;;;;;;12048:54;;;;;;;;;;;;;;;;;;12120:4;12113:11;;11830:302;;;;;:::o;12289:174::-;12375:4;12392:41;12415:17;12392:22;:41::i;:::-;12451:4;12444:11;;12289:174;;;:::o;3595:83::-;3636:5;3661:9;;;;;;;;;;;3654:16;;3595:83;:::o;7014:323::-;7094:4;7138:1;7119:21;;:7;:21;;;;7111:30;;;;;;7186:45;7220:10;7186:8;:20;7195:10;7186:20;;;;;;;;;;;;;;;:29;7207:7;7186:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;7154:8;:20;7163:10;7154:20;;;;;;;;;;;;;;;:29;7175:7;7154:29;;;;;;;;;;;;;;;:77;;;;7268:7;7247:60;;7256:10;7247:60;;;7277:8;:20;7286:10;7277:20;;;;;;;;;;;;;;;:29;7298:7;7277:29;;;;;;;;;;;;;;;;7247:60;;;;;;;;;;;;;;;;;;7325:4;7318:11;;7014:323;;;;:::o;15656:172::-;15742:7;15769:51;;15762:58;;15656:172;:::o;5032:106::-;5087:7;5114:9;:16;5124:5;5114:16;;;;;;;;;;;;;;;;5107:23;;5032:106;;;:::o;15001:162::-;15077:7;15104:24;:33;15129:7;15104:33;;;;;;;;;;;;;;;:51;;;;;;;;;;;;15097:58;;15001:162;;;:::o;15336:180::-;15422:7;15449:24;:33;15474:7;15449:33;;;;;;;;;;;;;;;:59;;;15442:66;;15336:180;;;:::o;14854:139::-;14904:7;14931:24;:36;14956:10;14931:36;;;;;;;;;;;;;;;:54;;;;;;;;;;;;14924:61;;14854:139;:::o;3429:87::-;3468:13;3501:7;3494:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3429:87;:::o;7857:333::-;7942:4;7986:1;7967:21;;:7;:21;;;;7959:30;;;;;;8034:50;8068:15;8034:8;:20;8043:10;8034:20;;;;;;;;;;;;;;;:29;8055:7;8034:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;8002:8;:20;8011:10;8002:20;;;;;;;;;;;;;;;:29;8023:7;8002:29;;;;;;;;;;;;;;;:82;;;;8121:7;8100:60;;8109:10;8100:60;;;8130:8;:20;8139:10;8130:20;;;;;;;;;;;;;;;:29;8151:7;8130:29;;;;;;;;;;;;;;;;8100:60;;;;;;;;;;;;;;;;;;8178:4;8171:11;;7857:333;;;;:::o;11679:143::-;11740:4;11757:35;11770:10;11782:2;11786:5;11757:12;:35::i;:::-;11810:4;11803:11;;11679:143;;;;:::o;15524:124::-;15586:7;15613:27;;15606:34;;15524:124;:::o;5477:131::-;5549:7;5576:8;:15;5585:5;5576:15;;;;;;;;;;;;;;;:24;5592:7;5576:24;;;;;;;;;;;;;;;;5569:31;;5477:131;;;;:::o;12471:2375::-;12589:1;12560:31;;:17;:31;;;;12552:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12663:19;;;;;;;;;;;12642:40;;:17;:40;;;;12634:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12838:1;12765:75;;:24;:43;12790:17;12765:43;;;;;;;;;;;;;;;:61;;;;;;;;;;;;:75;;;12761:2076;;12900:7;12868:27;;12862:3;:33;12861:46;12857:347;;12969:1;12936:30;12946:19;;;;;;;;;;;12936:9;:30::i;:::-;:34;12928:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13082:3;13052:27;:33;;;;13158:30;13168:19;;;;;;;;;;;13158:9;:30::i;:::-;13104:51;:84;;;;12857:347;13308:27;;13236:24;:43;13261:17;13236:43;;;;;;;;;;;;;;;:69;;;:99;13232:1295;;;13369:1;13364;:6;13356:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13232:1295;;;13603:7;13529:24;:43;13554:17;13529:43;;;;;;;;;;;;;;;:69;;;13523:3;:75;13522:88;13518:1009;;13670:1;13639:28;13649:17;13639:9;:28::i;:::-;:32;13631:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13751:31;13832:9;13816:13;:11;:13::i;:::-;13785:28;13795:17;13785:9;:28::i;:::-;:44;:56;;;;;;13751:90;;13894:1;13868:23;:27;13860:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13981:26;14090:11;14064:23;14010:51;;:77;:91;;;;;;13981:120;;14149:1;14128:18;:22;14120:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14219:69;14229:19;;;;;;;;;;;14250:17;14269:18;14219:9;:69::i;:::-;14379:3;14307:24;:43;14332:17;14307:43;;;;;;;;;;;;;;;:69;;:75;;;;13518:1009;;;;;14436:1;14431;:6;14423:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13518:1009;13232:1295;12761:2076;;;14559:45;;:::i;:::-;14660:17;14619:20;:38;;:58;;;;;;;;;;;14741:3;14692:20;:46;;:52;;;;;14805:20;14759:24;:43;14784:17;14759:43;;;;;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12761:2076;;12471:2375;:::o;1244:150::-;1302:7;1335:1;1330;:6;;1322:15;;;;;;1348:9;1364:1;1360;:5;1348:17;;1385:1;1378:8;;;1244:150;;;;:::o;11200:471::-;11286:20;11318:2;11309:6;:11;;;;;;11286:34;;11354:1;11339:12;:16;11331:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11437:12;11428:6;:21;11420:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11517:17;11546:12;11537:6;:21;11517:41;;11569:32;11579:5;11586:3;11591:9;11569;:32::i;:::-;11612:51;11622:5;11629:19;;;;;;;;;;;11650:12;11612:9;:51::i;:::-;11200:471;;;;;:::o;1480:150::-;1538:7;1558:9;1574:1;1570;:5;1558:17;;1599:1;1594;:6;;1586:15;;;;;;1621:1;1614:8;;;1480:150;;;;:::o;8412:262::-;8514:1;8500:16;;:2;:16;;;;8492:25;;;;;;8548:26;8568:5;8548:9;:15;8558:4;8548:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;8530:9;:15;8540:4;8530:15;;;;;;;;;;;;;;;:44;;;;8601:24;8619:5;8601:9;:13;8611:2;8601:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;8585:9;:13;8595:2;8585:13;;;;;;;;;;;;;;;:40;;;;8656:2;8641:25;;8650:4;8641:25;;;8660:5;8641:25;;;;;;;;;;;;;;;;;;8412:262;;;:::o;4274:11559::-;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://87f47bcdfae9173cfed5bba41f68a229c614a7f2b5f34f0c15453519ecb6f695
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.