ETH Price: $3,148.73 (+2.83%)

Token

Dola Borrowing Right (DBR)
 

Overview

Max Total Supply

41,708,821.928812411636584682 DBR

Holders

326 ( -0.307%)

Market

Price

$0.14 @ 0.000046 ETH (-0.47%)

Onchain Market Cap

$6,020,418.19

Circulating Supply Market Cap

$3,715,538.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 DBR

Value
$0.00
0xec51e66c1e1bfc85acc3b6847820a3ff0a38364b
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

DOLA Borrowing Rights replace interest rates with a fixed fee that can earn user more.

Market

Volume (24H):$38,952.00
Market Capitalization:$3,715,538.00
Circulating Supply:25,740,826.00 DBR
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DolaBorrowingRights

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2022-12-10
*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;

/**
@title Dola Borrow Rights
@notice The DolaBorrowRights contract is a non-standard ERC20 token, that gives the right of holders to borrow DOLA at 0% interest.
 As a borrower takes on DOLA debt, their DBR balance will be exhausted at 1 DBR per 1 DOLA borrowed per year.
*/
contract DolaBorrowingRights {

    string public name;
    string public symbol;
    uint8 public constant decimals = 18;
    uint256 public _totalSupply;
    address public operator;
    address public pendingOperator;
    uint public totalDueTokensAccrued;
    uint public replenishmentPriceBps;
    mapping(address => uint256) public balances;
    mapping(address => mapping(address => uint256)) public allowance;
    uint256 internal immutable INITIAL_CHAIN_ID;
    bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;
    mapping(address => uint256) public nonces;
    mapping (address => bool) public minters;
    mapping (address => bool) public markets;
    mapping (address => uint) public debts; // user => debt across all tracked markets
    mapping (address => uint) public dueTokensAccrued; // user => amount of due tokens accrued
    mapping (address => uint) public lastUpdated; // user => last update timestamp

    constructor(
        uint _replenishmentPriceBps,
        string memory _name,
        string memory _symbol,
        address _operator
    ) {
        replenishmentPriceBps = _replenishmentPriceBps;
        name = _name;
        symbol = _symbol;
        operator = _operator;
        INITIAL_CHAIN_ID = block.chainid;
        INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
    }

    modifier onlyOperator {
        require(msg.sender == operator, "ONLY OPERATOR");
        _;
    }
    
    /**
    @notice Sets pending operator of the contract. Operator role must be claimed by the new oprator. Only callable by Operator.
    @param newOperator_ The address of the newOperator
    */
    function setPendingOperator(address newOperator_) public onlyOperator {
        pendingOperator = newOperator_;
    }

    /**
    @notice Sets the replenishment price in basis points. Replenishment price denotes the increase in DOLA debt upon forced replenishments.
     At 10000, the cost of replenishing 1 DBR is 1 DOLA in debt. Only callable by Operator.
    @param newReplenishmentPriceBps_ The new replen
    */
    function setReplenishmentPriceBps(uint newReplenishmentPriceBps_) public onlyOperator {
        require(newReplenishmentPriceBps_ > 0, "replenishment price must be over 0");
        require(newReplenishmentPriceBps_ <= 1_000_000, "Replenishment price cannot exceed 100 DOLA per DBR");
        replenishmentPriceBps = newReplenishmentPriceBps_;
    }
    
    /**
    @notice claims the Operator role if set as pending operator.
    */
    function claimOperator() public {
        require(msg.sender == pendingOperator, "ONLY PENDING OPERATOR");
        operator = pendingOperator;
        pendingOperator = address(0);
        emit ChangeOperator(operator);
    }

    /**
    @notice Add a minter to the set of addresses allowed to mint DBR tokens. Only callable by Operator.
    @param minter_ The address of the new minter.
    */
    function addMinter(address minter_) public onlyOperator {
        minters[minter_] = true;
        emit AddMinter(minter_);
    }

    /**
    @notice Removes a minter from the set of addresses allowe to mint DBR tokens. Only callable by Operator.
    @param minter_ The address to be removed from the minter set.
    */
    function removeMinter(address minter_) public onlyOperator {
        minters[minter_] = false;
        emit RemoveMinter(minter_);
    }
    /**
    @notice Adds a market to the set of active markets. Only callable by Operator.
    @dev markets can be added but cannot be removed. A removed market would result in unrepayable debt for some users.
    @param market_ The address of the new market contract to be added.
    */
    function addMarket(address market_) public onlyOperator {
        markets[market_] = true;
        emit AddMarket(market_);
    }

    /**
    @notice Get the total supply of DBR tokens.
    @dev The total supply is calculated as the difference between total DBR minted and total DBR accrued.
    @return uint representing the total supply of DBR.
    */
    function totalSupply() public view returns (uint) {
        if(totalDueTokensAccrued > _totalSupply) return 0;
        return _totalSupply - totalDueTokensAccrued;
    }

    /**
    @notice Get the DBR balance of an address. Will return 0 if the user has zero DBR or a deficit.
    @dev The balance of a user is calculated as the difference between the user's balance and the user's accrued DBR debt + due DBR debt.
    @param user Address of the user.
    @return uint representing the balance of the user.
    */
    function balanceOf(address user) public view returns (uint) {
        uint debt = debts[user];
        uint accrued = (block.timestamp - lastUpdated[user]) * debt / 365 days;
        if(dueTokensAccrued[user] + accrued > balances[user]) return 0;
        return balances[user] - dueTokensAccrued[user] - accrued;
    }

    /**
    @notice Get the DBR deficit of an address. Will return 0 if th user has zero DBR or more.
    @dev The deficit of a user is calculated as the difference between the user's accrued DBR deb + due DBR debt and their balance.
    @param user Address of the user.
    @return uint representing the deficit of the user.
    */
    function deficitOf(address user) public view returns (uint) {
        uint debt = debts[user];
        uint accrued = (block.timestamp - lastUpdated[user]) * debt / 365 days;
        if(dueTokensAccrued[user] + accrued < balances[user]) return 0;
        return dueTokensAccrued[user] + accrued - balances[user];
    }
    
    /**
    @notice Get the signed DBR balance of an address.
    @dev This function will revert if a user has a balance of more than 2^255-1 DBR
    @param user Address of the user.
    @return Returns a signed int of the user's balance
    */
    function signedBalanceOf(address user) public view returns (int) {
        uint debt = debts[user];
        uint accrued = (block.timestamp - lastUpdated[user]) * debt / 365 days;
        return int(balances[user]) - int(dueTokensAccrued[user]) - int(accrued);
    }

    /**
    @notice Approves spender to spend amount of DBR on behalf of the message sender.
    @param spender Address of the spender to be approved
    @param amount Amount to be approved to spend
    @return Always returns true, will revert if not successful.
    */
    function approve(address spender, uint256 amount) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    /**
    @notice Transfers amount to address to from message sender.
    @param to The address to transfer to
    @param amount The amount of DBR to transfer
    @return Always returns true, will revert if not successful.
    */
    function transfer(address to, uint256 amount) public virtual returns (bool) {
        require(balanceOf(msg.sender) >= amount, "Insufficient balance");
        balances[msg.sender] -= amount;
        unchecked {
            balances[to] += amount;
        }
        emit Transfer(msg.sender, to, amount);
        return true;
    }

    /**
    @notice Transfer amount of DBR  on behalf of address from to address to. Message sender must have a sufficient allowance from the from address.
    @dev Allowance is reduced by the amount transferred.
    @param from Address to transfer from.
    @param to Address to transfer to.
    @param amount Amount of DBR to transfer.
    @return Always returns true, will revert if not successful.
    */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        uint256 allowed = allowance[from][msg.sender];
        if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;
        require(balanceOf(from) >= amount, "Insufficient balance");
        balances[from] -= amount;
        unchecked {
            balances[to] += amount;
        }
        emit Transfer(from, to, amount);
        return true;
    }

    /**
    @notice Permits an address to spend on behalf of another address via a signed message.
    @dev Can be bundled with a transferFrom call, to reduce transaction load on users.
    @param owner Address of the owner permitting the spending
    @param spender Address allowed to spend on behalf of owner.
    @param value Amount to be allowed to spend.
    @param deadline Timestamp after which the signed message is no longer valid.
    @param v The v param of the ECDSA signature
    @param r The r param of the ECDSA signature
    @param s The s param of the ECDSA signature
    */
    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");
        unchecked {
            address recoveredAddress = ecrecover(
                keccak256(
                    abi.encodePacked(
                        "\x19\x01",
                        DOMAIN_SEPARATOR(),
                        keccak256(
                            abi.encode(
                                keccak256(
                                    "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                                ),
                                owner,
                                spender,
                                value,
                                nonces[owner]++,
                                deadline
                            )
                        )
                    )
                ),
                v,
                r,
                s
            );
            require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER");
            allowance[recoveredAddress][spender] = value;
        }
        emit Approval(owner, spender, value);
    }

    /**
    @notice Function for invalidating the nonce of a signed message.
    */
    function invalidateNonce() public {
        nonces[msg.sender]++;
    }

    function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
        return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();
    }

    function computeDomainSeparator() internal view virtual returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                    keccak256(bytes(name)),
                    keccak256("1"),
                    block.chainid,
                    address(this)
                )
            );
    }

    /**
    @notice Accrue due DBR debt of user
    @dev DBR debt is accrued at a rate of 1 DBR per 1 DOLA of debt per year.
    @param user The address of the user to accrue DBR debt to.
    */
    function accrueDueTokens(address user) public {
        uint debt = debts[user];
        if(lastUpdated[user] == block.timestamp) return;
        uint accrued = (block.timestamp - lastUpdated[user]) * debt / 365 days;
        if(accrued > 0 || lastUpdated[user] == 0){
            dueTokensAccrued[user] += accrued;
            totalDueTokensAccrued += accrued;
            lastUpdated[user] = block.timestamp;
            emit Transfer(user, address(0), accrued);
        }
    }

    /**
    @notice Function to be called by markets when a borrow occurs.
    @dev Accrues due tokens on behalf of the user, before increasing their debt.
    @param user The address of the borrower
    @param additionalDebt The additional amount of DOLA the user is borrowing
    */
    function onBorrow(address user, uint additionalDebt) public {
        require(markets[msg.sender], "Only markets can call onBorrow");
        accrueDueTokens(user);
        require(deficitOf(user) == 0, "DBR Deficit");
        debts[user] += additionalDebt;
    }

    /**
    @notice Function to be called by markets when a repayment occurs.
    @dev Accrues due tokens on behalf of the user, before reducing their debt.
    @param user The address of the borrower having their debt repaid
    @param repaidDebt The amount of DOLA repaid
    */
    function onRepay(address user, uint repaidDebt) public {
        require(markets[msg.sender], "Only markets can call onRepay");
        accrueDueTokens(user);
        debts[user] -= repaidDebt;
    }

    /**
    @notice Function to be called by markets when a force replenish occurs. This function can only be called if the user has a DBR deficit.
    @dev Accrues due tokens on behalf of the user, before increasing their debt by the replenishment price and minting them new DBR.
    @param user The user to be force replenished.
    @param amount The amount of DBR the user will be force replenished.
    */
    function onForceReplenish(address user, address replenisher, uint amount, uint replenisherReward) public {
        require(markets[msg.sender], "Only markets can call onForceReplenish");
        uint deficit = deficitOf(user);
        require(deficit > 0, "No deficit");
        require(deficit >= amount, "Amount > deficit");
        uint replenishmentCost = amount * replenishmentPriceBps / 10000;
        accrueDueTokens(user);
        debts[user] += replenishmentCost;
        _mint(user, amount);
        emit ForceReplenish(user, replenisher, msg.sender, amount, replenishmentCost, replenisherReward);
    }

    /**
    @notice Function for burning DBR from message sender, reducing supply.
    @param amount Amount to be burned
    */
    function burn(uint amount) public {
        _burn(msg.sender, amount);
    }

    /**
    @notice Function for minting new DBR, increasing supply. Only callable by minters and the operator.
    @param to Address to mint DBR to.
    @param amount Amount of DBR to mint.
    */
    function mint(address to, uint amount) public {
        require(minters[msg.sender] == true || msg.sender == operator, "ONLY MINTERS OR OPERATOR");
        _mint(to, amount);
    }

    /**
    @notice Internal function for minting DBR.
    @param to Address to mint DBR to.
    @param amount Amount of DBR to mint.
    */
    function _mint(address to, uint256 amount) internal virtual {
        _totalSupply += amount;
        unchecked {
            balances[to] += amount;
        }
        emit Transfer(address(0), to, amount);
    }

    /**
    @notice Internal function for burning DBR.
    @param from Address to burn DBR from.
    @param amount Amount of DBR to be burned.
    */
    function _burn(address from, uint256 amount) internal virtual {
        require(balanceOf(from) >= amount, "Insufficient balance");
        balances[from] -= amount;
        unchecked {
            _totalSupply -= amount;
        }
        emit Transfer(from, address(0), amount);
    }

    event Transfer(address indexed from, address indexed to, uint256 amount);
    event Approval(address indexed owner, address indexed spender, uint256 amount);
    event AddMinter(address indexed minter);
    event RemoveMinter(address indexed minter);
    event AddMarket(address indexed market);
    event ChangeOperator(address indexed newOperator);
    event ForceReplenish(address indexed account, address indexed replenisher, address indexed market, uint deficit, uint replenishmentCost, uint replenisherReward);

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_replenishmentPriceBps","type":"uint256"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"market","type":"address"}],"name":"AddMarket","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"minter","type":"address"}],"name":"AddMinter","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newOperator","type":"address"}],"name":"ChangeOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"replenisher","type":"address"},{"indexed":true,"internalType":"address","name":"market","type":"address"},{"indexed":false,"internalType":"uint256","name":"deficit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"replenishmentCost","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"replenisherReward","type":"uint256"}],"name":"ForceReplenish","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"minter","type":"address"}],"name":"RemoveMinter","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"accrueDueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"market_","type":"address"}],"name":"addMarket","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter_","type":"address"}],"name":"addMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"debts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"deficitOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"dueTokensAccrued","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"invalidateNonce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastUpdated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"markets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"additionalDebt","type":"uint256"}],"name":"onBorrow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"replenisher","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"replenisherReward","type":"uint256"}],"name":"onForceReplenish","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"repaidDebt","type":"uint256"}],"name":"onRepay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOperator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter_","type":"address"}],"name":"removeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"replenishmentPriceBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator_","type":"address"}],"name":"setPendingOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newReplenishmentPriceBps_","type":"uint256"}],"name":"setReplenishmentPriceBps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"signedBalanceOf","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDueTokensAccrued","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60c06040523480156200001157600080fd5b5060405162001f5f38038062001f5f8339810160408190526200003491620002ab565b600684905582516200004e90600090602086019062000138565b5081516200006490600190602085019062000138565b50600380546001600160a01b0319166001600160a01b038316179055466080526200008e6200009c565b60a052506200042092505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620000d091906200037d565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b828054620001469062000341565b90600052602060002090601f0160209004810192826200016a5760008555620001b5565b82601f106200018557805160ff1916838001178555620001b5565b82800160010185558215620001b5579182015b82811115620001b557825182559160200191906001019062000198565b50620001c3929150620001c7565b5090565b5b80821115620001c35760008155600101620001c8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020657600080fd5b81516001600160401b0380821115620002235762000223620001de565b604051601f8301601f19908116603f011681019082821181831017156200024e576200024e620001de565b816040528381526020925086838588010111156200026b57600080fd5b600091505b838210156200028f578582018301518183018401529082019062000270565b83821115620002a15760008385830101525b9695505050505050565b60008060008060808587031215620002c257600080fd5b845160208601519094506001600160401b0380821115620002e257600080fd5b620002f088838901620001f4565b945060408701519150808211156200030757600080fd5b506200031687828801620001f4565b606087015190935090506001600160a01b03811681146200033657600080fd5b939692955090935050565b600181811c908216806200035657607f821691505b6020821081036200037757634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c9150808316806200039a57607f831692505b60208084108203620003ba57634e487b7160e01b86526022600452602486fd5b818015620003d15760018114620003e35762000412565b60ff1986168952848901965062000412565b60008a81526020902060005b868110156200040a5781548b820152908501908301620003ef565b505084890196505b509498975050505050505050565b60805160a051611b19620004466000396000610996015260006109660152611b196000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c806370a0823111610130578063ac7e534e116100b8578063dcdf770f1161007c578063dcdf770f146104ed578063dd62ed3e146104f6578063f46eccc414610521578063f7f11fb714610544578063fffdfb381461055757600080fd5b8063ac7e534e14610499578063b2c08775146104ac578063d505accf146104bf578063d54e65fb146104d2578063d8d2c648146104da57600080fd5b806393e30633116100ff57806393e306331461044f57806395d89b4114610462578063983b2d561461046a578063a10f84cb1461047d578063a9059cbb1461048657600080fd5b806370a08231146103e65780637ecebe00146103f95780638200b331146104195780638e8f294b1461042c57600080fd5b80633092afd5116101be57806340c10f191161018257806340c10f191461037a57806342966c681461038d578063570ca735146103a05780635a57b46f146103cb5780636866c625146103d357600080fd5b80633092afd514610329578063313ce5671461033c5780633644e5151461035657806336459f041461035e5780633eaaf86b1461037157600080fd5b806318160ddd1161020557806318160ddd146102bb57806323b30572146102c357806323b872dd146102d657806327e235e3146102e95780632ecd4e7d1461030957600080fd5b806306fdde0314610237578063095ea7b3146102555780630a6f93e614610278578063143d4e49146102a6575b600080fd5b61023f610577565b60405161024c91906116c1565b60405180910390f35b610268610263366004611732565b610605565b604051901515815260200161024c565b61029861028636600461175c565b600e6020526000908152604090205481565b60405190815260200161024c565b6102b96102b436600461175c565b610671565b005b6102986106c6565b6102b96102d136600461177e565b6106ef565b6102686102e4366004611797565b6107e7565b6102986102f736600461175c565b60076020526000908152604090205481565b61029861031736600461175c565b600c6020526000908152604090205481565b6102b961033736600461175c565b6108ef565b610344601281565b60405160ff909116815260200161024c565b610298610962565b61029861036c36600461175c565b6109b8565b61029860025481565b6102b9610388366004611732565b610a8a565b6102b961039b36600461177e565b610b11565b6003546103b3906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b6102b9610b1e565b6102b96103e136600461175c565b610b40565b6102986103f436600461175c565b610c65565b61029861040736600461175c565b60096020526000908152604090205481565b61029861042736600461175c565b610d25565b61026861043a36600461175c565b600b6020526000908152604090205460ff1681565b6102b961045d36600461175c565b610daf565b61023f610e25565b6102b961047836600461175c565b610e32565b61029860065481565b610268610494366004611732565b610ea8565b6004546103b3906001600160a01b031681565b6102b96104ba3660046117d3565b610f36565b6102b96104cd366004611815565b6110ec565b6102b9611330565b6102b96104e8366004611732565b6113d6565b61029860055481565b610298610504366004611888565b600860209081526000928352604080842090915290825290205481565b61026861052f36600461175c565b600a6020526000908152604090205460ff1681565b6102b9610552366004611732565b61146f565b61029861056536600461175c565b600d6020526000908152604090205481565b60008054610584906118bb565b80601f01602080910402602001604051908101604052809291908181526020018280546105b0906118bb565b80156105fd5780601f106105d2576101008083540402835291602001916105fd565b820191906000526020600020905b8154815290600101906020018083116105e057829003601f168201915b505050505081565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106609086815260200190565b60405180910390a350600192915050565b6003546001600160a01b031633146106a45760405162461bcd60e51b815260040161069b906118f5565b60405180910390fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600060025460055411156106da5750600090565b6005546002546106ea9190611932565b905090565b6003546001600160a01b031633146107195760405162461bcd60e51b815260040161069b906118f5565b600081116107745760405162461bcd60e51b815260206004820152602260248201527f7265706c656e6973686d656e74207072696365206d757374206265206f766572604482015261020360f41b606482015260840161069b565b620f42408111156107e25760405162461bcd60e51b815260206004820152603260248201527f5265706c656e6973686d656e742070726963652063616e6e6f742065786365656044820152713210189818102227a620903832b91022212960711b606482015260840161069b565b600655565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001981146108435761081e8382611932565b6001600160a01b03861660009081526008602090815260408083203384529091529020555b8261084d86610c65565b101561086b5760405162461bcd60e51b815260040161069b90611949565b6001600160a01b03851660009081526007602052604081208054859290610893908490611932565b90915550506001600160a01b0380851660008181526007602052604090819020805487019055519091871690600080516020611ac4833981519152906108dc9087815260200190565b60405180910390a3506001949350505050565b6003546001600160a01b031633146109195760405162461bcd60e51b815260040161069b906118f5565b6001600160a01b0381166000818152600a6020526040808220805460ff19169055517f2f91b591fc56ac0917953ad01ec225524ee5ef0555213e4c8a9d8c9728ee7ffb9190a250565b60007f00000000000000000000000000000000000000000000000000000000000000004614610993576106ea611543565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0381166000908152600c6020908152604080832054600e90925282205482906301e133809083906109f09042611932565b6109fa9190611977565b610a049190611996565b6001600160a01b038516600090815260076020908152604080832054600d9092529091205491925090610a389083906119b8565b1015610a48575060009392505050565b6001600160a01b038416600090815260076020908152604080832054600d90925290912054610a789083906119b8565b610a829190611932565b949350505050565b336000908152600a602052604090205460ff16151560011480610ab757506003546001600160a01b031633145b610b035760405162461bcd60e51b815260206004820152601860248201527f4f4e4c59204d494e54455253204f52204f50455241544f520000000000000000604482015260640161069b565b610b0d82826115dd565b5050565b610b1b3382611637565b50565b336000908152600960205260408120805491610b39836119d0565b9190505550565b6001600160a01b0381166000908152600c6020908152604080832054600e90925290912054429003610b70575050565b6001600160a01b0382166000908152600e60205260408120546301e13380908390610b9b9042611932565b610ba59190611977565b610baf9190611996565b90506000811180610bd657506001600160a01b0383166000908152600e6020526040902054155b15610c60576001600160a01b0383166000908152600d602052604081208054839290610c039084906119b8565b925050819055508060056000828254610c1c91906119b8565b90915550506001600160a01b0383166000818152600e6020908152604080832042905551848152919291600080516020611ac4833981519152910160405180910390a35b505050565b6001600160a01b0381166000908152600c6020908152604080832054600e90925282205482906301e13380908390610c9d9042611932565b610ca79190611977565b610cb19190611996565b6001600160a01b038516600090815260076020908152604080832054600d9092529091205491925090610ce59083906119b8565b1115610cf5575060009392505050565b6001600160a01b0384166000908152600d60209081526040808320546007909252909120548291610a7891611932565b6001600160a01b0381166000908152600c6020908152604080832054600e90925282205482906301e13380908390610d5d9042611932565b610d679190611977565b610d719190611996565b6001600160a01b0385166000908152600d60209081526040808320546007909252909120549192508291610da591906119e9565b610a8291906119e9565b6003546001600160a01b03163314610dd95760405162461bcd60e51b815260040161069b906118f5565b6001600160a01b0381166000818152600b6020526040808220805460ff19166001179055517fc3dfb88ee5301cecf05761fb2728064e5b641524346ae69b9ba80394631bf11f9190a250565b60018054610584906118bb565b6003546001600160a01b03163314610e5c5760405162461bcd60e51b815260040161069b906118f5565b6001600160a01b0381166000818152600a6020526040808220805460ff19166001179055517f16baa937b08d58713325f93ac58b8a9369a4359bbefb4957d6d9b402735722ab9190a250565b600081610eb433610c65565b1015610ed25760405162461bcd60e51b815260040161069b90611949565b3360009081526007602052604081208054849290610ef1908490611932565b90915550506001600160a01b03831660008181526007602052604090819020805485019055513390600080516020611ac4833981519152906106609086815260200190565b336000908152600b602052604090205460ff16610fa45760405162461bcd60e51b815260206004820152602660248201527f4f6e6c79206d61726b6574732063616e2063616c6c206f6e466f7263655265706044820152650d8cadcd2e6d60d31b606482015260840161069b565b6000610faf856109b8565b905060008111610fee5760405162461bcd60e51b815260206004820152600a602482015269139bc81919599a58da5d60b21b604482015260640161069b565b828110156110315760405162461bcd60e51b815260206004820152601060248201526f105b5bdd5b9d080f881919599a58da5d60821b604482015260640161069b565b6000612710600654856110449190611977565b61104e9190611996565b905061105986610b40565b6001600160a01b0386166000908152600c6020526040812080548392906110819084906119b8565b90915550611091905086856115dd565b604080518581526020810183905290810184905233906001600160a01b0387811691908916907f6a03700072ec60131e7e4ff249dad34d458e1e5785dbfa8146b2265997fbf6869060600160405180910390a4505050505050565b4284101561113c5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f45585049524544000000000000000000604482015260640161069b565b60006001611148610962565b6001600160a01b038a811660008181526009602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015611254573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061128a5750876001600160a01b0316816001600160a01b0316145b6112c75760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b604482015260640161069b565b6001600160a01b0390811660009081526008602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6004546001600160a01b031633146113825760405162461bcd60e51b815260206004820152601560248201527427a7262c902822a72224a7239027a822a920aa27a960591b604482015260640161069b565b60048054600380546001600160a01b0383166001600160a01b031991821681179092559091169091556040517f8eb831fe42156caaf4721a87ad40c6e662b893dbeee76d7a3ed2564a318b091c90600090a2565b336000908152600b602052604090205460ff166114355760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c79206d61726b6574732063616e2063616c6c206f6e5265706179000000604482015260640161069b565b61143e82610b40565b6001600160a01b0382166000908152600c602052604081208054839290611466908490611932565b90915550505050565b336000908152600b602052604090205460ff166114ce5760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c79206d61726b6574732063616e2063616c6c206f6e426f72726f770000604482015260640161069b565b6114d782610b40565b6114e0826109b8565b1561151b5760405162461bcd60e51b815260206004820152600b60248201526a111094881119599a58da5d60aa1b604482015260640161069b565b6001600160a01b0382166000908152600c6020526040812080548392906114669084906119b8565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516115759190611a28565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546115ef91906119b8565b90915550506001600160a01b038216600081815260076020908152604080832080548601905551848152600080516020611ac483398151915291015b60405180910390a35050565b8061164183610c65565b101561165f5760405162461bcd60e51b815260040161069b90611949565b6001600160a01b03821660009081526007602052604081208054839290611687908490611932565b90915550506002805482900390556040518181526000906001600160a01b03841690600080516020611ac48339815191529060200161162b565b600060208083528351808285015260005b818110156116ee578581018301518582016040015282016116d2565b81811115611700576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461172d57600080fd5b919050565b6000806040838503121561174557600080fd5b61174e83611716565b946020939093013593505050565b60006020828403121561176e57600080fd5b61177782611716565b9392505050565b60006020828403121561179057600080fd5b5035919050565b6000806000606084860312156117ac57600080fd5b6117b584611716565b92506117c360208501611716565b9150604084013590509250925092565b600080600080608085870312156117e957600080fd5b6117f285611716565b935061180060208601611716565b93969395505050506040820135916060013590565b600080600080600080600060e0888a03121561183057600080fd5b61183988611716565b965061184760208901611716565b95506040880135945060608801359350608088013560ff8116811461186b57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561189b57600080fd5b6118a483611716565b91506118b260208401611716565b90509250929050565b600181811c908216806118cf57607f821691505b6020821081036118ef57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600d908201526c27a7262c9027a822a920aa27a960991b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000828210156119445761194461191c565b500390565b602080825260149082015273496e73756666696369656e742062616c616e636560601b604082015260600190565b60008160001904831182151516156119915761199161191c565b500290565b6000826119b357634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156119cb576119cb61191c565b500190565b6000600182016119e2576119e261191c565b5060010190565b60008083128015600160ff1b850184121615611a0757611a0761191c565b6001600160ff1b0384018313811615611a2257611a2261191c565b50500390565b600080835481600182811c915080831680611a4457607f831692505b60208084108203611a6357634e487b7160e01b86526022600452602486fd5b818015611a775760018114611a8857611ab5565b60ff19861689528489019650611ab5565b60008a81526020902060005b86811015611aad5781548b820152908501908301611a94565b505084890196505b50949897505050505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203b6dcf74dcba5952c94f9204ff21e7856d27346b72b6c0f7426e61aaa65331f464736f6c634300080d003300000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000926df14a23be491164dcf93f4c468a50ef659d5b0000000000000000000000000000000000000000000000000000000000000014446f6c6120426f72726f77696e6720526967687400000000000000000000000000000000000000000000000000000000000000000000000000000000000000034442520000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102325760003560e01c806370a0823111610130578063ac7e534e116100b8578063dcdf770f1161007c578063dcdf770f146104ed578063dd62ed3e146104f6578063f46eccc414610521578063f7f11fb714610544578063fffdfb381461055757600080fd5b8063ac7e534e14610499578063b2c08775146104ac578063d505accf146104bf578063d54e65fb146104d2578063d8d2c648146104da57600080fd5b806393e30633116100ff57806393e306331461044f57806395d89b4114610462578063983b2d561461046a578063a10f84cb1461047d578063a9059cbb1461048657600080fd5b806370a08231146103e65780637ecebe00146103f95780638200b331146104195780638e8f294b1461042c57600080fd5b80633092afd5116101be57806340c10f191161018257806340c10f191461037a57806342966c681461038d578063570ca735146103a05780635a57b46f146103cb5780636866c625146103d357600080fd5b80633092afd514610329578063313ce5671461033c5780633644e5151461035657806336459f041461035e5780633eaaf86b1461037157600080fd5b806318160ddd1161020557806318160ddd146102bb57806323b30572146102c357806323b872dd146102d657806327e235e3146102e95780632ecd4e7d1461030957600080fd5b806306fdde0314610237578063095ea7b3146102555780630a6f93e614610278578063143d4e49146102a6575b600080fd5b61023f610577565b60405161024c91906116c1565b60405180910390f35b610268610263366004611732565b610605565b604051901515815260200161024c565b61029861028636600461175c565b600e6020526000908152604090205481565b60405190815260200161024c565b6102b96102b436600461175c565b610671565b005b6102986106c6565b6102b96102d136600461177e565b6106ef565b6102686102e4366004611797565b6107e7565b6102986102f736600461175c565b60076020526000908152604090205481565b61029861031736600461175c565b600c6020526000908152604090205481565b6102b961033736600461175c565b6108ef565b610344601281565b60405160ff909116815260200161024c565b610298610962565b61029861036c36600461175c565b6109b8565b61029860025481565b6102b9610388366004611732565b610a8a565b6102b961039b36600461177e565b610b11565b6003546103b3906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b6102b9610b1e565b6102b96103e136600461175c565b610b40565b6102986103f436600461175c565b610c65565b61029861040736600461175c565b60096020526000908152604090205481565b61029861042736600461175c565b610d25565b61026861043a36600461175c565b600b6020526000908152604090205460ff1681565b6102b961045d36600461175c565b610daf565b61023f610e25565b6102b961047836600461175c565b610e32565b61029860065481565b610268610494366004611732565b610ea8565b6004546103b3906001600160a01b031681565b6102b96104ba3660046117d3565b610f36565b6102b96104cd366004611815565b6110ec565b6102b9611330565b6102b96104e8366004611732565b6113d6565b61029860055481565b610298610504366004611888565b600860209081526000928352604080842090915290825290205481565b61026861052f36600461175c565b600a6020526000908152604090205460ff1681565b6102b9610552366004611732565b61146f565b61029861056536600461175c565b600d6020526000908152604090205481565b60008054610584906118bb565b80601f01602080910402602001604051908101604052809291908181526020018280546105b0906118bb565b80156105fd5780601f106105d2576101008083540402835291602001916105fd565b820191906000526020600020905b8154815290600101906020018083116105e057829003601f168201915b505050505081565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106609086815260200190565b60405180910390a350600192915050565b6003546001600160a01b031633146106a45760405162461bcd60e51b815260040161069b906118f5565b60405180910390fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600060025460055411156106da5750600090565b6005546002546106ea9190611932565b905090565b6003546001600160a01b031633146107195760405162461bcd60e51b815260040161069b906118f5565b600081116107745760405162461bcd60e51b815260206004820152602260248201527f7265706c656e6973686d656e74207072696365206d757374206265206f766572604482015261020360f41b606482015260840161069b565b620f42408111156107e25760405162461bcd60e51b815260206004820152603260248201527f5265706c656e6973686d656e742070726963652063616e6e6f742065786365656044820152713210189818102227a620903832b91022212960711b606482015260840161069b565b600655565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001981146108435761081e8382611932565b6001600160a01b03861660009081526008602090815260408083203384529091529020555b8261084d86610c65565b101561086b5760405162461bcd60e51b815260040161069b90611949565b6001600160a01b03851660009081526007602052604081208054859290610893908490611932565b90915550506001600160a01b0380851660008181526007602052604090819020805487019055519091871690600080516020611ac4833981519152906108dc9087815260200190565b60405180910390a3506001949350505050565b6003546001600160a01b031633146109195760405162461bcd60e51b815260040161069b906118f5565b6001600160a01b0381166000818152600a6020526040808220805460ff19169055517f2f91b591fc56ac0917953ad01ec225524ee5ef0555213e4c8a9d8c9728ee7ffb9190a250565b60007f00000000000000000000000000000000000000000000000000000000000000014614610993576106ea611543565b507fd70c5a91c034ae556adea4a4208575466a13f1986ad8d938d1032fd48eb07e7690565b6001600160a01b0381166000908152600c6020908152604080832054600e90925282205482906301e133809083906109f09042611932565b6109fa9190611977565b610a049190611996565b6001600160a01b038516600090815260076020908152604080832054600d9092529091205491925090610a389083906119b8565b1015610a48575060009392505050565b6001600160a01b038416600090815260076020908152604080832054600d90925290912054610a789083906119b8565b610a829190611932565b949350505050565b336000908152600a602052604090205460ff16151560011480610ab757506003546001600160a01b031633145b610b035760405162461bcd60e51b815260206004820152601860248201527f4f4e4c59204d494e54455253204f52204f50455241544f520000000000000000604482015260640161069b565b610b0d82826115dd565b5050565b610b1b3382611637565b50565b336000908152600960205260408120805491610b39836119d0565b9190505550565b6001600160a01b0381166000908152600c6020908152604080832054600e90925290912054429003610b70575050565b6001600160a01b0382166000908152600e60205260408120546301e13380908390610b9b9042611932565b610ba59190611977565b610baf9190611996565b90506000811180610bd657506001600160a01b0383166000908152600e6020526040902054155b15610c60576001600160a01b0383166000908152600d602052604081208054839290610c039084906119b8565b925050819055508060056000828254610c1c91906119b8565b90915550506001600160a01b0383166000818152600e6020908152604080832042905551848152919291600080516020611ac4833981519152910160405180910390a35b505050565b6001600160a01b0381166000908152600c6020908152604080832054600e90925282205482906301e13380908390610c9d9042611932565b610ca79190611977565b610cb19190611996565b6001600160a01b038516600090815260076020908152604080832054600d9092529091205491925090610ce59083906119b8565b1115610cf5575060009392505050565b6001600160a01b0384166000908152600d60209081526040808320546007909252909120548291610a7891611932565b6001600160a01b0381166000908152600c6020908152604080832054600e90925282205482906301e13380908390610d5d9042611932565b610d679190611977565b610d719190611996565b6001600160a01b0385166000908152600d60209081526040808320546007909252909120549192508291610da591906119e9565b610a8291906119e9565b6003546001600160a01b03163314610dd95760405162461bcd60e51b815260040161069b906118f5565b6001600160a01b0381166000818152600b6020526040808220805460ff19166001179055517fc3dfb88ee5301cecf05761fb2728064e5b641524346ae69b9ba80394631bf11f9190a250565b60018054610584906118bb565b6003546001600160a01b03163314610e5c5760405162461bcd60e51b815260040161069b906118f5565b6001600160a01b0381166000818152600a6020526040808220805460ff19166001179055517f16baa937b08d58713325f93ac58b8a9369a4359bbefb4957d6d9b402735722ab9190a250565b600081610eb433610c65565b1015610ed25760405162461bcd60e51b815260040161069b90611949565b3360009081526007602052604081208054849290610ef1908490611932565b90915550506001600160a01b03831660008181526007602052604090819020805485019055513390600080516020611ac4833981519152906106609086815260200190565b336000908152600b602052604090205460ff16610fa45760405162461bcd60e51b815260206004820152602660248201527f4f6e6c79206d61726b6574732063616e2063616c6c206f6e466f7263655265706044820152650d8cadcd2e6d60d31b606482015260840161069b565b6000610faf856109b8565b905060008111610fee5760405162461bcd60e51b815260206004820152600a602482015269139bc81919599a58da5d60b21b604482015260640161069b565b828110156110315760405162461bcd60e51b815260206004820152601060248201526f105b5bdd5b9d080f881919599a58da5d60821b604482015260640161069b565b6000612710600654856110449190611977565b61104e9190611996565b905061105986610b40565b6001600160a01b0386166000908152600c6020526040812080548392906110819084906119b8565b90915550611091905086856115dd565b604080518581526020810183905290810184905233906001600160a01b0387811691908916907f6a03700072ec60131e7e4ff249dad34d458e1e5785dbfa8146b2265997fbf6869060600160405180910390a4505050505050565b4284101561113c5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f45585049524544000000000000000000604482015260640161069b565b60006001611148610962565b6001600160a01b038a811660008181526009602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015611254573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061128a5750876001600160a01b0316816001600160a01b0316145b6112c75760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b604482015260640161069b565b6001600160a01b0390811660009081526008602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6004546001600160a01b031633146113825760405162461bcd60e51b815260206004820152601560248201527427a7262c902822a72224a7239027a822a920aa27a960591b604482015260640161069b565b60048054600380546001600160a01b0383166001600160a01b031991821681179092559091169091556040517f8eb831fe42156caaf4721a87ad40c6e662b893dbeee76d7a3ed2564a318b091c90600090a2565b336000908152600b602052604090205460ff166114355760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c79206d61726b6574732063616e2063616c6c206f6e5265706179000000604482015260640161069b565b61143e82610b40565b6001600160a01b0382166000908152600c602052604081208054839290611466908490611932565b90915550505050565b336000908152600b602052604090205460ff166114ce5760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c79206d61726b6574732063616e2063616c6c206f6e426f72726f770000604482015260640161069b565b6114d782610b40565b6114e0826109b8565b1561151b5760405162461bcd60e51b815260206004820152600b60248201526a111094881119599a58da5d60aa1b604482015260640161069b565b6001600160a01b0382166000908152600c6020526040812080548392906114669084906119b8565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516115759190611a28565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546115ef91906119b8565b90915550506001600160a01b038216600081815260076020908152604080832080548601905551848152600080516020611ac483398151915291015b60405180910390a35050565b8061164183610c65565b101561165f5760405162461bcd60e51b815260040161069b90611949565b6001600160a01b03821660009081526007602052604081208054839290611687908490611932565b90915550506002805482900390556040518181526000906001600160a01b03841690600080516020611ac48339815191529060200161162b565b600060208083528351808285015260005b818110156116ee578581018301518582016040015282016116d2565b81811115611700576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461172d57600080fd5b919050565b6000806040838503121561174557600080fd5b61174e83611716565b946020939093013593505050565b60006020828403121561176e57600080fd5b61177782611716565b9392505050565b60006020828403121561179057600080fd5b5035919050565b6000806000606084860312156117ac57600080fd5b6117b584611716565b92506117c360208501611716565b9150604084013590509250925092565b600080600080608085870312156117e957600080fd5b6117f285611716565b935061180060208601611716565b93969395505050506040820135916060013590565b600080600080600080600060e0888a03121561183057600080fd5b61183988611716565b965061184760208901611716565b95506040880135945060608801359350608088013560ff8116811461186b57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561189b57600080fd5b6118a483611716565b91506118b260208401611716565b90509250929050565b600181811c908216806118cf57607f821691505b6020821081036118ef57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600d908201526c27a7262c9027a822a920aa27a960991b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000828210156119445761194461191c565b500390565b602080825260149082015273496e73756666696369656e742062616c616e636560601b604082015260600190565b60008160001904831182151516156119915761199161191c565b500290565b6000826119b357634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156119cb576119cb61191c565b500190565b6000600182016119e2576119e261191c565b5060010190565b60008083128015600160ff1b850184121615611a0757611a0761191c565b6001600160ff1b0384018313811615611a2257611a2261191c565b50500390565b600080835481600182811c915080831680611a4457607f831692505b60208084108203611a6357634e487b7160e01b86526022600452602486fd5b818015611a775760018114611a8857611ab5565b60ff19861689528489019650611ab5565b60008a81526020902060005b86811015611aad5781548b820152908501908301611a94565b505084890196505b50949897505050505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203b6dcf74dcba5952c94f9204ff21e7856d27346b72b6c0f7426e61aaa65331f464736f6c634300080d0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000926df14a23be491164dcf93f4c468a50ef659d5b0000000000000000000000000000000000000000000000000000000000000014446f6c6120426f72726f77696e6720526967687400000000000000000000000000000000000000000000000000000000000000000000000000000000000000034442520000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _replenishmentPriceBps (uint256): 100000
Arg [1] : _name (string): Dola Borrowing Right
Arg [2] : _symbol (string): DBR
Arg [3] : _operator (address): 0x926dF14a23BE491164dCF93f4c468A50ef659D5B

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000186a0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [3] : 000000000000000000000000926df14a23be491164dcf93f4c468a50ef659d5b
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [5] : 446f6c6120426f72726f77696e67205269676874000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [7] : 4442520000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

348:15793:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;386:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6795:213;;;;;;:::i;:::-;;:::i;:::-;;;1218:14:1;;1211:22;1193:41;;1181:2;1166:18;6795:213:0;1053:187:1;1216:44:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1582:25:1;;;1570:2;1555:18;1216:44:0;1436:177:1;2023:119:0;;;;;;:::i;:::-;;:::i;:::-;;4454:172;;;:::i;2454:353::-;;;;;;:::i;:::-;;:::i;8018:520::-;;;;;;:::i;:::-;;:::i;661:43::-;;;;;;:::i;:::-;;;;;;;;;;;;;;1032:38;;;;;;:::i;:::-;;;;;;;;;;;;;;3647:139;;;;;;:::i;:::-;;:::i;438:35::-;;471:2;438:35;;;;;2308:4:1;2296:17;;;2278:36;;2266:2;2251:18;438:35:0;2136:184:1;10712:179:0;;;:::i;5655:323::-;;;;;;:::i;:::-;;:::i;480:27::-;;;;;;14595:183;;;;;;:::i;:::-;;:::i;14306:78::-;;;;;;:::i;:::-;;:::i;514:23::-;;;;;-1:-1:-1;;;;;514:23:0;;;;;;-1:-1:-1;;;;;2671:32:1;;;2653:51;;2641:2;2626:18;514:23:0;2507:203:1;10631:73:0;;;:::i;11564:490::-;;;;;;:::i;:::-;;:::i;4985:323::-;;;;;;:::i;:::-;;:::i;890:41::-;;;;;;:::i;:::-;;;;;;;;;;;;;;6241:270;;;;;;:::i;:::-;;:::i;985:40::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4085:132;;;;;;:::i;:::-;;:::i;411:20::-;;;:::i;3313:132::-;;;;;;:::i;:::-;;:::i;621:33::-;;;;;;7254:339;;;;;;:::i;:::-;;:::i;544:30::-;;;;;-1:-1:-1;;;;;544:30:0;;;13543:623;;;;;;:::i;:::-;;:::i;9149:1387::-;;;;;;:::i;:::-;;:::i;2902:230::-;;;:::i;12916:203::-;;;;;;:::i;:::-;;:::i;581:33::-;;;;;;711:64;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;938:40;;;;;;:::i;:::-;;;;;;;;;;;;;;;;12353:268;;;;;;:::i;:::-;;:::i;1120:49::-;;;;;;:::i;:::-;;;;;;;;;;;;;;386:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6795:213::-;6896:10;6869:4;6886:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;6886:30:0;;;;;;;;;;:39;;;6941:37;6869:4;;6886:30;;6941:37;;;;6919:6;1582:25:1;;1570:2;1555:18;;1436:177;6941:37:0;;;;;;;;-1:-1:-1;6996:4:0;6795:213;;;;:::o;2023:119::-;1763:8;;-1:-1:-1;;;;;1763:8:0;1749:10;:22;1741:48;;;;-1:-1:-1;;;1741:48:0;;;;;;;:::i;:::-;;;;;;;;;2104:15:::1;:30:::0;;-1:-1:-1;;;;;;2104:30:0::1;-1:-1:-1::0;;;;;2104:30:0;;;::::1;::::0;;;::::1;::::0;;2023:119::o;4454:172::-;4498:4;4542:12;;4518:21;;:36;4515:49;;;-1:-1:-1;4563:1:0;;4454:172::o;4515:49::-;4597:21;;4582:12;;:36;;;;:::i;:::-;4575:43;;4454:172;:::o;2454:353::-;1763:8;;-1:-1:-1;;;;;1763:8:0;1749:10;:22;1741:48;;;;-1:-1:-1;;;1741:48:0;;;;;;;:::i;:::-;2587:1:::1;2559:25;:29;2551:76;;;::::0;-1:-1:-1;;;2551:76:0;;5451:2:1;2551:76:0::1;::::0;::::1;5433:21:1::0;5490:2;5470:18;;;5463:30;5529:34;5509:18;;;5502:62;-1:-1:-1;;;5580:18:1;;;5573:32;5622:19;;2551:76:0::1;5249:398:1::0;2551:76:0::1;2675:9;2646:25;:38;;2638:101;;;::::0;-1:-1:-1;;;2638:101:0;;5854:2:1;2638:101:0::1;::::0;::::1;5836:21:1::0;5893:2;5873:18;;;5866:30;5932:34;5912:18;;;5905:62;-1:-1:-1;;;5983:18:1;;;5976:48;6041:19;;2638:101:0::1;5652:414:1::0;2638:101:0::1;2750:21;:49:::0;2454:353::o;8018:520::-;-1:-1:-1;;;;;8175:15:0;;8140:4;8175:15;;;:9;:15;;;;;;;;8191:10;8175:27;;;;;;;;-1:-1:-1;;8217:28:0;;8213:80;;8277:16;8287:6;8277:7;:16;:::i;:::-;-1:-1:-1;;;;;8247:15:0;;;;;;:9;:15;;;;;;;;8263:10;8247:27;;;;;;;:46;8213:80;8331:6;8312:15;8322:4;8312:9;:15::i;:::-;:25;;8304:58;;;;-1:-1:-1;;;8304:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8373:14:0;;;;;;:8;:14;;;;;:24;;8391:6;;8373:14;:24;;8391:6;;8373:24;:::i;:::-;;;;-1:-1:-1;;;;;;;8433:12:0;;;;;;;:8;:12;;;;;;;:22;;;;;;8482:26;8433:12;;8482:26;;;-1:-1:-1;;;;;;;;;;;8482:26:0;;;8449:6;1582:25:1;;1570:2;1555:18;;1436:177;8482:26:0;;;;;;;;-1:-1:-1;8526:4:0;;8018:520;-1:-1:-1;;;;8018:520:0:o;3647:139::-;1763:8;;-1:-1:-1;;;;;1763:8:0;1749:10;:22;1741:48;;;;-1:-1:-1;;;1741:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3717:16:0;::::1;3736:5;3717:16:::0;;;:7:::1;:16;::::0;;;;;:24;;-1:-1:-1;;3717:24:0::1;::::0;;3757:21;::::1;::::0;3736:5;3757:21:::1;3647:139:::0;:::o;10712:179::-;10769:7;10813:16;10796:13;:33;:87;;10859:24;:22;:24::i;10796:87::-;-1:-1:-1;10832:24:0;;10712:179::o;5655:323::-;-1:-1:-1;;;;;5738:11:0;;5709:4;5738:11;;;:5;:11;;;;;;;;;5794;:17;;;;;;5709:4;;5822:8;;5738:11;;5776:35;;:15;:35;:::i;:::-;5775:44;;;;:::i;:::-;:55;;;;:::i;:::-;-1:-1:-1;;;;;5879:14:0;;;;;;:8;:14;;;;;;;;;5844:16;:22;;;;;;;5760:70;;-1:-1:-1;5879:14:0;5844:32;;5760:70;;5844:32;:::i;:::-;:49;5841:62;;;-1:-1:-1;5902:1:0;;5655:323;-1:-1:-1;;;5655:323:0:o;5841:62::-;-1:-1:-1;;;;;5956:14:0;;;;;;:8;:14;;;;;;;;;5921:16;:22;;;;;;;:32;;5946:7;;5921:32;:::i;:::-;:49;;;;:::i;:::-;5914:56;5655:323;-1:-1:-1;;;;5655:323:0:o;14595:183::-;14668:10;14660:19;;;;:7;:19;;;;;;;;:27;;:19;:27;;:53;;-1:-1:-1;14705:8:0;;-1:-1:-1;;;;;14705:8:0;14691:10;:22;14660:53;14652:90;;;;-1:-1:-1;;;14652:90:0;;7150:2:1;14652:90:0;;;7132:21:1;7189:2;7169:18;;;7162:30;7228:26;7208:18;;;7201:54;7272:18;;14652:90:0;6948:348:1;14652:90:0;14753:17;14759:2;14763:6;14753:5;:17::i;:::-;14595:183;;:::o;14306:78::-;14351:25;14357:10;14369:6;14351:5;:25::i;:::-;14306:78;:::o;10631:73::-;10683:10;10676:18;;;;:6;:18;;;;;:20;;;;;;:::i;:::-;;;;;;10631:73::o;11564:490::-;-1:-1:-1;;;;;11633:11:0;;11621:9;11633:11;;;:5;:11;;;;;;;;;11658;:17;;;;;;;11679:15;11658:36;;11655:48;;11696:7;11564:490;:::o;11655:48::-;-1:-1:-1;;;;;11747:17:0;;11713:12;11747:17;;;:11;:17;;;;;;11775:8;;11768:4;;11729:35;;:15;:35;:::i;:::-;11728:44;;;;:::i;:::-;:55;;;;:::i;:::-;11713:70;;11807:1;11797:7;:11;:37;;;-1:-1:-1;;;;;;11812:17:0;;;;;;:11;:17;;;;;;:22;11797:37;11794:253;;;-1:-1:-1;;;;;11850:22:0;;;;;;:16;:22;;;;;:33;;11876:7;;11850:22;:33;;11876:7;;11850:33;:::i;:::-;;;;;;;;11923:7;11898:21;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;11945:17:0;;;;;;:11;:17;;;;;;;;11965:15;11945:35;;12000;1582:25:1;;;11945:17:0;;;-1:-1:-1;;;;;;;;;;;12000:35:0;1555:18:1;12000:35:0;;;;;;;11794:253;11610:444;;11564:490;:::o;4985:323::-;-1:-1:-1;;;;;5068:11:0;;5039:4;5068:11;;;:5;:11;;;;;;;;;5124;:17;;;;;;5039:4;;5152:8;;5068:11;;5106:35;;:15;:35;:::i;:::-;5105:44;;;;:::i;:::-;:55;;;;:::i;:::-;-1:-1:-1;;;;;5209:14:0;;;;;;:8;:14;;;;;;;;;5174:16;:22;;;;;;;5090:70;;-1:-1:-1;5209:14:0;5174:32;;5090:70;;5174:32;:::i;:::-;:49;5171:62;;;-1:-1:-1;5232:1:0;;4985:323;-1:-1:-1;;;4985:323:0:o;5171:62::-;-1:-1:-1;;;;;5268:22:0;;;;;;:16;:22;;;;;;;;;5251:8;:14;;;;;;;5293:7;;5251:39;;;:::i;6241:270::-;-1:-1:-1;;;;;6329:11:0;;6301:3;6329:11;;;:5;:11;;;;;;;;;6385;:17;;;;;;6301:3;;6413:8;;6329:11;;6367:35;;:15;:35;:::i;:::-;6366:44;;;;:::i;:::-;:55;;;;:::i;:::-;-1:-1:-1;;;;;6465:22:0;;;;;;:16;:22;;;;;;;;;6443:8;:14;;;;;;;6351:70;;-1:-1:-1;6351:70:0;;6439:49;;6465:22;6439:49;:::i;:::-;:64;;;;:::i;4085:132::-;1763:8;;-1:-1:-1;;;;;1763:8:0;1749:10;:22;1741:48;;;;-1:-1:-1;;;1741:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4152:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;:23;;-1:-1:-1;;4152:23:0::1;4171:4;4152:23;::::0;;4191:18;::::1;::::0;4152:16;4191:18:::1;4085:132:::0;:::o;411:20::-;;;;;;;:::i;3313:132::-;1763:8;;-1:-1:-1;;;;;1763:8:0;1749:10;:22;1741:48;;;;-1:-1:-1;;;1741:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3380:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;:23;;-1:-1:-1;;3380:23:0::1;3399:4;3380:23;::::0;;3419:18;::::1;::::0;3380:16;3419:18:::1;3313:132:::0;:::o;7254:339::-;7324:4;7374:6;7349:21;7359:10;7349:9;:21::i;:::-;:31;;7341:64;;;;-1:-1:-1;;;7341:64:0;;;;;;;:::i;:::-;7425:10;7416:20;;;;:8;:20;;;;;:30;;7440:6;;7416:20;:30;;7440:6;;7416:30;:::i;:::-;;;;-1:-1:-1;;;;;;;7482:12:0;;;;;;:8;:12;;;;;;;:22;;;;;;7531:32;7540:10;;-1:-1:-1;;;;;;;;;;;7531:32:0;;;7498:6;1582:25:1;;1570:2;1555:18;;1436:177;13543:623:0;13675:10;13667:19;;;;:7;:19;;;;;;;;13659:70;;;;-1:-1:-1;;;13659:70:0;;7915:2:1;13659:70:0;;;7897:21:1;7954:2;7934:18;;;7927:30;7993:34;7973:18;;;7966:62;-1:-1:-1;;;8044:18:1;;;8037:36;8090:19;;13659:70:0;7713:402:1;13659:70:0;13740:12;13755:15;13765:4;13755:9;:15::i;:::-;13740:30;;13799:1;13789:7;:11;13781:34;;;;-1:-1:-1;;;13781:34:0;;8322:2:1;13781:34:0;;;8304:21:1;8361:2;8341:18;;;8334:30;-1:-1:-1;;;8380:18:1;;;8373:40;8430:18;;13781:34:0;8120:334:1;13781:34:0;13845:6;13834:7;:17;;13826:46;;;;-1:-1:-1;;;13826:46:0;;8661:2:1;13826:46:0;;;8643:21:1;8700:2;8680:18;;;8673:30;-1:-1:-1;;;8719:18:1;;;8712:46;8775:18;;13826:46:0;8459:340:1;13826:46:0;13883:22;13941:5;13917:21;;13908:6;:30;;;;:::i;:::-;:38;;;;:::i;:::-;13883:63;;13957:21;13973:4;13957:15;:21::i;:::-;-1:-1:-1;;;;;13989:11:0;;;;;;:5;:11;;;;;:32;;14004:17;;13989:11;:32;;14004:17;;13989:32;:::i;:::-;;;;-1:-1:-1;14032:19:0;;-1:-1:-1;14038:4:0;14044:6;14032:5;:19::i;:::-;14067:91;;;9006:25:1;;;9062:2;9047:18;;9040:34;;;9090:18;;;9083:34;;;14101:10:0;;-1:-1:-1;;;;;14067:91:0;;;;;;;;;;8994:2:1;8979:18;14067:91:0;;;;;;;13648:518;;13543:623;;;;:::o;9149:1387::-;9377:15;9365:8;:27;;9357:63;;;;-1:-1:-1;;;9357:63:0;;9330:2:1;9357:63:0;;;9312:21:1;9369:2;9349:18;;;9342:30;9408:25;9388:18;;;9381:53;9451:18;;9357:63:0;9128:347:1;9357:63:0;9456:24;9483:827;9623:18;:16;:18::i;:::-;-1:-1:-1;;;;;10077:13:0;;;;;;;:6;:13;;;;;;;;;:15;;;;;;;;9708:458;;9753:167;9708:458;;;9767:25:1;9846:18;;;9839:43;;;;9918:15;;;9898:18;;;9891:43;9950:18;;;9943:34;;;9993:19;;;9986:35;;;;10037:19;;;;10030:35;;;9708:458:0;;;;;;;;;;9739:19:1;;;9708:458:0;;;9668:525;;;;;;;;-1:-1:-1;;;9543:673:0;;;10334:27:1;10377:11;;;10370:27;;;;10413:12;;;10406:28;;;;10450:12;;9543:673:0;;;-1:-1:-1;;9543:673:0;;;;;;;;;9511:724;;9543:673;9511:724;;;;9483:827;;;;;;;;;10700:25:1;10773:4;10761:17;;10741:18;;;10734:45;10795:18;;;10788:34;;;10838:18;;;10831:34;;;10672:19;;9483:827:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9483:827:0;;-1:-1:-1;;9483:827:0;;;-1:-1:-1;;;;;;;10333:30:0;;;;;;:59;;;10387:5;-1:-1:-1;;;;;10367:25:0;:16;-1:-1:-1;;;;;10367:25:0;;10333:59;10325:86;;;;-1:-1:-1;;;10325:86:0;;11078:2:1;10325:86:0;;;11060:21:1;11117:2;11097:18;;;11090:30;-1:-1:-1;;;11136:18:1;;;11129:44;11190:18;;10325:86:0;10876:338:1;10325:86:0;-1:-1:-1;;;;;10426:27:0;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:44;;;10497:31;1582:25:1;;;10426:36:0;;10497:31;;;;;1555:18:1;10497:31:0;;;;;;;9149:1387;;;;;;;:::o;2902:230::-;2967:15;;-1:-1:-1;;;;;2967:15:0;2953:10;:29;2945:63;;;;-1:-1:-1;;;2945:63:0;;11421:2:1;2945:63:0;;;11403:21:1;11460:2;11440:18;;;11433:30;-1:-1:-1;;;11479:18:1;;;11472:51;11540:18;;2945:63:0;11219:345:1;2945:63:0;3030:15;;;3019:8;:26;;-1:-1:-1;;;;;3030:15:0;;-1:-1:-1;;;;;;3019:26:0;;;;;;;;3056:28;;;;;;3100:24;;;;-1:-1:-1;;3100:24:0;2902:230::o;12916:203::-;12998:10;12990:19;;;;:7;:19;;;;;;;;12982:61;;;;-1:-1:-1;;;12982:61:0;;11771:2:1;12982:61:0;;;11753:21:1;11810:2;11790:18;;;11783:30;11849:31;11829:18;;;11822:59;11898:18;;12982:61:0;11569:353:1;12982:61:0;13054:21;13070:4;13054:15;:21::i;:::-;-1:-1:-1;;;;;13086:11:0;;;;;;:5;:11;;;;;:25;;13101:10;;13086:11;:25;;13101:10;;13086:25;:::i;:::-;;;;-1:-1:-1;;;;12916:203:0:o;12353:268::-;12440:10;12432:19;;;;:7;:19;;;;;;;;12424:62;;;;-1:-1:-1;;;12424:62:0;;12129:2:1;12424:62:0;;;12111:21:1;12168:2;12148:18;;;12141:30;12207:32;12187:18;;;12180:60;12257:18;;12424:62:0;11927:354:1;12424:62:0;12497:21;12513:4;12497:15;:21::i;:::-;12537:15;12547:4;12537:9;:15::i;:::-;:20;12529:44;;;;-1:-1:-1;;;12529:44:0;;12488:2:1;12529:44:0;;;12470:21:1;12527:2;12507:18;;;12500:30;-1:-1:-1;;;12546:18:1;;;12539:41;12597:18;;12529:44:0;12286:335:1;12529:44:0;-1:-1:-1;;;;;12584:11:0;;;;;;:5;:11;;;;;:29;;12599:14;;12584:11;:29;;12599:14;;12584:29;:::i;10899:457::-;10964:7;11065:95;11199:4;11183:22;;;;;;:::i;:::-;;;;;;;;;;11032:301;;;14123:25:1;;;;14164:18;;14157:34;;;;11228:14:0;14207:18:1;;;14200:34;11265:13:0;14250:18:1;;;14243:34;11309:4:0;14293:19:1;;;14286:61;14095:19;;11032:301:0;;;;;;;;;;;;11004:344;;;;;;10984:364;;10899:457;:::o;14932:218::-;15019:6;15003:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;15061:12:0;;;;;;:8;:12;;;;;;;;:22;;;;;;15110:32;1582:25:1;;;-1:-1:-1;;;;;;;;;;;15110:32:0;1555:18:1;15110:32:0;;;;;;;;14932:218;;:::o;15313:293::-;15413:6;15394:15;15404:4;15394:9;:15::i;:::-;:25;;15386:58;;;;-1:-1:-1;;;15386:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15455:14:0;;;;;;:8;:14;;;;;:24;;15473:6;;15455:14;:24;;15473:6;;15455:24;:::i;:::-;;;;-1:-1:-1;;15515:12:0;:22;;;;;;;15564:34;;1582:25:1;;;-1:-1:-1;;;;;;;15564:34:0;;;-1:-1:-1;;;;;;;;;;;15564:34:0;1570:2:1;1555:18;15564:34:0;1436:177:1;14:597;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:173::-;684:20;;-1:-1:-1;;;;;733:31:1;;723:42;;713:70;;779:1;776;769:12;713:70;616:173;;;:::o;794:254::-;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;962:29;981:9;962:29;:::i;:::-;952:39;1038:2;1023:18;;;;1010:32;;-1:-1:-1;;;794:254:1:o;1245:186::-;1304:6;1357:2;1345:9;1336:7;1332:23;1328:32;1325:52;;;1373:1;1370;1363:12;1325:52;1396:29;1415:9;1396:29;:::i;:::-;1386:39;1245:186;-1:-1:-1;;;1245:186:1:o;1618:180::-;1677:6;1730:2;1718:9;1709:7;1705:23;1701:32;1698:52;;;1746:1;1743;1736:12;1698:52;-1:-1:-1;1769:23:1;;1618:180;-1:-1:-1;1618:180:1:o;1803:328::-;1880:6;1888;1896;1949:2;1937:9;1928:7;1924:23;1920:32;1917:52;;;1965:1;1962;1955:12;1917:52;1988:29;2007:9;1988:29;:::i;:::-;1978:39;;2036:38;2070:2;2059:9;2055:18;2036:38;:::i;:::-;2026:48;;2121:2;2110:9;2106:18;2093:32;2083:42;;1803:328;;;;;:::o;2895:397::-;2981:6;2989;2997;3005;3058:3;3046:9;3037:7;3033:23;3029:33;3026:53;;;3075:1;3072;3065:12;3026:53;3098:29;3117:9;3098:29;:::i;:::-;3088:39;;3146:38;3180:2;3169:9;3165:18;3146:38;:::i;:::-;2895:397;;3136:48;;-1:-1:-1;;;;3231:2:1;3216:18;;3203:32;;3282:2;3267:18;3254:32;;2895:397::o;3297:693::-;3408:6;3416;3424;3432;3440;3448;3456;3509:3;3497:9;3488:7;3484:23;3480:33;3477:53;;;3526:1;3523;3516:12;3477:53;3549:29;3568:9;3549:29;:::i;:::-;3539:39;;3597:38;3631:2;3620:9;3616:18;3597:38;:::i;:::-;3587:48;;3682:2;3671:9;3667:18;3654:32;3644:42;;3733:2;3722:9;3718:18;3705:32;3695:42;;3787:3;3776:9;3772:19;3759:33;3832:4;3825:5;3821:16;3814:5;3811:27;3801:55;;3852:1;3849;3842:12;3801:55;3297:693;;;;-1:-1:-1;3297:693:1;;;;3875:5;3927:3;3912:19;;3899:33;;-1:-1:-1;3979:3:1;3964:19;;;3951:33;;3297:693;-1:-1:-1;;3297:693:1:o;3995:260::-;4063:6;4071;4124:2;4112:9;4103:7;4099:23;4095:32;4092:52;;;4140:1;4137;4130:12;4092:52;4163:29;4182:9;4163:29;:::i;:::-;4153:39;;4211:38;4245:2;4234:9;4230:18;4211:38;:::i;:::-;4201:48;;3995:260;;;;;:::o;4260:380::-;4339:1;4335:12;;;;4382;;;4403:61;;4457:4;4449:6;4445:17;4435:27;;4403:61;4510:2;4502:6;4499:14;4479:18;4476:38;4473:161;;4556:10;4551:3;4547:20;4544:1;4537:31;4591:4;4588:1;4581:15;4619:4;4616:1;4609:15;4473:161;;4260:380;;;:::o;4645:337::-;4847:2;4829:21;;;4886:2;4866:18;;;4859:30;-1:-1:-1;;;4920:2:1;4905:18;;4898:43;4973:2;4958:18;;4645:337::o;4987:127::-;5048:10;5043:3;5039:20;5036:1;5029:31;5079:4;5076:1;5069:15;5103:4;5100:1;5093:15;5119:125;5159:4;5187:1;5184;5181:8;5178:34;;;5192:18;;:::i;:::-;-1:-1:-1;5229:9:1;;5119:125::o;6071:344::-;6273:2;6255:21;;;6312:2;6292:18;;;6285:30;-1:-1:-1;;;6346:2:1;6331:18;;6324:50;6406:2;6391:18;;6071:344::o;6420:168::-;6460:7;6526:1;6522;6518:6;6514:14;6511:1;6508:21;6503:1;6496:9;6489:17;6485:45;6482:71;;;6533:18;;:::i;:::-;-1:-1:-1;6573:9:1;;6420:168::o;6593:217::-;6633:1;6659;6649:132;;6703:10;6698:3;6694:20;6691:1;6684:31;6738:4;6735:1;6728:15;6766:4;6763:1;6756:15;6649:132;-1:-1:-1;6795:9:1;;6593:217::o;6815:128::-;6855:3;6886:1;6882:6;6879:1;6876:13;6873:39;;;6892:18;;:::i;:::-;-1:-1:-1;6928:9:1;;6815:128::o;7301:135::-;7340:3;7361:17;;;7358:43;;7381:18;;:::i;:::-;-1:-1:-1;7428:1:1;7417:13;;7301:135::o;7441:267::-;7480:4;7509:9;;;7534:10;;-1:-1:-1;;;7553:19:1;;7546:27;;7530:44;7527:70;;;7577:18;;:::i;:::-;-1:-1:-1;;;;;7624:27:1;;7617:35;;7609:44;;7606:70;;;7656:18;;:::i;:::-;-1:-1:-1;;7693:9:1;;7441:267::o;12755:1104::-;12885:3;12914:1;12947:6;12941:13;12977:3;12999:1;13027:9;13023:2;13019:18;13009:28;;13087:2;13076:9;13072:18;13109;13099:61;;13153:4;13145:6;13141:17;13131:27;;13099:61;13179:2;13227;13219:6;13216:14;13196:18;13193:38;13190:165;;-1:-1:-1;;;13254:33:1;;13310:4;13307:1;13300:15;13340:4;13261:3;13328:17;13190:165;13371:18;13398:104;;;;13516:1;13511:323;;;;13364:470;;13398:104;-1:-1:-1;;13431:24:1;;13419:37;;13476:16;;;;-1:-1:-1;13398:104:1;;13511:323;12702:1;12695:14;;;12739:4;12726:18;;13609:1;13623:165;13637:6;13634:1;13631:13;13623:165;;;13715:14;;13702:11;;;13695:35;13758:16;;;;13652:10;;13623:165;;;13627:3;;13817:6;13812:3;13808:16;13801:23;;13364:470;-1:-1:-1;13850:3:1;;12755:1104;-1:-1:-1;;;;;;;;12755:1104:1:o

Swarm Source

ipfs://3b6dcf74dcba5952c94f9204ff21e7856d27346b72b6c0f7426e61aaa65331f4
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.