ETH Price: $2,238.64 (+6.62%)

Contract

0x84BD276CA312490E4F93e9eDeA7Ab71aCA754332
 

Overview

ETH Balance

1 wei

Eth Value

Less Than $0.01 (@ $2,238.64/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer103035152020-06-20 15:46:431718 days ago1592668003IN
0x84BD276C...aCA754332
0 ETH0.0008006433
Transfer103034482020-06-20 15:30:031718 days ago1592667003IN
0x84BD276C...aCA754332
0 ETH0.0011066533
Transfer103034132020-06-20 15:22:461718 days ago1592666566IN
0x84BD276C...aCA754332
0 ETH0.0011066533
Transfer103033852020-06-20 15:15:551718 days ago1592666155IN
0x84BD276C...aCA754332
0 ETH0.0011066533
Transfer103033442020-06-20 15:08:111718 days ago1592665691IN
0x84BD276C...aCA754332
0 ETH0.0011066533
Transfer102512342020-06-12 13:48:251726 days ago1591969705IN
0x84BD276C...aCA754332
0 ETH0.0011737235
Transfer102465632020-06-11 20:28:511727 days ago1591907331IN
0x84BD276C...aCA754332
0 ETH0.0011737235
Transfer102463012020-06-11 19:25:491727 days ago1591903549IN
0x84BD276C...aCA754332
0 ETH0.0014265729.4
0xfaf6534c102208022020-06-07 20:24:341731 days ago1591561474IN
0x84BD276C...aCA754332
0.05 ETH0.0039991231.2
Transfer102132992020-06-06 16:43:431732 days ago1591461823IN
0x84BD276C...aCA754332
0 ETH0.0012743338
Transfer102121642020-06-06 12:29:401732 days ago1591446580IN
0x84BD276C...aCA754332
0 ETH0.001698335
Transfer102065272020-06-05 15:26:081733 days ago1591370768IN
0x84BD276C...aCA754332
0 ETH0.0016767550
Transfer102013102020-06-04 19:55:121734 days ago1591300512IN
0x84BD276C...aCA754332
0 ETH0.0011645524
Transfer101958552020-06-03 23:34:461735 days ago1591227286IN
0x84BD276C...aCA754332
0 ETH0.0011645524
Transfer101879932020-06-02 18:19:041736 days ago1591121944IN
0x84BD276C...aCA754332
0 ETH0.0008383725
Transfer101801362020-06-01 13:02:221737 days ago1591016542IN
0x84BD276C...aCA754332
0 ETH0.0012615926
Transfer101667552020-05-30 11:05:261739 days ago1590836726IN
0x84BD276C...aCA754332
0 ETH0.0013586428
Transfer101629602020-05-29 20:59:571740 days ago1590785997IN
0x84BD276C...aCA754332
0.1 ETH0.0027667830
Change Dex Giver...101628922020-05-29 20:43:161740 days ago1590784996IN
0x84BD276C...aCA754332
0 ETH0.0014802930

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
103035152020-06-20 15:46:431718 days ago1592668003
0x84BD276C...aCA754332
0.2393347 ETH
103034482020-06-20 15:30:031718 days ago1592667003
0x84BD276C...aCA754332
0.00405669 ETH
103034132020-06-20 15:22:461718 days ago1592666566
0x84BD276C...aCA754332
0.03570802 ETH
103033852020-06-20 15:15:551718 days ago1592666155
0x84BD276C...aCA754332
0.00304661 ETH
103033442020-06-20 15:08:111718 days ago1592665691
0x84BD276C...aCA754332
0.00405912 ETH
102513082020-06-12 14:04:391726 days ago1591970679
0x84BD276C...aCA754332
0.012 ETH
102512342020-06-12 13:48:251726 days ago1591969705
0x84BD276C...aCA754332
0.06526565 ETH
102466492020-06-11 20:43:111727 days ago1591908191
0x84BD276C...aCA754332
0.0135 ETH
102465632020-06-11 20:28:511727 days ago1591907331
0x84BD276C...aCA754332
0.05312736 ETH
102463012020-06-11 19:25:491727 days ago1591903549
0x84BD276C...aCA754332
0.03095505 ETH
102449052020-06-11 14:21:261727 days ago1591885286
0x84BD276C...aCA754332
0.0135 ETH
102444322020-06-11 12:43:111727 days ago1591879391
0x84BD276C...aCA754332
0.009 ETH
102432332020-06-11 8:07:351728 days ago1591862855
0x84BD276C...aCA754332
0.015 ETH
102422212020-06-11 4:19:261728 days ago1591849166
0x84BD276C...aCA754332
0.00855 ETH
102392882020-06-10 17:29:451728 days ago1591810185
0x84BD276C...aCA754332
0.018 ETH
102378802020-06-10 12:17:361728 days ago1591791456
0x84BD276C...aCA754332
0.0096 ETH
102367072020-06-10 7:52:371729 days ago1591775557
0x84BD276C...aCA754332
0.00915 ETH
102329912020-06-09 17:53:421729 days ago1591725222
0x84BD276C...aCA754332
0.0075 ETH
102317432020-06-09 13:25:171729 days ago1591709117
0x84BD276C...aCA754332
0.0225 ETH
102301712020-06-09 7:26:111730 days ago1591687571
0x84BD276C...aCA754332
0.0078 ETH
102273122020-06-08 20:34:341730 days ago1591648474
0x84BD276C...aCA754332
0.015 ETH
102247622020-06-08 11:14:051730 days ago1591614845
0x84BD276C...aCA754332
0.0075 ETH
102208092020-06-07 20:25:511731 days ago1591561551
0x84BD276C...aCA754332
0.012 ETH
102208022020-06-07 20:24:341731 days ago1591561474
0x84BD276C...aCA754332
0.0025 ETH
102133382020-06-06 16:51:411732 days ago1591462301
0x84BD276C...aCA754332
0.00975 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
dexToken

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-05-30
*/

/*
Donation Exchange dexToken smart-contract
*/

pragma solidity ^0.5.17;

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract dexGiverInterface {
        function _donationsTransfer(address _donator) external payable returns (bool);
        function checkDexTokenUserReferrer(address _user, address _dataAddress) external returns (bool, address);
    }
    
contract dexToken {
    
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    address private _owner;
    address private _dexGiverAddress;
    string private _name;
    string private _symbol;
    uint256 private _totalSupply;
    uint128 private _min;
    uint128 private _max;
    uint8 private _decimals;
    
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Sell(address indexed seller, uint256 amount, uint256 rate, uint256 ethAmount);
    event Reward(address indexed referrer, uint32 indexed donationId, uint256 ethAmount, uint256 rate, uint256 tokenAmount);
    event Buy(address indexed buyer, address indexed referrer, uint256 ethAmount, uint256 tokenRate, uint256 amountToMint);
    event UnreachableAdressTokensMinted(address userAddress, uint32 donationTurn, uint ethAmount, uint tokenAmount, uint rate);
    event TokenRateChanged(uint256 tokenRate, uint64 time);

    constructor () public {
        _name = "Donation Exchange Token";
        _symbol = "DEXT";
        _decimals = 18;
        _owner = msg.sender;
        _min = 50000000000000000;
        _max = 5000000000000000000;
        
        emit TokenRateChanged(1000000000000000000, uint64(now));
    }
    
    dexGiverInterface dexGiver;

    modifier onlyOwner() {
        require (_msgSender() == _owner, "Only for owner");
        _;
    }
    
    modifier calledByDex() {
        require (_msgSender() == _dexGiverAddress, "Only for dexGiver contract");
        _;
    }
    
    modifier purchaseSize() {
        require (msg.value >= _min && msg.value <= _max, "Wrong Ether amount");
        _;
    }

    function transferOwnership(address newOwner) external onlyOwner {
        _owner = newOwner;
        assert(_owner == newOwner);
    }
    
    function changeDexGiverAddress(address newAddress) external onlyOwner{
        _dexGiverAddress = newAddress;
        dexGiver = dexGiverInterface(newAddress);
        assert(_dexGiverAddress == newAddress);
    }
    
    function changeMinMax(uint128 newMin, uint128 newMax) external onlyOwner{
        _min = newMin;
        _max = newMax;
        assert(_min == newMin && _max == newMax);
    }
    
    
    
    function () external payable purchaseSize {
        
        (bool referrerWasSet, address referrer) = dexGiver.checkDexTokenUserReferrer(msg.sender, bytesToAddress(msg.data));
        require(referrerWasSet, "Referrer was not set by dexGiver");
        
        uint amountToDex = msg.value.div(20);
        uint ethAmountForBuyer = msg.value.mul(90).div(100);
        
        (uint tokenAmount, uint tokenRate) = tokenAmountForEther(msg.value);
        
        uint amountToMintForBuyer = tokenAmount.mul(90).div(100);
        
        bool dtIsDone = dexGiver._donationsTransfer.value(amountToDex)(_msgSender());
        require(dtIsDone, "Donation was not accepted or transfered by dexGiver");
        
        _mint(_msgSender(), amountToMintForBuyer);
        
        emit Buy(_msgSender(), referrer, ethAmountForBuyer, tokenRate, amountToMintForBuyer);
        emit TokenRateChanged(calcTokenRate(), uint64(now));
    }
    
    
    function transfer(address recipient, uint256 tokenAmount) public returns (bool) {

        if (recipient == _dexGiverAddress || recipient == address(this)) {

            uint rate = _tokenRate(0);
            uint ethAmount = tokenAmount.mul(10**18).mul(rate).div(10**36);
            
            _burn(_msgSender(), tokenAmount);

            sendValue(_msgSender(), ethAmount);
            
            emit Sell(_msgSender(), tokenAmount, rate, ethAmount);

        } else {
            _transfer(_msgSender(), recipient, tokenAmount);
        }
        return true;
    }
    
    
    function mintRefTokens(address referrer, address founder, uint32 id) external calledByDex payable returns (bool) {
        
            (uint totalTokenAmount, uint rate) = tokenAmountForEther(msg.value);
            uint tokenAmount = totalTokenAmount.div(3);
            
            _mint(founder, tokenAmount);
            
            assert(balanceOf(founder) >= tokenAmount);
            
        if (referrer != address(this)) {
            
            _mint(referrer, tokenAmount);
            
            assert(balanceOf(referrer) >= tokenAmount);
            
            emit Reward(referrer, id, msg.value.div(3), rate, tokenAmount);
            emit TokenRateChanged(calcTokenRate(), uint64(now));
            
            return (true);
            
        } else {
            
            emit TokenRateChanged(calcTokenRate(), uint64(now));
            
            return (true);
        }
    }
    
    
    function mintForUnreachableAddress(address userAddress, uint32 donationTurn) external payable calledByDex returns (bool){
        
        (uint tokenAmount, uint rate) = tokenAmountForEther(msg.value);
        
        _mint(userAddress, tokenAmount);
        assert(balanceOf(userAddress) >= tokenAmount);
        
        emit UnreachableAdressTokensMinted(userAddress, donationTurn, msg.value, tokenAmount, rate);

        return true;
    }
    
    
    function tokenAmountForEther(uint sum) private view returns (uint, uint) {
        uint rate = _tokenRate(sum);
        uint result = sum.mul(10**18).div(rate);
        return (result, rate);
    }
    

    function _tokenRate(uint sum) private view returns (uint) {
        
        uint ttlspl = _totalSupply;
        uint oldContractBalance = address(this).balance.sub(sum);
        
        if (oldContractBalance == 0 || ttlspl == 0) {
            return 10**18;
        }
        
        return oldContractBalance.mul(10**18).div(ttlspl);
    }
    
    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }
    
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }
    
    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }
    
    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    
    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

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

    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: burn from the zero address");

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
    
    function _approve(address owner, address spender, uint256 amount) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        
        (bool success, ) = recipient.call.value(amount)("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    
    function bytesToAddress(bytes memory bys) private pure returns (address addr) {
        if (bys.length == 20) {
            assembly {
                addr := mload(add(bys, 20))
            }
            return addr;
        } else {
            return address(0);
        }
    }

    function calcTokenRate() public view returns (uint) {
        uint ttlspl = _totalSupply;
        uint actualContractBalance = address(this).balance;
        if (actualContractBalance == 0 || ttlspl == 0) {
            return 10**18;
        }
        return actualContractBalance.mul(10**18).div(ttlspl);
    }
    
    function returnUserData(address user) external view returns (uint256, uint256, uint256) {
        uint dextRate = calcTokenRate();
        uint dextSupply = totalSupply();
        uint dextUserBalance = balanceOf(user);
        return (dextRate, dextSupply, dextUserBalance);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToMint","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":true,"internalType":"uint32","name":"donationId","type":"uint32"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"Reward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"Sell","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenRate","type":"uint256"},{"indexed":false,"internalType":"uint64","name":"time","type":"uint64"}],"name":"TokenRateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"userAddress","type":"address"},{"indexed":false,"internalType":"uint32","name":"donationTurn","type":"uint32"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rate","type":"uint256"}],"name":"UnreachableAdressTokensMinted","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"calcTokenRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"changeDexGiverAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint128","name":"newMin","type":"uint128"},{"internalType":"uint128","name":"newMax","type":"uint128"}],"name":"changeMinMax","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint32","name":"donationTurn","type":"uint32"}],"name":"mintForUnreachableAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"referrer","type":"address"},{"internalType":"address","name":"founder","type":"address"},{"internalType":"uint32","name":"id","type":"uint32"}],"name":"mintRefTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"returnUserData","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040805180820190915260178082527f446f6e6174696f6e2045786368616e676520546f6b656e0000000000000000006020909201918252620000589160049162000126565b50604080518082019091526004808252631111561560e21b6020909201918252620000869160059162000126565b506008805460ff19166012179055600280546001600160a01b0319163317905560078054651158e460913d60921b6001600160801b031990911666b1a2bc2ec50000176001600160801b031617905560408051670de0b6b3a764000081526001600160401b034216602082015281517f25e22348bf71130da943f466df52188b07d10e528c56c8c4d5b07af393675f51929181900390910190a1620001cb565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200016957805160ff191683800117855562000199565b8280016001018555821562000199579182015b82811115620001995782518255916020019190600101906200017c565b50620001a7929150620001ab565b5090565b620001c891905b80821115620001a75760008155600101620001b2565b90565b611a7680620001db6000396000f3fe6080604052600436106100f35760003560e01c8063a9059cbb1161008a578063cbefe55c11610059578063cbefe55c14610784578063dd62ed3e14610799578063e5c5a3e6146107d4578063f2fde38b1461080f576100f3565b8063a9059cbb14610693578063af56c16a146106cc578063b76b810e146106fe578063c4861f2f1461074f576100f3565b8063313ce567116100c6578063313ce567146105e357806370a082311461060e57806395d89b4114610641578063a77652ba14610656576100f3565b806306fdde03146104a2578063095ea7b31461052c57806318160ddd1461057957806323b872dd146105a0575b6007546001600160801b031634108015906101205750600754600160801b90046001600160801b03163411155b610166576040805162461bcd60e51b815260206004820152601260248201527115dc9bdb99c8115d1a195c88185b5bdd5b9d60721b604482015290519081900360640190fd5b600080600860019054906101000a90046001600160a01b03166001600160a01b031663dacf7f22336101ce6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061084292505050565b604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529190921660248201528151604480830193928290030181600087803b15801561021b57600080fd5b505af115801561022f573d6000803e3d6000fd5b505050506040513d604081101561024557600080fd5b5080516020909101519092509050816102a5576040805162461bcd60e51b815260206004820181905260248201527f526566657272657220776173206e6f7420736574206279206465784769766572604482015290519081900360640190fd5b60006102b834601463ffffffff61086216565b905060006102de60646102d234605a63ffffffff6108ad16565b9063ffffffff61086216565b90506000806102ec34610906565b9092509050600061030960646102d285605a63ffffffff6108ad16565b60085490915060009061010090046001600160a01b031663d8f4ce2a8761032e61093f565b6040518363ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506020604051808303818588803b15801561037557600080fd5b505af1158015610389573d6000803e3d6000fd5b50505050506040513d60208110156103a057600080fd5b50519050806103e05760405162461bcd60e51b81526004018080602001828103825260338152602001806118da6033913960400191505060405180910390fd5b6103f16103eb61093f565b83610944565b866001600160a01b031661040361093f565b604080518881526020810187905280820186905290516001600160a01b0392909216917ef93dbdb72854b6b6fb35433086556f2635fc83c37080c667496fecfa650fb49181900360600190a37f25e22348bf71130da943f466df52188b07d10e528c56c8c4d5b07af393675f51610478610a34565b6040805191825267ffffffffffffffff421660208301528051918290030190a15050505050505050005b3480156104ae57600080fd5b506104b7610a80565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104f15781810151838201526020016104d9565b50505050905090810190601f16801561051e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053857600080fd5b506105656004803603604081101561054f57600080fd5b506001600160a01b038135169060200135610b16565b604080519115158252519081900360200190f35b34801561058557600080fd5b5061058e610b33565b60408051918252519081900360200190f35b3480156105ac57600080fd5b50610565600480360360608110156105c357600080fd5b506001600160a01b03813581169160208101359091169060400135610b39565b3480156105ef57600080fd5b506105f8610bc7565b6040805160ff9092168252519081900360200190f35b34801561061a57600080fd5b5061058e6004803603602081101561063157600080fd5b50356001600160a01b0316610bd0565b34801561064d57600080fd5b506104b7610beb565b6105656004803603606081101561066c57600080fd5b5080356001600160a01b03908116916020810135909116906040013563ffffffff16610c4c565b34801561069f57600080fd5b50610565600480360360408110156106b657600080fd5b506001600160a01b038135169060200135610e0e565b610565600480360360408110156106e257600080fd5b5080356001600160a01b0316906020013563ffffffff16610f17565b34801561070a57600080fd5b506107316004803603602081101561072157600080fd5b50356001600160a01b031661101b565b60408051938452602084019290925282820152519081900360600190f35b34801561075b57600080fd5b506107826004803603602081101561077257600080fd5b50356001600160a01b0316611050565b005b34801561079057600080fd5b5061058e610a34565b3480156107a557600080fd5b5061058e600480360360408110156107bc57600080fd5b506001600160a01b03813581169160200135166110f5565b3480156107e057600080fd5b50610782600480360360408110156107f757600080fd5b506001600160801b0381358116916020013516611120565b34801561081b57600080fd5b506107826004803603602081101561083257600080fd5b50356001600160a01b03166111e4565b60008151601414156108595750601481015161085d565b5060005b919050565b60006108a483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061126f565b90505b92915050565b6000826108bc575060006108a7565b828202828482816108c957fe5b04146108a45760405162461bcd60e51b815260040180806020018281038252602181526020018061198f6021913960400191505060405180910390fd5b600080600061091484611311565b90506000610934826102d287670de0b6b3a764000063ffffffff6108ad16565b935090915050915091565b335b90565b6001600160a01b03821661099f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6006546109b2908263ffffffff61137016565b6006556001600160a01b0382166000908152602081905260409020546109de908263ffffffff61137016565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60065460009047801580610a46575081155b15610a5d57670de0b6b3a764000092505050610941565b610a79826102d283670de0b6b3a764000063ffffffff6108ad16565b9250505090565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b0c5780601f10610ae157610100808354040283529160200191610b0c565b820191906000526020600020905b815481529060010190602001808311610aef57829003601f168201915b5050505050905090565b6000610b2a610b2361093f565b84846113ca565b50600192915050565b60065490565b6000610b468484846114b6565b610bbc84610b5261093f565b610bb7856040518060600160405280602881526020016119b0602891396001600160a01b038a16600090815260016020526040812090610b9061093f565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61161216565b6113ca565b5060015b9392505050565b60085460ff1690565b6001600160a01b031660009081526020819052604090205490565b60058054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b0c5780601f10610ae157610100808354040283529160200191610b0c565b6003546000906001600160a01b0316610c6361093f565b6001600160a01b031614610cbe576040805162461bcd60e51b815260206004820152601a60248201527f4f6e6c7920666f7220646578476976657220636f6e7472616374000000000000604482015290519081900360640190fd5b600080610cca34610906565b90925090506000610ce283600363ffffffff61086216565b9050610cee8682610944565b80610cf887610bd0565b1015610d0057fe5b6001600160a01b0387163014610de557610d1a8782610944565b80610d2488610bd0565b1015610d2c57fe5b8463ffffffff16876001600160a01b03167fdd92a58fecb7399bb560327a37ddb56d4dd3d8cd956a803243557a559718e9b1610d7260033461086290919063ffffffff16565b6040805191825260208201879052818101869052519081900360600190a37f25e22348bf71130da943f466df52188b07d10e528c56c8c4d5b07af393675f51610db9610a34565b6040805191825267ffffffffffffffff421660208301528051918290030190a160019350505050610bc0565b7f25e22348bf71130da943f466df52188b07d10e528c56c8c4d5b07af393675f51610db9610a34565b6003546000906001600160a01b0384811691161480610e3557506001600160a01b03831630145b15610f05576000610e466000611311565b90506000610e856ec097ce7bc90715b34b9f10000000006102d284610e7988670de0b6b3a764000063ffffffff6108ad16565b9063ffffffff6108ad16565b9050610e98610e9261093f565b8561166c565b610ea9610ea361093f565b82611768565b610eb161093f565b604080518681526020810185905280820184905290516001600160a01b0392909216917f846c37eef631e0943682d87352ec117c20008eb7f425c9b85ac011a6d4774cc09181900360600190a25050610b2a565b610b2a610f1061093f565b84846114b6565b6003546000906001600160a01b0316610f2e61093f565b6001600160a01b031614610f89576040805162461bcd60e51b815260206004820152601a60248201527f4f6e6c7920666f7220646578476976657220636f6e7472616374000000000000604482015290519081900360640190fd5b600080610f9534610906565b91509150610fa38583610944565b81610fad86610bd0565b1015610fb557fe5b604080516001600160a01b038716815263ffffffff861660208201523481830152606081018490526080810183905290517f880d7511ec4ecb76777409cb2f64d6a55bbd934603bdb410eb8a59aee56d0a299181900360a00190a1506001949350505050565b600080600080611029610a34565b90506000611035610b33565b9050600061104287610bd0565b929791965091945092505050565b6002546001600160a01b031661106461093f565b6001600160a01b0316146110b0576040805162461bcd60e51b815260206004820152600e60248201526d27b7363c903337b91037bbb732b960911b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b038381169182179283905560088054610100600160a81b031916610100840217905591909116146110f257fe5b50565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6002546001600160a01b031661113461093f565b6001600160a01b031614611180576040805162461bcd60e51b815260206004820152600e60248201526d27b7363c903337b91037bbb732b960911b604482015290519081900360640190fd5b600780546fffffffffffffffffffffffffffffffff19166001600160801b038481169182178116600160801b858316021792839055919091161480156111da57506007546001600160801b03828116600160801b90920416145b6111e057fe5b5050565b6002546001600160a01b03166111f861093f565b6001600160a01b031614611244576040805162461bcd60e51b815260206004820152600e60248201526d27b7363c903337b91037bbb732b960911b604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b038381169182179283905591909116146110f257fe5b600081836112fb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112c05781810151838201526020016112a8565b50505050905090810190601f1680156112ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161130757fe5b0495945050505050565b60065460009081611328478563ffffffff61185216565b9050801580611335575081155b1561134c57670de0b6b3a76400009250505061085d565b611368826102d283670de0b6b3a764000063ffffffff6108ad16565b949350505050565b6000828201838110156108a4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03831661140f5760405162461bcd60e51b8152600401808060200182810382526024815260200180611a1e6024913960400191505060405180910390fd5b6001600160a01b0382166114545760405162461bcd60e51b815260040180806020018281038252602281526020018061190d6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166114fb5760405162461bcd60e51b81526004018080602001828103825260258152602001806119f96025913960400191505060405180910390fd5b6001600160a01b0382166115405760405162461bcd60e51b81526004018080602001828103825260238152602001806118956023913960400191505060405180910390fd5b6115838160405180606001604052806026815260200161192f602691396001600160a01b038616600090815260208190526040902054919063ffffffff61161216565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546115b8908263ffffffff61137016565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156116645760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156112c05781810151838201526020016112a8565b505050900390565b6001600160a01b0382166116b15760405162461bcd60e51b81526004018080602001828103825260218152602001806119d86021913960400191505060405180910390fd5b6116f4816040518060600160405280602281526020016118b8602291396001600160a01b038516600090815260208190526040902054919063ffffffff61161216565b6001600160a01b038316600090815260208190526040902055600654611720908263ffffffff61185216565b6006556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b804710156117bd576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114611808576040519150601f19603f3d011682016040523d82523d6000602084013e61180d565b606091505b505090508061184d5760405162461bcd60e51b815260040180806020018281038252603a815260200180611955603a913960400191505060405180910390fd5b505050565b60006108a483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061161256fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365446f6e6174696f6e20776173206e6f74206163636570746564206f72207472616e73666572656420627920646578476976657245524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a265627a7a72315820f182e9e872a558fabad50eacb0e6eee240ec14bb8afb477eada44372f7e3e5bf64736f6c63430005110032

Deployed Bytecode

0x6080604052600436106100f35760003560e01c8063a9059cbb1161008a578063cbefe55c11610059578063cbefe55c14610784578063dd62ed3e14610799578063e5c5a3e6146107d4578063f2fde38b1461080f576100f3565b8063a9059cbb14610693578063af56c16a146106cc578063b76b810e146106fe578063c4861f2f1461074f576100f3565b8063313ce567116100c6578063313ce567146105e357806370a082311461060e57806395d89b4114610641578063a77652ba14610656576100f3565b806306fdde03146104a2578063095ea7b31461052c57806318160ddd1461057957806323b872dd146105a0575b6007546001600160801b031634108015906101205750600754600160801b90046001600160801b03163411155b610166576040805162461bcd60e51b815260206004820152601260248201527115dc9bdb99c8115d1a195c88185b5bdd5b9d60721b604482015290519081900360640190fd5b600080600860019054906101000a90046001600160a01b03166001600160a01b031663dacf7f22336101ce6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061084292505050565b604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529190921660248201528151604480830193928290030181600087803b15801561021b57600080fd5b505af115801561022f573d6000803e3d6000fd5b505050506040513d604081101561024557600080fd5b5080516020909101519092509050816102a5576040805162461bcd60e51b815260206004820181905260248201527f526566657272657220776173206e6f7420736574206279206465784769766572604482015290519081900360640190fd5b60006102b834601463ffffffff61086216565b905060006102de60646102d234605a63ffffffff6108ad16565b9063ffffffff61086216565b90506000806102ec34610906565b9092509050600061030960646102d285605a63ffffffff6108ad16565b60085490915060009061010090046001600160a01b031663d8f4ce2a8761032e61093f565b6040518363ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506020604051808303818588803b15801561037557600080fd5b505af1158015610389573d6000803e3d6000fd5b50505050506040513d60208110156103a057600080fd5b50519050806103e05760405162461bcd60e51b81526004018080602001828103825260338152602001806118da6033913960400191505060405180910390fd5b6103f16103eb61093f565b83610944565b866001600160a01b031661040361093f565b604080518881526020810187905280820186905290516001600160a01b0392909216917ef93dbdb72854b6b6fb35433086556f2635fc83c37080c667496fecfa650fb49181900360600190a37f25e22348bf71130da943f466df52188b07d10e528c56c8c4d5b07af393675f51610478610a34565b6040805191825267ffffffffffffffff421660208301528051918290030190a15050505050505050005b3480156104ae57600080fd5b506104b7610a80565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104f15781810151838201526020016104d9565b50505050905090810190601f16801561051e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053857600080fd5b506105656004803603604081101561054f57600080fd5b506001600160a01b038135169060200135610b16565b604080519115158252519081900360200190f35b34801561058557600080fd5b5061058e610b33565b60408051918252519081900360200190f35b3480156105ac57600080fd5b50610565600480360360608110156105c357600080fd5b506001600160a01b03813581169160208101359091169060400135610b39565b3480156105ef57600080fd5b506105f8610bc7565b6040805160ff9092168252519081900360200190f35b34801561061a57600080fd5b5061058e6004803603602081101561063157600080fd5b50356001600160a01b0316610bd0565b34801561064d57600080fd5b506104b7610beb565b6105656004803603606081101561066c57600080fd5b5080356001600160a01b03908116916020810135909116906040013563ffffffff16610c4c565b34801561069f57600080fd5b50610565600480360360408110156106b657600080fd5b506001600160a01b038135169060200135610e0e565b610565600480360360408110156106e257600080fd5b5080356001600160a01b0316906020013563ffffffff16610f17565b34801561070a57600080fd5b506107316004803603602081101561072157600080fd5b50356001600160a01b031661101b565b60408051938452602084019290925282820152519081900360600190f35b34801561075b57600080fd5b506107826004803603602081101561077257600080fd5b50356001600160a01b0316611050565b005b34801561079057600080fd5b5061058e610a34565b3480156107a557600080fd5b5061058e600480360360408110156107bc57600080fd5b506001600160a01b03813581169160200135166110f5565b3480156107e057600080fd5b50610782600480360360408110156107f757600080fd5b506001600160801b0381358116916020013516611120565b34801561081b57600080fd5b506107826004803603602081101561083257600080fd5b50356001600160a01b03166111e4565b60008151601414156108595750601481015161085d565b5060005b919050565b60006108a483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061126f565b90505b92915050565b6000826108bc575060006108a7565b828202828482816108c957fe5b04146108a45760405162461bcd60e51b815260040180806020018281038252602181526020018061198f6021913960400191505060405180910390fd5b600080600061091484611311565b90506000610934826102d287670de0b6b3a764000063ffffffff6108ad16565b935090915050915091565b335b90565b6001600160a01b03821661099f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6006546109b2908263ffffffff61137016565b6006556001600160a01b0382166000908152602081905260409020546109de908263ffffffff61137016565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60065460009047801580610a46575081155b15610a5d57670de0b6b3a764000092505050610941565b610a79826102d283670de0b6b3a764000063ffffffff6108ad16565b9250505090565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b0c5780601f10610ae157610100808354040283529160200191610b0c565b820191906000526020600020905b815481529060010190602001808311610aef57829003601f168201915b5050505050905090565b6000610b2a610b2361093f565b84846113ca565b50600192915050565b60065490565b6000610b468484846114b6565b610bbc84610b5261093f565b610bb7856040518060600160405280602881526020016119b0602891396001600160a01b038a16600090815260016020526040812090610b9061093f565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61161216565b6113ca565b5060015b9392505050565b60085460ff1690565b6001600160a01b031660009081526020819052604090205490565b60058054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b0c5780601f10610ae157610100808354040283529160200191610b0c565b6003546000906001600160a01b0316610c6361093f565b6001600160a01b031614610cbe576040805162461bcd60e51b815260206004820152601a60248201527f4f6e6c7920666f7220646578476976657220636f6e7472616374000000000000604482015290519081900360640190fd5b600080610cca34610906565b90925090506000610ce283600363ffffffff61086216565b9050610cee8682610944565b80610cf887610bd0565b1015610d0057fe5b6001600160a01b0387163014610de557610d1a8782610944565b80610d2488610bd0565b1015610d2c57fe5b8463ffffffff16876001600160a01b03167fdd92a58fecb7399bb560327a37ddb56d4dd3d8cd956a803243557a559718e9b1610d7260033461086290919063ffffffff16565b6040805191825260208201879052818101869052519081900360600190a37f25e22348bf71130da943f466df52188b07d10e528c56c8c4d5b07af393675f51610db9610a34565b6040805191825267ffffffffffffffff421660208301528051918290030190a160019350505050610bc0565b7f25e22348bf71130da943f466df52188b07d10e528c56c8c4d5b07af393675f51610db9610a34565b6003546000906001600160a01b0384811691161480610e3557506001600160a01b03831630145b15610f05576000610e466000611311565b90506000610e856ec097ce7bc90715b34b9f10000000006102d284610e7988670de0b6b3a764000063ffffffff6108ad16565b9063ffffffff6108ad16565b9050610e98610e9261093f565b8561166c565b610ea9610ea361093f565b82611768565b610eb161093f565b604080518681526020810185905280820184905290516001600160a01b0392909216917f846c37eef631e0943682d87352ec117c20008eb7f425c9b85ac011a6d4774cc09181900360600190a25050610b2a565b610b2a610f1061093f565b84846114b6565b6003546000906001600160a01b0316610f2e61093f565b6001600160a01b031614610f89576040805162461bcd60e51b815260206004820152601a60248201527f4f6e6c7920666f7220646578476976657220636f6e7472616374000000000000604482015290519081900360640190fd5b600080610f9534610906565b91509150610fa38583610944565b81610fad86610bd0565b1015610fb557fe5b604080516001600160a01b038716815263ffffffff861660208201523481830152606081018490526080810183905290517f880d7511ec4ecb76777409cb2f64d6a55bbd934603bdb410eb8a59aee56d0a299181900360a00190a1506001949350505050565b600080600080611029610a34565b90506000611035610b33565b9050600061104287610bd0565b929791965091945092505050565b6002546001600160a01b031661106461093f565b6001600160a01b0316146110b0576040805162461bcd60e51b815260206004820152600e60248201526d27b7363c903337b91037bbb732b960911b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b038381169182179283905560088054610100600160a81b031916610100840217905591909116146110f257fe5b50565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6002546001600160a01b031661113461093f565b6001600160a01b031614611180576040805162461bcd60e51b815260206004820152600e60248201526d27b7363c903337b91037bbb732b960911b604482015290519081900360640190fd5b600780546fffffffffffffffffffffffffffffffff19166001600160801b038481169182178116600160801b858316021792839055919091161480156111da57506007546001600160801b03828116600160801b90920416145b6111e057fe5b5050565b6002546001600160a01b03166111f861093f565b6001600160a01b031614611244576040805162461bcd60e51b815260206004820152600e60248201526d27b7363c903337b91037bbb732b960911b604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b038381169182179283905591909116146110f257fe5b600081836112fb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112c05781810151838201526020016112a8565b50505050905090810190601f1680156112ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161130757fe5b0495945050505050565b60065460009081611328478563ffffffff61185216565b9050801580611335575081155b1561134c57670de0b6b3a76400009250505061085d565b611368826102d283670de0b6b3a764000063ffffffff6108ad16565b949350505050565b6000828201838110156108a4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03831661140f5760405162461bcd60e51b8152600401808060200182810382526024815260200180611a1e6024913960400191505060405180910390fd5b6001600160a01b0382166114545760405162461bcd60e51b815260040180806020018281038252602281526020018061190d6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166114fb5760405162461bcd60e51b81526004018080602001828103825260258152602001806119f96025913960400191505060405180910390fd5b6001600160a01b0382166115405760405162461bcd60e51b81526004018080602001828103825260238152602001806118956023913960400191505060405180910390fd5b6115838160405180606001604052806026815260200161192f602691396001600160a01b038616600090815260208190526040902054919063ffffffff61161216565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546115b8908263ffffffff61137016565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156116645760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156112c05781810151838201526020016112a8565b505050900390565b6001600160a01b0382166116b15760405162461bcd60e51b81526004018080602001828103825260218152602001806119d86021913960400191505060405180910390fd5b6116f4816040518060600160405280602281526020016118b8602291396001600160a01b038516600090815260208190526040902054919063ffffffff61161216565b6001600160a01b038316600090815260208190526040902055600654611720908263ffffffff61185216565b6006556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b804710156117bd576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114611808576040519150601f19603f3d011682016040523d82523d6000602084013e61180d565b606091505b505090508061184d5760405162461bcd60e51b815260040180806020018281038252603a815260200180611955603a913960400191505060405180910390fd5b505050565b60006108a483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061161256fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365446f6e6174696f6e20776173206e6f74206163636570746564206f72207472616e73666572656420627920646578476976657245524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a265627a7a72315820f182e9e872a558fabad50eacb0e6eee240ec14bb8afb477eada44372f7e3e5bf64736f6c63430005110032

Deployed Bytecode Sourcemap

1786:10044:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3591:4;;-1:-1:-1;;;;;3591:4:0;3578:9;:17;;;;:38;;-1:-1:-1;3612:4:0;;-1:-1:-1;;;3612:4:0;;-1:-1:-1;;;;;3612:4:0;3599:9;:17;;3578:38;3569:70;;;;;-1:-1:-1;;;3569:70:0;;;;;;;;;;;;-1:-1:-1;;;3569:70:0;;;;;;;;;;;;;;;4312:19;4333:16;4353:8;;;;;;;;;-1:-1:-1;;;;;4353:8:0;-1:-1:-1;;;;;4353:34:0;;4388:10;4400:24;4415:8;;4400:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4400:14:0;;-1:-1:-1;;;4400:24:0:i;:::-;4353:72;;;-1:-1:-1;;;;;;4353:72:0;;;;;;;-1:-1:-1;;;;;4353:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4353:72:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;4353:72:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4353:72:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4353:72:0;;;;;;;;;-1:-1:-1;4353:72:0;-1:-1:-1;4353:72:0;4436:59;;;;;-1:-1:-1;;;4436:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4516:16;4535:17;:9;4549:2;4535:17;:13;:17;:::i;:::-;4516:36;-1:-1:-1;4563:22:0;4588:26;4610:3;4588:17;:9;4602:2;4588:17;:13;:17;:::i;:::-;:21;:26;:21;:26;:::i;:::-;4563:51;;4636:16;4654:14;4672:30;4692:9;4672:19;:30::i;:::-;4635:67;;-1:-1:-1;4635:67:0;-1:-1:-1;4723:25:0;4751:28;4775:3;4751:19;4635:67;4767:2;4751:19;:15;:19;:::i;:28::-;4816:8;;4723:56;;-1:-1:-1;4800:13:0;;4816:8;;;-1:-1:-1;;;;;4816:8:0;:27;4850:11;4863:12;:10;:12::i;:::-;4816:60;;;;;;;;;;;;;-1:-1:-1;;;;;4816:60:0;-1:-1:-1;;;;;4816:60:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4816:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4816:60:0;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4816:60:0;;-1:-1:-1;4816:60:0;4887:72;;;;-1:-1:-1;;;4887:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4980:41;4986:12;:10;:12::i;:::-;5000:20;4980:5;:41::i;:::-;5065:8;-1:-1:-1;;;;;5047:79:0;5051:12;:10;:12::i;:::-;5047:79;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5047:79:0;;;;;;;;;;;;;;5142:46;5159:15;:13;:15::i;:::-;5142:46;;;;;;;5183:3;5142:46;;;;;;;;;;;;;;3650:1;;;;;;;;1786:10044;7948:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7948:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7948:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8596:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8596:152:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8596:152:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8229:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8229:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;8760:304;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8760:304:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8760:304:0;;;;;;;;;;;;;;;;;:::i;8134:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8134:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8332:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8332:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8332:110:0;-1:-1:-1;;;;;8332:110:0;;:::i;8039:87::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8039:87:0;;;:::i;5826:944::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5826:944:0;;-1:-1:-1;;;;;5826:944:0;;;;;;;;;;;;;;;;;;:::i;5214:594::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5214:594:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5214:594:0;;;;;;;;:::i;6788:455::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6788:455:0;;-1:-1:-1;;;;;6788:455:0;;;;;;;;:::i;11541:286::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11541:286:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11541:286:0;-1:-1:-1;;;;;11541:286:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;3816:217;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3816:217:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3816:217:0;-1:-1:-1;;;;;3816:217:0;;:::i;:::-;;11211:318;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11211:318:0;;;:::i;8454:134::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8454:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8454:134:0;;;;;;;;;;:::i;4045:179::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4045:179:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4045:179:0;;;;;;;;;;:::i;3667:137::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3667:137:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3667:137:0;-1:-1:-1;;;;;3667:137:0;;:::i;10913:290::-;10977:12;11006:3;:10;11020:2;11006:16;11002:194;;;-1:-1:-1;11090:2:0;11081:12;;11075:19;11123:11;;11002:194;-1:-1:-1;11182:1:0;11002:194;10913:290;;;:::o;892:132::-;950:7;977:39;981:1;984;977:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;970:46;;892:132;;;;;:::o;636:248::-;694:7;718:6;714:47;;-1:-1:-1;748:1:0;741:8;;714:47;785:5;;;789:1;785;:5;:1;809:5;;;;;:10;801:56;;;;-1:-1:-1;;;801:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7261:201;7322:4;7328;7345:9;7357:15;7368:3;7357:10;:15::i;:::-;7345:27;-1:-1:-1;7383:11:0;7397:25;7345:27;7397:15;:3;7405:6;7397:15;:7;:15;:::i;:25::-;7383:39;-1:-1:-1;7449:4:0;;-1:-1:-1;;7261:201:0;;;:::o;7842:98::-;7922:10;7842:98;;:::o;9551:308::-;-1:-1:-1;;;;;9627:21:0;;9619:65;;;;;-1:-1:-1;;;9619:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9712:12;;:24;;9729:6;9712:24;:16;:24;:::i;:::-;9697:12;:39;-1:-1:-1;;;;;9768:18:0;;:9;:18;;;;;;;;;;;:30;;9791:6;9768:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;9747:18:0;;:9;:18;;;;;;;;;;;:51;;;;9814:37;;;;;;;9747:18;;:9;;9814:37;;;;;;;;;;9551:308;;:::o;11211:318::-;11288:12;;11257:4;;11340:21;11376:26;;;:41;;-1:-1:-1;11406:11:0;;11376:41;11372:87;;;11441:6;11434:13;;;;;;11372:87;11476:45;11514:6;11476:33;:21;11502:6;11476:33;:25;:33;:::i;:45::-;11469:52;;;;11211:318;:::o;7948:83::-;8018:5;8011:12;;;;;;;;-1:-1:-1;;8011:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7985:13;;8011:12;;8018:5;;8011:12;;8018:5;8011:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7948:83;:::o;8596:152::-;8662:4;8679:39;8688:12;:10;:12::i;:::-;8702:7;8711:6;8679:8;:39::i;:::-;-1:-1:-1;8736:4:0;8596:152;;;;:::o;8229:91::-;8300:12;;8229:91;:::o;8760:304::-;8849:4;8866:36;8876:6;8884:9;8895:6;8866:9;:36::i;:::-;8913:121;8922:6;8930:12;:10;:12::i;:::-;8944:89;8982:6;8944:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8944:19:0;;;;;;:11;:19;;;;;;8964:12;:10;:12::i;:::-;-1:-1:-1;;;;;8944:33:0;;;;;;;;;;;;-1:-1:-1;8944:33:0;;;:89;;:37;:89;:::i;:::-;8913:8;:121::i;:::-;-1:-1:-1;9052:4:0;8760:304;;;;;;:::o;8134:83::-;8200:9;;;;8134:83;:::o;8332:110::-;-1:-1:-1;;;;;8416:18:0;8389:7;8416:18;;;;;;;;;;;;8332:110::o;8039:87::-;8111:7;8104:14;;;;;;;;-1:-1:-1;;8104:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8078:13;;8104:14;;8111:7;;8104:14;;8111:7;8104:14;;;;;;;;;;;;;;;;;;;;;;;;5826:944;3455:16;;5933:4;;-1:-1:-1;;;;;3455:16:0;3439:12;:10;:12::i;:::-;-1:-1:-1;;;;;3439:32:0;;3430:72;;;;;-1:-1:-1;;;3430:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5965:21;5988:9;6001:30;6021:9;6001:19;:30::i;:::-;5964:67;;-1:-1:-1;5964:67:0;-1:-1:-1;6046:16:0;6065:23;5964:67;6086:1;6065:23;:20;:23;:::i;:::-;6046:42;;6117:27;6123:7;6132:11;6117:5;:27::i;:::-;6202:11;6180:18;6190:7;6180:9;:18::i;:::-;:33;;6173:41;;;;-1:-1:-1;;;;;6243:25:0;;6263:4;6243:25;6239:524;;6299:28;6305:8;6315:11;6299:5;:28::i;:::-;6386:11;6363:19;6373:8;6363:9;:19::i;:::-;:34;;6356:42;;;;6449:2;6432:57;;6439:8;-1:-1:-1;;;;;6432:57:0;;6453:16;6467:1;6453:9;:13;;:16;;;;:::i;:::-;6432:57;;;;;;;;;;;;;;;;;;;;;;;;;;;6509:46;6526:15;:13;:15::i;:::-;6509:46;;;;;;;6550:3;6509:46;;;;;;;;;;;;;;6592:4;6584:13;;;;;;;6239:524;6663:46;6680:15;:13;:15::i;5214:594::-;5324:16;;5288:4;;-1:-1:-1;;;;;5311:29:0;;;5324:16;;5311:29;;:59;;-1:-1:-1;;;;;;5344:26:0;;5365:4;5344:26;5311:59;5307:472;;;5389:9;5401:13;5412:1;5401:10;:13::i;:::-;5389:25;-1:-1:-1;5429:14:0;5446:45;5484:6;5446:33;5389:25;5446:23;:11;5462:6;5446:23;:15;:23;:::i;:::-;:27;:33;:27;:33;:::i;:45::-;5429:62;;5520:32;5526:12;:10;:12::i;:::-;5540:11;5520:5;:32::i;:::-;5569:34;5579:12;:10;:12::i;:::-;5593:9;5569;:34::i;:::-;5642:12;:10;:12::i;:::-;5637:48;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5637:48:0;;;;;;;;;;;;;;5307:472;;;;;5720:47;5730:12;:10;:12::i;:::-;5744:9;5755:11;5720:9;:47::i;6788:455::-;3455:16;;6903:4;;-1:-1:-1;;;;;3455:16:0;3439:12;:10;:12::i;:::-;-1:-1:-1;;;;;3439:32:0;;3430:72;;;;;-1:-1:-1;;;3430:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6930:16;6948:9;6961:30;6981:9;6961:19;:30::i;:::-;6929:62;;;;7012:31;7018:11;7031;7012:5;:31::i;:::-;7087:11;7061:22;7071:11;7061:9;:22::i;:::-;:37;;7054:45;;;;7125:86;;;-1:-1:-1;;;;;7125:86:0;;;;;;;;;;;7182:9;7125:86;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7231:4:0;;6788:455;-1:-1:-1;;;;6788:455:0:o;11541:286::-;11602:7;11611;11620;11640:13;11656:15;:13;:15::i;:::-;11640:31;;11682:15;11700:13;:11;:13::i;:::-;11682:31;;11724:20;11747:15;11757:4;11747:9;:15::i;:::-;11781:8;;11791:10;;-1:-1:-1;11781:8:0;;-1:-1:-1;11541:286:0;-1:-1:-1;;;11541:286:0:o;3816:217::-;3339:6;;-1:-1:-1;;;;;3339:6:0;3323:12;:10;:12::i;:::-;-1:-1:-1;;;;;3323:22:0;;3314:50;;;;;-1:-1:-1;;;3314:50:0;;;;;;;;;;;;-1:-1:-1;;;3314:50:0;;;;;;;;;;;;;;;3896:16;:29;;-1:-1:-1;;;;;;3896:29:0;-1:-1:-1;;;;;3896:29:0;;;;;;;;;;3936:8;:40;;-1:-1:-1;;;;;;3936:40:0;3896:29;3936:40;;;;;3994:16;;;;:30;3987:38;;;;3816:217;:::o;8454:134::-;-1:-1:-1;;;;;8553:18:0;;;8526:7;8553:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8454:134::o;4045:179::-;3339:6;;-1:-1:-1;;;;;3339:6:0;3323:12;:10;:12::i;:::-;-1:-1:-1;;;;;3323:22:0;;3314:50;;;;;-1:-1:-1;;;3314:50:0;;;;;;;;;;;;-1:-1:-1;;;3314:50:0;;;;;;;;;;;;;;;4128:4;:13;;-1:-1:-1;;4128:13:0;-1:-1:-1;;;;;4128:13:0;;;;;;4152;;-1:-1:-1;;;4152:13:0;;;;;;;;;4183:4;;;;:14;:32;;;;-1:-1:-1;4201:4:0;;-1:-1:-1;;;;;4201:14:0;;;-1:-1:-1;;;4201:4:0;;;;:14;4183:32;4176:40;;;;4045:179;;:::o;3667:137::-;3339:6;;-1:-1:-1;;;;;3339:6:0;3323:12;:10;:12::i;:::-;-1:-1:-1;;;;;3323:22:0;;3314:50;;;;;-1:-1:-1;;;3314:50:0;;;;;;;;;;;;-1:-1:-1;;;3314:50:0;;;;;;;;;;;;;;;3742:6;:17;;-1:-1:-1;;;;;;3742:17:0;-1:-1:-1;;;;;3742:17:0;;;;;;;;;;3777:6;;;;:18;3770:26;;;1032:189;1118:7;1153:12;1146:5;1138:28;;;;-1:-1:-1;;;1138:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1138:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1177:9;1193:1;1189;:5;;;;;;;1032:189;-1:-1:-1;;;;;1032:189:0:o;7476:354::-;7569:12;;7528:4;;;7618:30;:21;7644:3;7618:30;:25;:30;:::i;:::-;7592:56;-1:-1:-1;7673:23:0;;;:38;;-1:-1:-1;7700:11:0;;7673:38;7669:84;;;7735:6;7728:13;;;;;;7669:84;7780:42;7815:6;7780:30;:18;7803:6;7780:30;:22;:30;:::i;:42::-;7773:49;7476:354;-1:-1:-1;;;;7476:354:0:o;107:179::-;165:7;197:5;;;221:6;;;;213:46;;;;;-1:-1:-1;;;213:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;10227:338;-1:-1:-1;;;;;10321:19:0;;10313:68;;;;-1:-1:-1;;;10313:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10400:21:0;;10392:68;;;;-1:-1:-1;;;10392:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10473:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10525:32;;;;;;;;;;;;;;;;;10227:338;;;:::o;9072:471::-;-1:-1:-1;;;;;9170:20:0;;9162:70;;;;-1:-1:-1;;;9162:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9251:23:0;;9243:71;;;;-1:-1:-1;;;9243:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9347;9369:6;9347:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9347:17:0;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;9327:17:0;;;:9;:17;;;;;;;;;;;:91;;;;9452:20;;;;;;;:32;;9477:6;9452:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;9429:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;9500:35;;;;;;;9429:20;;9500:35;;;;;;;;;;;;;9072:471;;;:::o;438:190::-;524:7;560:12;552:6;;;;544:29;;;;-1:-1:-1;;;544:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;544:29:0;-1:-1:-1;;;596:5:0;;;438:190::o;9867:348::-;-1:-1:-1;;;;;9943:21:0;;9935:67;;;;-1:-1:-1;;;9935:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10036:68;10059:6;10036:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10036:18:0;;:9;:18;;;;;;;;;;;;:68;;:22;:68;:::i;:::-;-1:-1:-1;;;;;10015:18:0;;:9;:18;;;;;;;;;;:89;10130:12;;:24;;10147:6;10130:24;:16;:24;:::i;:::-;10115:12;:39;10170:37;;;;;;;;10196:1;;-1:-1:-1;;;;;10170:37:0;;;;;;;;;;;;9867:348;;:::o;10577:324::-;10692:6;10667:21;:31;;10659:73;;;;;-1:-1:-1;;;10659:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10772:32;;10754:12;;-1:-1:-1;;;;;10772:14:0;;;10793:6;;10754:12;10772:32;10754:12;10772:32;10793:6;10772:14;:32;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;10753:51:0;;;10823:7;10815:78;;;;-1:-1:-1;;;10815:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10577:324;;;:::o;294:136::-;352:7;379:43;383:1;386;379:43;;;;;;;;;;;;;;;;;:3;:43::i

Swarm Source

bzzr://f182e9e872a558fabad50eacb0e6eee240ec14bb8afb477eada44372f7e3e5bf

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.