Contract Address Details

0xAaA5a514da4292aF5C9832b5FA9713847d998E2e

Token
DEX MACHINA (DEXAI)
Creator
0x04c387–6b623f at 0xc1f155–82d531
Balance
0 Doge
Tokens
Fetching tokens...
Transactions
239 Transactions
Transfers
0 Transfers
Gas Used
11,721,713
Last Balance Update
25156502
Contract name:
DOG20




Optimization enabled
true
Compiler version
v0.8.6+commit.11564f7e




Optimization runs
200
EVM Version
default




Verified at
2023-06-06T03:27:37.333150Z

Constructor Arguments

0x00000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000052b7d2dcc80cd2e400000000000000000000000000000004c387ed7ef978fe0a79efb4a8ff07d38f6b623f0000000000000000000000007b4328c127b85369d9f82ca0503b000d09cf9180000000000000000000000000cc76c4231294d7d415f8f1b3317dfbb10f90c49900000000000000000000000000000000000000000000021e19e0c9bab2400000000000000000000000000000000000000000000000000000000000000000000b444558204d414348494e4100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054445584149000000000000000000000000000000000000000000000000000000

Arg [0] (string) : DEX MACHINA
Arg [1] (string) : DEXAI
Arg [2] (uint8) : 18
Arg [3] (uint256) : 100000000000000000000000000
Arg [4] (address) : 0x04c387ed7ef978fe0a79efb4a8ff07d38f6b623f
Arg [5] (address) : 0x7b4328c127b85369d9f82ca0503b000d09cf9180
Arg [6] (address) : 0xcc76c4231294d7d415f8f1b3317dfbb10f90c499
Arg [7] (uint256) : 10000000000000000000000

              

contracts/tokens/DOG20.sol

// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0;

interface IDOG20 {
  function mint(address to, uint256 amount) external;
  function burn(address to, uint256 amount) external;
  function transfer(address to, uint256 amount) external returns (bool);
  function allowance(address owner, address spender) external view returns (uint256);
  function approve(address spender, uint256 amount) external returns (bool);
  function transferFrom(address from, address to, uint256 amount) external returns (bool);
  function balanceOf(address account) external view returns (uint256);
  function totalSupply() external view returns (uint256);
}


contract DOG20 {

    event Transfer(address indexed from, address indexed to, uint256 amount);

    event Approval(address indexed owner, address indexed spender, uint256 amount);

    bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)");

    bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

    string public name;

    string public symbol;

    uint8 public immutable decimals;

    uint256 public totalSupply;

    mapping(address => uint256) public balanceOf;

    mapping(address => mapping(address => uint256)) public allowance;

    bytes32 internal immutable DOMAIN_SEPARATOR;

    mapping(address => uint256) public nonces;

    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals,
        uint256 _totalSupply,
        address _tokenReceiver,
        address _feeToken,
        address _feeReceiver,
        uint256 _feeAmount
    ) payable {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        
        DOMAIN_SEPARATOR = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), keccak256("1"), block.chainid, address(this)));
        _mint(_tokenReceiver, _totalSupply);

        if (_feeToken == address(0)) {
            require(msg.value >= _feeAmount, "Insufficient balance");
            payable(_feeReceiver).transfer(msg.value);
        } else {
            require(IDOG20(_feeToken).balanceOf(msg.sender) >= _feeAmount, "Insufficient balance");
            require(IDOG20(_feeToken).allowance(msg.sender, address(this)) >= _feeAmount, "Insufficient allowance");
            IDOG20(_feeToken).transferFrom(msg.sender, _feeReceiver, _feeAmount);
        }
    }

    function approve(address spender, uint256 amount) external returns (bool) {
        allowance[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);

        return true;
    }

    function transfer(address to, uint256 amount) external returns (bool) {
        balanceOf[msg.sender] -= amount;

        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(msg.sender, to, amount);

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool) {
        uint256 allowed = allowance[from][msg.sender];

        if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;

        balanceOf[from] -= amount;

        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(from, to, amount);

        return true;
    }

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external {
        require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");

        unchecked {
            bytes32 hashStruct = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline));

            bytes32 hash = keccak256(abi.encodePacked("\x19\x01", DOMAIN_SEPARATOR, hashStruct));

            address signer = ecrecover(hash, v, r, s);

            require(signer != address(0) && signer == owner, "INVALID_SIGNER");

            allowance[owner][spender] = value;
        }

        emit Approval(owner, spender, value);
    }

    function _mint(address to, uint256 amount) internal {
        totalSupply += amount;

        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(address(0), to, amount);
    }

    function burn(uint256 amount) external {
        balanceOf[msg.sender] -= amount;

        unchecked {
            totalSupply -= amount;
        }

        emit Transfer(msg.sender, address(0), amount);
    }
}
        

Contract ABI

[{"type":"constructor","inputs":[{"type":"string","name":"_name","internalType":"string"},{"type":"string","name":"_symbol","internalType":"string"},{"type":"uint8","name":"_decimals","internalType":"uint8"},{"type":"uint256","name":"_totalSupply","internalType":"uint256"},{"type":"address","name":"_tokenReceiver","internalType":"address"},{"type":"address","name":"_feeToken","internalType":"address"},{"type":"address","name":"_feeReceiver","internalType":"address"},{"type":"uint256","name":"_feeAmount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bytes32","name":"","internalType":"bytes32"}],"name":"DOMAIN_TYPEHASH","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bytes32","name":"","internalType":"bytes32"}],"name":"PERMIT_TYPEHASH","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"","internalType":"address"},{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"burn","inputs":[{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"nonces","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"permit","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"},{"type":"uint256","name":"deadline","internalType":"uint256"},{"type":"uint8","name":"v","internalType":"uint8"},{"type":"bytes32","name":"r","internalType":"bytes32"},{"type":"bytes32","name":"s","internalType":"bytes32"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"from","internalType":"address"},{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"spender","indexed":true},{"type":"uint256","name":"amount","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"amount","indexed":false}],"anonymous":false}]
            

Contract Creation Code

0x60c06040526040516200126538038062001265833981016040819052620000269162000613565b87516200003b9060009060208b01906200046e565b508651620000519060019060208a01906200046e565b507fff0000000000000000000000000000000000000000000000000000000000000060f887901b166080526040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f90620000af90600090620006fd565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f19818403018152919052805160209091012060a05262000123848662000401565b6001600160a01b038316620001c55780341015620001885760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e636500000000000000000000000060448201526064015b60405180910390fd5b6040516001600160a01b038316903480156108fc02916000818181858888f19350505050158015620001be573d6000803e3d6000fd5b50620003f3565b6040516370a0823160e01b815233600482015281906001600160a01b038516906370a082319060240160206040518083038186803b1580156200020757600080fd5b505afa1580156200021c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002429190620006e3565b1015620002925760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e636500000000000000000000000060448201526064016200017f565b604051636eb1769f60e11b815233600482015230602482015281906001600160a01b0385169063dd62ed3e9060440160206040518083038186803b158015620002da57600080fd5b505afa158015620002ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003159190620006e3565b1015620003655760405162461bcd60e51b815260206004820152601660248201527f496e73756666696369656e7420616c6c6f77616e63650000000000000000000060448201526064016200017f565b6040516323b872dd60e01b81523360048201526001600160a01b038381166024830152604482018390528416906323b872dd90606401602060405180830381600087803b158015620003b657600080fd5b505af1158015620003cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f19190620005e8565b505b50505050505050506200081b565b8060026000828254620004159190620007a1565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b8280546200047c90620007c8565b90600052602060002090601f016020900481019282620004a05760008555620004eb565b82601f10620004bb57805160ff1916838001178555620004eb565b82800160010185558215620004eb579182015b82811115620004eb578251825591602001919060010190620004ce565b50620004f9929150620004fd565b5090565b5b80821115620004f95760008155600101620004fe565b80516001600160a01b03811681146200052c57600080fd5b919050565b600082601f8301126200054357600080fd5b81516001600160401b038082111562000560576200056062000805565b604051601f8301601f19908116603f011681019082821181831017156200058b576200058b62000805565b81604052838152602092508683858801011115620005a857600080fd5b600091505b83821015620005cc5785820183015181830184015290820190620005ad565b83821115620005de5760008385830101525b9695505050505050565b600060208284031215620005fb57600080fd5b815180151581146200060c57600080fd5b9392505050565b600080600080600080600080610100898b0312156200063157600080fd5b88516001600160401b03808211156200064957600080fd5b620006578c838d0162000531565b995060208b01519150808211156200066e57600080fd5b506200067d8b828c0162000531565b975050604089015160ff811681146200069557600080fd5b60608a01519096509450620006ad60808a0162000514565b9350620006bd60a08a0162000514565b9250620006cd60c08a0162000514565b915060e089015190509295985092959890939650565b600060208284031215620006f657600080fd5b5051919050565b600080835481600182811c9150808316806200071a57607f831692505b60208084108214156200073b57634e487b7160e01b86526022600452602486fd5b818015620007525760018114620007645762000793565b60ff1986168952848901965062000793565b60008a81526020902060005b868110156200078b5781548b82015290850190830162000770565b505084890196505b509498975050505050505050565b60008219821115620007c357634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620007dd57607f821691505b60208210811415620007ff57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160f81c60a051610a21620008446000396000610654015260006101ad0152610a216000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b4114610236578063a9059cbb1461023e578063d505accf14610251578063dd62ed3e1461026457600080fd5b806342966c68146101e157806370a08231146101f65780637ecebe001461021657600080fd5b806320606b70116100c857806320606b701461014757806323b872dd1461016e57806330adf81f14610181578063313ce567146101a857600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f761028f565b6040516101049190610936565b60405180910390f35b61012061011b3660046108f3565b61031d565b6040519015158152602001610104565b61013960025481565b604051908152602001610104565b6101397f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61012061017c366004610844565b610389565b6101397f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6101cf7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610104565b6101f46101ef36600461091d565b61047b565b005b6101396102043660046107ef565b60036020526000908152604090205481565b6101396102243660046107ef565b60056020526000908152604090205481565b6100f76104e3565b61012061024c3660046108f3565b6104f0565b6101f461025f366004610880565b610568565b610139610272366004610811565b600460209081526000928352604080842090915290825290205481565b6000805461029c906109b0565b80601f01602080910402602001604051908101604052809291908181526020018280546102c8906109b0565b80156103155780601f106102ea57610100808354040283529160200191610315565b820191906000526020600020905b8154815290600101906020018083116102f857829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103789086815260200190565b60405180910390a350600192915050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001981146103e5576103c0838261098b565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b0385166000908152600360205260408120805485929061040d90849061098b565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104689087815260200190565b60405180910390a3506001949350505050565b336000908152600360205260408120805483929061049a90849061098b565b909155505060028054829003905560405181815260009033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350565b6001805461029c906109b0565b3360009081526003602052604081208054839190839061051190849061098b565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103789086815260200190565b428410156105bd5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6001600160a01b0387811660008181526005602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a085019590955260c08085018a90528151808603909101815260e08501825280519083012061190160f01b6101008601527f000000000000000000000000000000000000000000000000000000000000000061010286015261012280860182905282518087039091018152610142860180845281519185019190912090859052610162860180845281905260ff8a166101828701526101a286018990526101c2860188905291519095919491926101e2808401939192601f1981019281900390910190855afa1580156106f8573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061072e5750896001600160a01b0316816001600160a01b0316145b61076b5760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b60448201526064016105b4565b5050506001600160a01b038781166000818152600460209081526040808320948b168084529482529182902089905590518881527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b80356001600160a01b03811681146107ea57600080fd5b919050565b60006020828403121561080157600080fd5b61080a826107d3565b9392505050565b6000806040838503121561082457600080fd5b61082d836107d3565b915061083b602084016107d3565b90509250929050565b60008060006060848603121561085957600080fd5b610862846107d3565b9250610870602085016107d3565b9150604084013590509250925092565b600080600080600080600060e0888a03121561089b57600080fd5b6108a4886107d3565b96506108b2602089016107d3565b95506040880135945060608801359350608088013560ff811681146108d657600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561090657600080fd5b61090f836107d3565b946020939093013593505050565b60006020828403121561092f57600080fd5b5035919050565b600060208083528351808285015260005b8181101561096357858101830151858201604001528201610947565b81811115610975576000604083870101525b50601f01601f1916929092016040019392505050565b6000828210156109ab57634e487b7160e01b600052601160045260246000fd5b500390565b600181811c908216806109c457607f821691505b602082108114156109e557634e487b7160e01b600052602260045260246000fd5b5091905056fea264697066735822122095cccbcee8d719f33c23236397ad2f94c18c89fc5e26a01724d053d53790cd8964736f6c6343000806003300000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000052b7d2dcc80cd2e400000000000000000000000000000004c387ed7ef978fe0a79efb4a8ff07d38f6b623f0000000000000000000000007b4328c127b85369d9f82ca0503b000d09cf9180000000000000000000000000cc76c4231294d7d415f8f1b3317dfbb10f90c49900000000000000000000000000000000000000000000021e19e0c9bab2400000000000000000000000000000000000000000000000000000000000000000000b444558204d414348494e4100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054445584149000000000000000000000000000000000000000000000000000000

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b4114610236578063a9059cbb1461023e578063d505accf14610251578063dd62ed3e1461026457600080fd5b806342966c68146101e157806370a08231146101f65780637ecebe001461021657600080fd5b806320606b70116100c857806320606b701461014757806323b872dd1461016e57806330adf81f14610181578063313ce567146101a857600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f761028f565b6040516101049190610936565b60405180910390f35b61012061011b3660046108f3565b61031d565b6040519015158152602001610104565b61013960025481565b604051908152602001610104565b6101397f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61012061017c366004610844565b610389565b6101397f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6101cf7f000000000000000000000000000000000000000000000000000000000000001281565b60405160ff9091168152602001610104565b6101f46101ef36600461091d565b61047b565b005b6101396102043660046107ef565b60036020526000908152604090205481565b6101396102243660046107ef565b60056020526000908152604090205481565b6100f76104e3565b61012061024c3660046108f3565b6104f0565b6101f461025f366004610880565b610568565b610139610272366004610811565b600460209081526000928352604080842090915290825290205481565b6000805461029c906109b0565b80601f01602080910402602001604051908101604052809291908181526020018280546102c8906109b0565b80156103155780601f106102ea57610100808354040283529160200191610315565b820191906000526020600020905b8154815290600101906020018083116102f857829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103789086815260200190565b60405180910390a350600192915050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001981146103e5576103c0838261098b565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b0385166000908152600360205260408120805485929061040d90849061098b565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104689087815260200190565b60405180910390a3506001949350505050565b336000908152600360205260408120805483929061049a90849061098b565b909155505060028054829003905560405181815260009033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350565b6001805461029c906109b0565b3360009081526003602052604081208054839190839061051190849061098b565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103789086815260200190565b428410156105bd5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6001600160a01b0387811660008181526005602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a085019590955260c08085018a90528151808603909101815260e08501825280519083012061190160f01b6101008601527f7fb724a23344a37cba973b088697db025f4fd012004447c184777a55cde9685361010286015261012280860182905282518087039091018152610142860180845281519185019190912090859052610162860180845281905260ff8a166101828701526101a286018990526101c2860188905291519095919491926101e2808401939192601f1981019281900390910190855afa1580156106f8573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061072e5750896001600160a01b0316816001600160a01b0316145b61076b5760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b60448201526064016105b4565b5050506001600160a01b038781166000818152600460209081526040808320948b168084529482529182902089905590518881527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b80356001600160a01b03811681146107ea57600080fd5b919050565b60006020828403121561080157600080fd5b61080a826107d3565b9392505050565b6000806040838503121561082457600080fd5b61082d836107d3565b915061083b602084016107d3565b90509250929050565b60008060006060848603121561085957600080fd5b610862846107d3565b9250610870602085016107d3565b9150604084013590509250925092565b600080600080600080600060e0888a03121561089b57600080fd5b6108a4886107d3565b96506108b2602089016107d3565b95506040880135945060608801359350608088013560ff811681146108d657600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561090657600080fd5b61090f836107d3565b946020939093013593505050565b60006020828403121561092f57600080fd5b5035919050565b600060208083528351808285015260005b8181101561096357858101830151858201604001528201610947565b81811115610975576000604083870101525b50601f01601f1916929092016040019392505050565b6000828210156109ab57634e487b7160e01b600052601160045260246000fd5b500390565b600181811c908216806109c457607f821691505b602082108114156109e557634e487b7160e01b600052602260045260246000fd5b5091905056fea264697066735822122095cccbcee8d719f33c23236397ad2f94c18c89fc5e26a01724d053d53790cd8964736f6c63430008060033