ETH Price: $3,006.98 (+4.38%)
Gas: 2 Gwei

Token

Pear (PEAR)
 

Overview

Max Total Supply

17,646.4830265674 PEAR

Holders

297

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
sheriffakin.eth
Balance
1.0242096463 PEAR

Value
$0.00
0xf08793c6e14d4d7f8baece3af748094aa2876858
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PearToken

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSED

pragma solidity >=0.6.0 <0.8.0;
pragma experimental ABIEncoderV2;

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, 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 sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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 ERC20 is Context, IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor (string memory name_, string memory symbol_, uint8 decimals_) public {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
    }

    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 override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        _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 virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

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

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

        _beforeTokenTransfer(account, address(0), amount);

        _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 virtual {
        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 _setupDecimals(uint8 decimals_) internal {
        _decimals = decimals_;
    }
    
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

contract PearToken is ERC20 {
    using SafeMath for uint;
    
    event staked(address sender, uint amount, uint lockedTime);
    event unstaked(address sender, uint amount);
    
    address private _owner;
    address private _minter;
    address private _sales;
    address private _tokenContract;
    
    uint private stakeBuffer = 10000000000;
    uint private stakedSupply = 0;
    
    // Staking
    uint private yearInMs = 31536000;
    struct StakeType {
        uint rewardPercent; // Percent reward to get each period
        uint lockedTime; // How long the stake is locked before allowed to withdraw
    }
    mapping(uint => StakeType) private _stakingOptions;
    
    struct Stake {
        uint amount; // Amount staked
        uint startTime; // When staking started
        uint stakeType; // Type of stake
    }
    mapping(address => Stake[]) private _staking;
    
    constructor () public  ERC20("Pear", "PEAR", 18){
        _owner = tx.origin;
        
        _stakingOptions[0].rewardPercent = 1000;
        _stakingOptions[0].lockedTime = 0;
        
        _stakingOptions[1].rewardPercent = 2000;
        _stakingOptions[1].lockedTime = 604800;
        
        _stakingOptions[2].rewardPercent = 3500;
        _stakingOptions[2].lockedTime = 2592000;
        
        _stakingOptions[3].rewardPercent = 5000;
        _stakingOptions[3].lockedTime = 31536000;
    }
    
    /* Set the token contract for which to call for the stake reward
     *
     */
    function getTotalSupply() public view returns(uint) {
        return totalSupply() + stakedSupply;
    }
    
    /* Get available tokens
     *
     */
    function getMyBalance() public view returns(uint) {
        return balanceOf(msg.sender);
    }
    
    /* Get all tokens inkl staked
     *
     */
    function getMyFullBalance() public view returns(uint) {
        uint balance = balanceOf(msg.sender);
        for (uint i = 0; i < _staking[msg.sender].length; i++){
            balance += getStakeAmount(i);
        } 
        return balance;
    }
    
    /* Set the token contract for which to call for the stake reward
     *
     */
    function setTokenContract(address _address) public {
        require(_msgSender() == _owner,"Only owner can set token contract!");
        _tokenContract = _address;
    }
    
    /* Sets the address allowed to mint
     *
     */
    function setMinter(address minter_) public {
        require(msg.sender == _owner, "Only owner can set minter!");
        _minter = minter_;
    }
    
    /* 
     *
     */
    function setSales(address sales_) public {
        require(msg.sender == _owner, "Only owner can set minter!");
        _sales = sales_;
    }
    
    /* Mint an amount of tokens to an address
     *
     */
    function mint(address address_, uint256 amount_) public {
        require(msg.sender == _minter || msg.sender == _sales, "Only minter can mint tokens!");
        _mint(address_, amount_);
    }
    
    /*
     *
     */
    function mintToMultipleAddresses(address[] memory _addresses, uint _amount) public {
        require(_msgSender() == _owner,"Only owner can mint to multiple addresses!");
        for(uint i = 0; i < _addresses.length; i++){
            _mint(_addresses[i],  _amount);
        }
    }
    
    /* Stake
     *
     */
    function stake(uint amount_, uint stakeType_) public {
        _burn(msg.sender, amount_);
        stakedSupply += amount_;
        Stake memory temp;
        temp.amount = amount_;
        temp.startTime = now;
        temp.stakeType = stakeType_;
        _staking[msg.sender].push(temp);
        emit staked(msg.sender, amount_, _stakingOptions[stakeType_].lockedTime);
    }
    
    /* Get all stakes a address holds
     *
     */
    function getStakes() public view returns (uint[3][] memory) {
        uint[3][] memory tempStakeList = new uint[3][](_staking[msg.sender].length);
        for (uint i = 0; i < _staking[msg.sender].length; i++){
            tempStakeList[i][0] = getStakeAmount(i);
            tempStakeList[i][1] = getRemainingLockTime(i);
            tempStakeList[i][2] = getStakeReward(i);
        } 
        return tempStakeList;
    }
    
    /* Returns the amount of token provided with a stake.
     *
     */
    function getStakeAmount(uint stake_) public view returns (uint) {
        return _staking[msg.sender][stake_].amount;
    } 
    
    /* returns true or false depending on if a stake is locked
     * or free to withdraw.
     */
    function isStakeLocked(uint stake_) private view returns (bool) {
        uint stakingTime = now - _staking[msg.sender][stake_].startTime;
        return stakingTime < _stakingOptions[_staking[msg.sender][stake_].stakeType].lockedTime;
    }
    
    /* Returns the remaining lock time of a stake, if unlocked
     * returns 0.
     */
    function getRemainingLockTime(uint stake_) public view returns (uint) {
        uint stakingTime = now - _staking[msg.sender][stake_].startTime;
        if (stakingTime < _stakingOptions[_staking[msg.sender][stake_].stakeType].lockedTime) {
            return _stakingOptions[_staking[msg.sender][stake_].stakeType].lockedTime - stakingTime;
        } else {
            return 0;
        }
    }
    
    /* Calculates the current reward of a stake.
     * Get time staked
     * Add a buffer to circumvent float calculations
     * Gets amount of periods staked
     * Multiplies the periods staked with the reward percent amount
     * Multiplies the reward by the amount staked
     * Removed the buffer
     * Removes the percent buffer
     */
    function getStakeReward(uint stake_) public view returns (uint) {
        uint stakingTime = now - _staking[msg.sender][stake_].startTime;
        uint buffededStakingTime = stakingTime * stakeBuffer;
        uint periods = buffededStakingTime / yearInMs;
        uint buffedRewardPeriodPercent = periods * _stakingOptions[_staking[msg.sender][stake_].stakeType].rewardPercent;
        uint buffedReward = _staking[msg.sender][stake_].amount * buffedRewardPeriodPercent;
        uint rewardPerc = buffedReward / stakeBuffer;
        uint reward = rewardPerc / 100;
        return reward;
    }
    
    /* Unstake previous stake, mints back the original tokens,
     * sends mint function call to reward contract to mint the
     * reward to the sender address.
     */
    function unstake(uint stake_) public {
        require(isStakeLocked(stake_) != true, "Stake still locked!");
        _mint(msg.sender, _staking[msg.sender][stake_].amount);
        stakedSupply -= _staking[msg.sender][stake_].amount;
        uint _amount = getStakeReward(stake_);
        (bool success, bytes memory returnData) = address(_tokenContract).call(abi.encodeWithSignature("mint(address,uint256)",msg.sender, _amount));
        require(success);
        _removeIndexInArray(_staking[msg.sender], stake_);
        emit unstaked(msg.sender, _amount);
    }
    
    /* Walks through an array from index, moves all values down one
     * step the pops the last value.
     */
    function _removeIndexInArray(Stake[] storage _array, uint _index) private {
        if (_index >= _array.length) return;
        for (uint i = _index; i<_array.length-1; i++){
            _array[i] = _array[i+1];
        }
        _array.pop();
    }
    
    /* Changes the owner of the token
     *
     */
    function setOwner(address owner_) public {
        require(msg.sender == _owner, "Only owner can set owner!");
        _owner = owner_;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lockedTime","type":"uint256"}],"name":"staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstaked","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","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":"account","type":"address"}],"name":"balanceOf","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":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMyBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMyFullBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"stake_","type":"uint256"}],"name":"getRemainingLockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"stake_","type":"uint256"}],"name":"getStakeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"stake_","type":"uint256"}],"name":"getStakeReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStakes","outputs":[{"internalType":"uint256[3][]","name":"","type":"uint256[3][]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintToMultipleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter_","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sales_","type":"address"}],"name":"setSales","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setTokenContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"uint256","name":"stakeType_","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"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"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"stake_","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526402540be4006009556000600a556301e13380600b553480156200002757600080fd5b506040518060400160405280600481526020017f50656172000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f504541520000000000000000000000000000000000000000000000000000000081525060128260039080519060200190620000ae9291906200021e565b508160049080519060200190620000c79291906200021e565b5080600560006101000a81548160ff021916908360ff16021790555050505032600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e8600c6000808152602001908152602001600020600001819055506000600c6000808152602001908152602001600020600101819055506107d0600c6000600181526020019081526020016000206000018190555062093a80600c60006001815260200190815260200160002060010181905550610dac600c6000600281526020019081526020016000206000018190555062278d00600c60006002815260200190815260200160002060010181905550611388600c600060038152602001908152602001600020600001819055506301e13380600c60006003815260200190815260200160002060010181905550620002c4565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026157805160ff191683800117855562000292565b8280016001018555821562000292579182015b828111156200029157825182559160200191906001019062000274565b5b509050620002a19190620002a5565b5090565b5b80821115620002c0576000816000905550600101620002a6565b5090565b61312180620002d46000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370a08231116100de578063bbcd5bbe11610097578063dd62ed3e11610071578063dd62ed3e146104a9578063df4b4776146104d9578063ea440500146104f7578063fca3b5aa146105275761018e565b8063bbcd5bbe1461043f578063c293fe1c1461045b578063c4e41b221461048b5761018e565b806370a08231146103595780637a2e18fd146103895780637b0472f0146103a557806395d89b41146103c1578063a457c2d7146103df578063a9059cbb1461040f5761018e565b806323b872dd1161014b578063395093511161012557806339509351146102d157806340c10f19146103015780634c7389091461031d57806363ffe50d1461033b5761018e565b806323b872dd146102675780632e17de7814610297578063313ce567146102b35761018e565b806306fdde0314610193578063095ea7b3146101b15780630a1c1f4b146101e157806313af4035146101fd57806318160ddd1461021957806321806bf914610237575b600080fd5b61019b610543565b6040516101a89190612c62565b60405180910390f35b6101cb60048036038101906101c6919061249d565b6105e5565b6040516101d89190612c47565b60405180910390f35b6101fb60048036038101906101f691906124d9565b610603565b005b610217600480360381019061021291906123e9565b6106d5565b005b6102216107a9565b60405161022e9190612e24565b60405180910390f35b610251600480360381019061024c919061252d565b6107b3565b60405161025e9190612e24565b60405180910390f35b610281600480360381019061027c919061244e565b610916565b60405161028e9190612c47565b60405180910390f35b6102b160048036038101906102ac919061252d565b6109ef565b005b6102bb610cce565b6040516102c89190612e3f565b60405180910390f35b6102eb60048036038101906102e6919061249d565b610ce5565b6040516102f89190612c47565b60405180910390f35b61031b6004803603810190610316919061249d565b610d98565b005b610325610e8e565b6040516103329190612e24565b60405180910390f35b610343610e9e565b6040516103509190612e24565b60405180910390f35b610373600480360381019061036e91906123e9565b610f1b565b6040516103809190612e24565b60405180910390f35b6103a3600480360381019061039e91906123e9565b610f63565b005b6103bf60048036038101906103ba9190612556565b611037565b005b6103c9611156565b6040516103d69190612c62565b60405180910390f35b6103f960048036038101906103f4919061249d565b6111f8565b6040516104069190612c47565b60405180910390f35b6104296004803603810190610424919061249d565b6112c5565b6040516104369190612c47565b60405180910390f35b610459600480360381019061045491906123e9565b6112e3565b005b6104756004803603810190610470919061252d565b6113be565b6040516104829190612e24565b60405180910390f35b610493611423565b6040516104a09190612e24565b60405180910390f35b6104c360048036038101906104be9190612412565b611436565b6040516104d09190612e24565b60405180910390f35b6104e16114bd565b6040516104ee9190612c25565b60405180910390f35b610511600480360381019061050c919061252d565b61164e565b60405161051e9190612e24565b60405180910390f35b610541600480360381019061053c91906123e9565b6117d2565b005b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105db5780601f106105b0576101008083540402835291602001916105db565b820191906000526020600020905b8154815290600101906020018083116105be57829003601f168201915b5050505050905090565b60006105f96105f26118a6565b84846118ae565b6001905092915050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106446118a6565b73ffffffffffffffffffffffffffffffffffffffff161461069a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069190612ca4565b60405180910390fd5b60005b82518110156106d0576106c38382815181106106b557fe5b602002602001015183611a79565b808060010191505061069d565b505050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075c90612d64565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600254905090565b600080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061080057fe5b90600052602060002090600302016001015442039050600c6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020858154811061086457fe5b90600052602060002090600302016002015481526020019081526020016000206001015481101561090b5780600c6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002086815481106108de57fe5b90600052602060002090600302016002015481526020019081526020016000206001015403915050610911565b60009150505b919050565b6000610923848484611c0d565b6109e48461092f6118a6565b6109df8560405180606001604052806028815260200161309f60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109956118a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea29092919063ffffffff16565b6118ae565b600190509392505050565b600115156109fc82611efd565b15151415610a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3690612d44565b60405180910390fd5b610aa433600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110610a8d57fe5b906000526020600020906003020160000154611a79565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208181548110610aee57fe5b906000526020600020906003020160000154600a600082825403925050819055506000610b1a8261164e565b905060006060600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163384604051602401610b6c929190612b9c565b6040516020818303038152906040527f40c10f19000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610bf69190612b85565b6000604051808303816000865af19150503d8060008114610c33576040519150601f19603f3d011682016040523d82523d6000602084013e610c38565b606091505b509150915081610c4757600080fd5b610c8f600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002085611fdc565b7fc99009ef3dfc0489efa43797eee17157bc922e1ccfdddd9807414c7ca7b10f7c3384604051610cc0929190612bc5565b60405180910390a150505050565b6000600560009054906101000a900460ff16905090565b6000610d8e610cf26118a6565b84610d898560016000610d036118a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120a790919063ffffffff16565b6118ae565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e415750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610e80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7790612d04565b60405180910390fd5b610e8a8282611a79565b5050565b6000610e9933610f1b565b905090565b600080610eaa33610f1b565b905060005b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015610f1357610f02816113be565b820191508080600101915050610eaf565b508091505090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fea90612cc4565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61104133836120fc565b81600a600082825401925050819055506110596122f9565b828160000181815250504281602001818152505081816040018181525050600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000155602082015181600101556040820151816002015550507fa337adc42df840d8a4dbe5c08ee60fbd99a4b4ed84704bee7b85a0523b8bbf9f3384600c60008681526020019081526020016000206001015460405161114993929190612bee565b60405180910390a1505050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111ee5780601f106111c3576101008083540402835291602001916111ee565b820191906000526020600020905b8154815290600101906020018083116111d157829003601f168201915b5050505050905090565b60006112bb6112056118a6565b846112b6856040518060600160405280602581526020016130c7602591396001600061122f6118a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea29092919063ffffffff16565b6118ae565b6001905092915050565b60006112d96112d26118a6565b8484611c0d565b6001905092915050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113246118a6565b73ffffffffffffffffffffffffffffffffffffffff161461137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137190612dc4565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061140a57fe5b9060005260206000209060030201600001549050919050565b6000600a546114306107a9565b01905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b606080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905067ffffffffffffffff8111801561151957600080fd5b5060405190808252806020026020018201604052801561155357816020015b61154061231a565b8152602001906001900390816115385790505b50905060005b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611646576115ac816113be565b8282815181106115b857fe5b60200260200101516000600381106115cc57fe5b6020020181815250506115de816107b3565b8282815181106115ea57fe5b60200260200101516001600381106115fe57fe5b6020020181815250506116108161164e565b82828151811061161c57fe5b602002602001015160026003811061163057fe5b6020020181815250508080600101915050611559565b508091505090565b600080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061169b57fe5b906000526020600020906003020160010154420390506000600954820290506000600b5482816116c757fe5b0490506000600c6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020888154811061171a57fe5b90600052602060002090600302016002015481526020019081526020016000206000015482029050600081600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020888154811061178f57fe5b906000526020600020906003020160000154029050600060095482816117b157fe5b0490506000606482816117c057fe5b04905080975050505050505050919050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185990612cc4565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561191e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191590612de4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561198e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198590612ce4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a6c9190612e24565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae090612e04565b60405180910390fd5b611af5600083836122aa565b611b0a816002546120a790919063ffffffff16565b600281905550611b61816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120a790919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c019190612e24565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7490612da4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce490612c84565b60405180910390fd5b611cf88383836122aa565b611d6381604051806060016040528060268152602001613079602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea29092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611df6816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120a790919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e959190612e24565b60405180910390a3505050565b6000838311158290611eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee19190612c62565b60405180910390fd5b5060008385039050809150509392505050565b600080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110611f4a57fe5b90600052602060002090600302016001015442039050600c6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208581548110611fae57fe5b9060005260206000209060030201600201548152602001908152602001600020600101548110915050919050565b81805490508110611fec576120a3565b60008190505b60018380549050038110156120665782600182018154811061201057fe5b906000526020600020906003020183828154811061202a57fe5b90600052602060002090600302016000820154816000015560018201548160010155600282015481600201559050508080600101915050611ff2565b508180548061207157fe5b600190038181906000526020600020906003020160008082016000905560018201600090556002820160009055505090555b5050565b6000808284019050838110156120f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e990612d24565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561216c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216390612d84565b60405180910390fd5b612178826000836122aa565b6121e381604051806060016040528060228152602001613057602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea29092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061223a816002546122af90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161229e9190612e24565b60405180910390a35050565b505050565b60006122f183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ea2565b905092915050565b60405180606001604052806000815260200160008152602001600081525090565b6040518060600160405280600390602082028036833780820191505090505090565b60008135905061234b81613028565b92915050565b600082601f83011261236257600080fd5b813561237561237082612e87565b612e5a565b9150818183526020840193506020810190508385602084028201111561239a57600080fd5b60005b838110156123ca57816123b0888261233c565b84526020840193506020830192505060018101905061239d565b5050505092915050565b6000813590506123e38161303f565b92915050565b6000602082840312156123fb57600080fd5b60006124098482850161233c565b91505092915050565b6000806040838503121561242557600080fd5b60006124338582860161233c565b92505060206124448582860161233c565b9150509250929050565b60008060006060848603121561246357600080fd5b60006124718682870161233c565b93505060206124828682870161233c565b9250506040612493868287016123d4565b9150509250925092565b600080604083850312156124b057600080fd5b60006124be8582860161233c565b92505060206124cf858286016123d4565b9150509250929050565b600080604083850312156124ec57600080fd5b600083013567ffffffffffffffff81111561250657600080fd5b61251285828601612351565b9250506020612523858286016123d4565b9150509250929050565b60006020828403121561253f57600080fd5b600061254d848285016123d4565b91505092915050565b6000806040838503121561256957600080fd5b6000612577858286016123d4565b9250506020612588858286016123d4565b9150509250929050565b600061259e838361263e565b60608301905092915050565b60006125b68383612b58565b60208301905092915050565b6125cb81612fae565b82525050565b6125da81612f59565b82525050565b60006125eb82612ec9565b6125f58185612f0f565b935061260083612eaf565b8060005b838110156126315781516126188882612592565b975061262383612ef5565b925050600181019050612604565b5085935050505092915050565b61264781612ed4565b6126518184612f20565b925061265c82612ebf565b8060005b8381101561268d57815161267487826125aa565b965061267f83612f02565b925050600181019050612660565b505050505050565b61269e81612f6b565b82525050565b60006126af82612edf565b6126b98185612f2b565b93506126c9818560208601612fe4565b80840191505092915050565b60006126e082612eea565b6126ea8185612f36565b93506126fa818560208601612fe4565b61270381613017565b840191505092915050565b600061271b602383612f36565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612781602a83612f36565b91507f4f6e6c79206f776e65722063616e206d696e7420746f206d756c7469706c652060008301527f61646472657373657321000000000000000000000000000000000000000000006020830152604082019050919050565b60006127e7601a83612f36565b91507f4f6e6c79206f776e65722063616e20736574206d696e746572210000000000006000830152602082019050919050565b6000612827602283612f36565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061288d601c83612f36565b91507f4f6e6c79206d696e7465722063616e206d696e7420746f6b656e7321000000006000830152602082019050919050565b60006128cd601b83612f36565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b600061290d601383612f36565b91507f5374616b65207374696c6c206c6f636b656421000000000000000000000000006000830152602082019050919050565b600061294d601983612f36565b91507f4f6e6c79206f776e65722063616e20736574206f776e657221000000000000006000830152602082019050919050565b600061298d602183612f36565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006129f3602583612f36565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a59602283612f36565b91507f4f6e6c79206f776e65722063616e2073657420746f6b656e20636f6e7472616360008301527f74210000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612abf602483612f36565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612b25601f83612f36565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b612b6181612f97565b82525050565b612b7081612f97565b82525050565b612b7f81612fa1565b82525050565b6000612b9182846126a4565b915081905092915050565b6000604082019050612bb160008301856125d1565b612bbe6020830184612b67565b9392505050565b6000604082019050612bda60008301856125c2565b612be76020830184612b67565b9392505050565b6000606082019050612c0360008301866125c2565b612c106020830185612b67565b612c1d6040830184612b67565b949350505050565b60006020820190508181036000830152612c3f81846125e0565b905092915050565b6000602082019050612c5c6000830184612695565b92915050565b60006020820190508181036000830152612c7c81846126d5565b905092915050565b60006020820190508181036000830152612c9d8161270e565b9050919050565b60006020820190508181036000830152612cbd81612774565b9050919050565b60006020820190508181036000830152612cdd816127da565b9050919050565b60006020820190508181036000830152612cfd8161281a565b9050919050565b60006020820190508181036000830152612d1d81612880565b9050919050565b60006020820190508181036000830152612d3d816128c0565b9050919050565b60006020820190508181036000830152612d5d81612900565b9050919050565b60006020820190508181036000830152612d7d81612940565b9050919050565b60006020820190508181036000830152612d9d81612980565b9050919050565b60006020820190508181036000830152612dbd816129e6565b9050919050565b60006020820190508181036000830152612ddd81612a4c565b9050919050565b60006020820190508181036000830152612dfd81612ab2565b9050919050565b60006020820190508181036000830152612e1d81612b18565b9050919050565b6000602082019050612e396000830184612b67565b92915050565b6000602082019050612e546000830184612b76565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612e7d57600080fd5b8060405250919050565b600067ffffffffffffffff821115612e9e57600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b6000819050919050565b600081519050919050565b600060039050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b6000612f5282612f77565b9050919050565b6000612f6482612f77565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612fb982612fc0565b9050919050565b6000612fcb82612fd2565b9050919050565b6000612fdd82612f77565b9050919050565b60005b83811015613002578082015181840152602081019050612fe7565b83811115613011576000848401525b50505050565b6000601f19601f8301169050919050565b61303181612f47565b811461303c57600080fd5b50565b61304881612f97565b811461305357600080fd5b5056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202c3aa755903008d35a9ef74a4f03f6ab56da422e39ff1b068f9d68db99d1069264736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c806370a08231116100de578063bbcd5bbe11610097578063dd62ed3e11610071578063dd62ed3e146104a9578063df4b4776146104d9578063ea440500146104f7578063fca3b5aa146105275761018e565b8063bbcd5bbe1461043f578063c293fe1c1461045b578063c4e41b221461048b5761018e565b806370a08231146103595780637a2e18fd146103895780637b0472f0146103a557806395d89b41146103c1578063a457c2d7146103df578063a9059cbb1461040f5761018e565b806323b872dd1161014b578063395093511161012557806339509351146102d157806340c10f19146103015780634c7389091461031d57806363ffe50d1461033b5761018e565b806323b872dd146102675780632e17de7814610297578063313ce567146102b35761018e565b806306fdde0314610193578063095ea7b3146101b15780630a1c1f4b146101e157806313af4035146101fd57806318160ddd1461021957806321806bf914610237575b600080fd5b61019b610543565b6040516101a89190612c62565b60405180910390f35b6101cb60048036038101906101c6919061249d565b6105e5565b6040516101d89190612c47565b60405180910390f35b6101fb60048036038101906101f691906124d9565b610603565b005b610217600480360381019061021291906123e9565b6106d5565b005b6102216107a9565b60405161022e9190612e24565b60405180910390f35b610251600480360381019061024c919061252d565b6107b3565b60405161025e9190612e24565b60405180910390f35b610281600480360381019061027c919061244e565b610916565b60405161028e9190612c47565b60405180910390f35b6102b160048036038101906102ac919061252d565b6109ef565b005b6102bb610cce565b6040516102c89190612e3f565b60405180910390f35b6102eb60048036038101906102e6919061249d565b610ce5565b6040516102f89190612c47565b60405180910390f35b61031b6004803603810190610316919061249d565b610d98565b005b610325610e8e565b6040516103329190612e24565b60405180910390f35b610343610e9e565b6040516103509190612e24565b60405180910390f35b610373600480360381019061036e91906123e9565b610f1b565b6040516103809190612e24565b60405180910390f35b6103a3600480360381019061039e91906123e9565b610f63565b005b6103bf60048036038101906103ba9190612556565b611037565b005b6103c9611156565b6040516103d69190612c62565b60405180910390f35b6103f960048036038101906103f4919061249d565b6111f8565b6040516104069190612c47565b60405180910390f35b6104296004803603810190610424919061249d565b6112c5565b6040516104369190612c47565b60405180910390f35b610459600480360381019061045491906123e9565b6112e3565b005b6104756004803603810190610470919061252d565b6113be565b6040516104829190612e24565b60405180910390f35b610493611423565b6040516104a09190612e24565b60405180910390f35b6104c360048036038101906104be9190612412565b611436565b6040516104d09190612e24565b60405180910390f35b6104e16114bd565b6040516104ee9190612c25565b60405180910390f35b610511600480360381019061050c919061252d565b61164e565b60405161051e9190612e24565b60405180910390f35b610541600480360381019061053c91906123e9565b6117d2565b005b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105db5780601f106105b0576101008083540402835291602001916105db565b820191906000526020600020905b8154815290600101906020018083116105be57829003601f168201915b5050505050905090565b60006105f96105f26118a6565b84846118ae565b6001905092915050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106446118a6565b73ffffffffffffffffffffffffffffffffffffffff161461069a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069190612ca4565b60405180910390fd5b60005b82518110156106d0576106c38382815181106106b557fe5b602002602001015183611a79565b808060010191505061069d565b505050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075c90612d64565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600254905090565b600080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061080057fe5b90600052602060002090600302016001015442039050600c6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020858154811061086457fe5b90600052602060002090600302016002015481526020019081526020016000206001015481101561090b5780600c6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002086815481106108de57fe5b90600052602060002090600302016002015481526020019081526020016000206001015403915050610911565b60009150505b919050565b6000610923848484611c0d565b6109e48461092f6118a6565b6109df8560405180606001604052806028815260200161309f60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109956118a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea29092919063ffffffff16565b6118ae565b600190509392505050565b600115156109fc82611efd565b15151415610a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3690612d44565b60405180910390fd5b610aa433600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110610a8d57fe5b906000526020600020906003020160000154611a79565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208181548110610aee57fe5b906000526020600020906003020160000154600a600082825403925050819055506000610b1a8261164e565b905060006060600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163384604051602401610b6c929190612b9c565b6040516020818303038152906040527f40c10f19000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610bf69190612b85565b6000604051808303816000865af19150503d8060008114610c33576040519150601f19603f3d011682016040523d82523d6000602084013e610c38565b606091505b509150915081610c4757600080fd5b610c8f600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002085611fdc565b7fc99009ef3dfc0489efa43797eee17157bc922e1ccfdddd9807414c7ca7b10f7c3384604051610cc0929190612bc5565b60405180910390a150505050565b6000600560009054906101000a900460ff16905090565b6000610d8e610cf26118a6565b84610d898560016000610d036118a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120a790919063ffffffff16565b6118ae565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e415750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610e80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7790612d04565b60405180910390fd5b610e8a8282611a79565b5050565b6000610e9933610f1b565b905090565b600080610eaa33610f1b565b905060005b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015610f1357610f02816113be565b820191508080600101915050610eaf565b508091505090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fea90612cc4565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61104133836120fc565b81600a600082825401925050819055506110596122f9565b828160000181815250504281602001818152505081816040018181525050600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000155602082015181600101556040820151816002015550507fa337adc42df840d8a4dbe5c08ee60fbd99a4b4ed84704bee7b85a0523b8bbf9f3384600c60008681526020019081526020016000206001015460405161114993929190612bee565b60405180910390a1505050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111ee5780601f106111c3576101008083540402835291602001916111ee565b820191906000526020600020905b8154815290600101906020018083116111d157829003601f168201915b5050505050905090565b60006112bb6112056118a6565b846112b6856040518060600160405280602581526020016130c7602591396001600061122f6118a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea29092919063ffffffff16565b6118ae565b6001905092915050565b60006112d96112d26118a6565b8484611c0d565b6001905092915050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113246118a6565b73ffffffffffffffffffffffffffffffffffffffff161461137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137190612dc4565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061140a57fe5b9060005260206000209060030201600001549050919050565b6000600a546114306107a9565b01905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b606080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905067ffffffffffffffff8111801561151957600080fd5b5060405190808252806020026020018201604052801561155357816020015b61154061231a565b8152602001906001900390816115385790505b50905060005b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611646576115ac816113be565b8282815181106115b857fe5b60200260200101516000600381106115cc57fe5b6020020181815250506115de816107b3565b8282815181106115ea57fe5b60200260200101516001600381106115fe57fe5b6020020181815250506116108161164e565b82828151811061161c57fe5b602002602001015160026003811061163057fe5b6020020181815250508080600101915050611559565b508091505090565b600080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061169b57fe5b906000526020600020906003020160010154420390506000600954820290506000600b5482816116c757fe5b0490506000600c6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020888154811061171a57fe5b90600052602060002090600302016002015481526020019081526020016000206000015482029050600081600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020888154811061178f57fe5b906000526020600020906003020160000154029050600060095482816117b157fe5b0490506000606482816117c057fe5b04905080975050505050505050919050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185990612cc4565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561191e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191590612de4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561198e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198590612ce4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a6c9190612e24565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae090612e04565b60405180910390fd5b611af5600083836122aa565b611b0a816002546120a790919063ffffffff16565b600281905550611b61816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120a790919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c019190612e24565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7490612da4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce490612c84565b60405180910390fd5b611cf88383836122aa565b611d6381604051806060016040528060268152602001613079602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea29092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611df6816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120a790919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e959190612e24565b60405180910390a3505050565b6000838311158290611eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee19190612c62565b60405180910390fd5b5060008385039050809150509392505050565b600080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110611f4a57fe5b90600052602060002090600302016001015442039050600c6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208581548110611fae57fe5b9060005260206000209060030201600201548152602001908152602001600020600101548110915050919050565b81805490508110611fec576120a3565b60008190505b60018380549050038110156120665782600182018154811061201057fe5b906000526020600020906003020183828154811061202a57fe5b90600052602060002090600302016000820154816000015560018201548160010155600282015481600201559050508080600101915050611ff2565b508180548061207157fe5b600190038181906000526020600020906003020160008082016000905560018201600090556002820160009055505090555b5050565b6000808284019050838110156120f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e990612d24565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561216c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216390612d84565b60405180910390fd5b612178826000836122aa565b6121e381604051806060016040528060228152602001613057602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea29092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061223a816002546122af90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161229e9190612e24565b60405180910390a35050565b505050565b60006122f183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ea2565b905092915050565b60405180606001604052806000815260200160008152602001600081525090565b6040518060600160405280600390602082028036833780820191505090505090565b60008135905061234b81613028565b92915050565b600082601f83011261236257600080fd5b813561237561237082612e87565b612e5a565b9150818183526020840193506020810190508385602084028201111561239a57600080fd5b60005b838110156123ca57816123b0888261233c565b84526020840193506020830192505060018101905061239d565b5050505092915050565b6000813590506123e38161303f565b92915050565b6000602082840312156123fb57600080fd5b60006124098482850161233c565b91505092915050565b6000806040838503121561242557600080fd5b60006124338582860161233c565b92505060206124448582860161233c565b9150509250929050565b60008060006060848603121561246357600080fd5b60006124718682870161233c565b93505060206124828682870161233c565b9250506040612493868287016123d4565b9150509250925092565b600080604083850312156124b057600080fd5b60006124be8582860161233c565b92505060206124cf858286016123d4565b9150509250929050565b600080604083850312156124ec57600080fd5b600083013567ffffffffffffffff81111561250657600080fd5b61251285828601612351565b9250506020612523858286016123d4565b9150509250929050565b60006020828403121561253f57600080fd5b600061254d848285016123d4565b91505092915050565b6000806040838503121561256957600080fd5b6000612577858286016123d4565b9250506020612588858286016123d4565b9150509250929050565b600061259e838361263e565b60608301905092915050565b60006125b68383612b58565b60208301905092915050565b6125cb81612fae565b82525050565b6125da81612f59565b82525050565b60006125eb82612ec9565b6125f58185612f0f565b935061260083612eaf565b8060005b838110156126315781516126188882612592565b975061262383612ef5565b925050600181019050612604565b5085935050505092915050565b61264781612ed4565b6126518184612f20565b925061265c82612ebf565b8060005b8381101561268d57815161267487826125aa565b965061267f83612f02565b925050600181019050612660565b505050505050565b61269e81612f6b565b82525050565b60006126af82612edf565b6126b98185612f2b565b93506126c9818560208601612fe4565b80840191505092915050565b60006126e082612eea565b6126ea8185612f36565b93506126fa818560208601612fe4565b61270381613017565b840191505092915050565b600061271b602383612f36565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612781602a83612f36565b91507f4f6e6c79206f776e65722063616e206d696e7420746f206d756c7469706c652060008301527f61646472657373657321000000000000000000000000000000000000000000006020830152604082019050919050565b60006127e7601a83612f36565b91507f4f6e6c79206f776e65722063616e20736574206d696e746572210000000000006000830152602082019050919050565b6000612827602283612f36565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061288d601c83612f36565b91507f4f6e6c79206d696e7465722063616e206d696e7420746f6b656e7321000000006000830152602082019050919050565b60006128cd601b83612f36565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b600061290d601383612f36565b91507f5374616b65207374696c6c206c6f636b656421000000000000000000000000006000830152602082019050919050565b600061294d601983612f36565b91507f4f6e6c79206f776e65722063616e20736574206f776e657221000000000000006000830152602082019050919050565b600061298d602183612f36565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006129f3602583612f36565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a59602283612f36565b91507f4f6e6c79206f776e65722063616e2073657420746f6b656e20636f6e7472616360008301527f74210000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612abf602483612f36565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612b25601f83612f36565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b612b6181612f97565b82525050565b612b7081612f97565b82525050565b612b7f81612fa1565b82525050565b6000612b9182846126a4565b915081905092915050565b6000604082019050612bb160008301856125d1565b612bbe6020830184612b67565b9392505050565b6000604082019050612bda60008301856125c2565b612be76020830184612b67565b9392505050565b6000606082019050612c0360008301866125c2565b612c106020830185612b67565b612c1d6040830184612b67565b949350505050565b60006020820190508181036000830152612c3f81846125e0565b905092915050565b6000602082019050612c5c6000830184612695565b92915050565b60006020820190508181036000830152612c7c81846126d5565b905092915050565b60006020820190508181036000830152612c9d8161270e565b9050919050565b60006020820190508181036000830152612cbd81612774565b9050919050565b60006020820190508181036000830152612cdd816127da565b9050919050565b60006020820190508181036000830152612cfd8161281a565b9050919050565b60006020820190508181036000830152612d1d81612880565b9050919050565b60006020820190508181036000830152612d3d816128c0565b9050919050565b60006020820190508181036000830152612d5d81612900565b9050919050565b60006020820190508181036000830152612d7d81612940565b9050919050565b60006020820190508181036000830152612d9d81612980565b9050919050565b60006020820190508181036000830152612dbd816129e6565b9050919050565b60006020820190508181036000830152612ddd81612a4c565b9050919050565b60006020820190508181036000830152612dfd81612ab2565b9050919050565b60006020820190508181036000830152612e1d81612b18565b9050919050565b6000602082019050612e396000830184612b67565b92915050565b6000602082019050612e546000830184612b76565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612e7d57600080fd5b8060405250919050565b600067ffffffffffffffff821115612e9e57600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b6000819050919050565b600081519050919050565b600060039050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b6000612f5282612f77565b9050919050565b6000612f6482612f77565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612fb982612fc0565b9050919050565b6000612fcb82612fd2565b9050919050565b6000612fdd82612f77565b9050919050565b60005b83811015613002578082015181840152602081019050612fe7565b83811115613011576000848401525b50505050565b6000601f19601f8301169050919050565b61303181612f47565b811461303c57600080fd5b50565b61304881612f97565b811461305357600080fd5b5056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202c3aa755903008d35a9ef74a4f03f6ab56da422e39ff1b068f9d68db99d1069264736f6c634300060c0033

Deployed Bytecode Sourcemap

6937:7731:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3156:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4010:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10042:288;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14521:144;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3433:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11933:403;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4187:321;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13494:575;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3342:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4516:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9809:196;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8643:97;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8804:254;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3541:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9588:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10373:386;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3247:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4742:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3668:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9157:174;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11345:125;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8479:106;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3851:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10827:430;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12705:602;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9401:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3156:83;3193:13;3226:5;3219:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3156:83;:::o;4010:169::-;4093:4;4110:39;4119:12;:10;:12::i;:::-;4133:7;4142:6;4110:8;:39::i;:::-;4167:4;4160:11;;4010:169;;;;:::o;10042:288::-;10160:6;;;;;;;;;;;10144:22;;:12;:10;:12::i;:::-;:22;;;10136:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10227:6;10223:100;10243:10;:17;10239:1;:21;10223:100;;;10281:30;10287:10;10298:1;10287:13;;;;;;;;;;;;;;10303:7;10281:5;:30::i;:::-;10262:3;;;;;;;10223:100;;;;10042:288;;:::o;14521:144::-;14595:6;;;;;;;;;;;14581:20;;:10;:20;;;14573:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;14651:6;14642;;:15;;;;;;;;;;;;;;;;;;14521:144;:::o;3433:100::-;3486:7;3513:12;;3506:19;;3433:100;:::o;11933:403::-;11997:4;12014:16;12039:8;:20;12048:10;12039:20;;;;;;;;;;;;;;;12060:6;12039:28;;;;;;;;;;;;;;;;;;:38;;;12033:3;:44;12014:63;;12106:15;:55;12122:8;:20;12131:10;12122:20;;;;;;;;;;;;;;;12143:6;12122:28;;;;;;;;;;;;;;;;;;:38;;;12106:55;;;;;;;;;;;:66;;;12092:11;:80;12088:241;;;12265:11;12196:15;:55;12212:8;:20;12221:10;12212:20;;;;;;;;;;;;;;;12233:6;12212:28;;;;;;;;;;;;;;;;;;:38;;;12196:55;;;;;;;;;;;:66;;;:80;12189:87;;;;;12088:241;12316:1;12309:8;;;11933:403;;;;:::o;4187:321::-;4293:4;4310:36;4320:6;4328:9;4339:6;4310:9;:36::i;:::-;4357:121;4366:6;4374:12;:10;:12::i;:::-;4388:89;4426:6;4388:89;;;;;;;;;;;;;;;;;:11;:19;4400:6;4388:19;;;;;;;;;;;;;;;:33;4408:12;:10;:12::i;:::-;4388:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;4357:8;:121::i;:::-;4496:4;4489:11;;4187:321;;;;;:::o;13494:575::-;13575:4;13550:29;;:21;13564:6;13550:13;:21::i;:::-;:29;;;;13542:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13614:54;13620:10;13632:8;:20;13641:10;13632:20;;;;;;;;;;;;;;;13653:6;13632:28;;;;;;;;;;;;;;;;;;:35;;;13614:5;:54::i;:::-;13695:8;:20;13704:10;13695:20;;;;;;;;;;;;;;;13716:6;13695:28;;;;;;;;;;;;;;;;;;:35;;;13679:12;;:51;;;;;;;;;;;13741:12;13756:22;13771:6;13756:14;:22::i;:::-;13741:37;;13790:12;13804:23;13839:14;;;;;;;;;;;13831:28;;13908:10;13920:7;13860:68;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13831:98;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13789:140;;;;13948:7;13940:16;;;;;;13967:49;13987:8;:20;13996:10;13987:20;;;;;;;;;;;;;;;14009:6;13967:19;:49::i;:::-;14032:29;14041:10;14053:7;14032:29;;;;;;;:::i;:::-;;;;;;;;13494:575;;;;:::o;3342:83::-;3383:5;3408:9;;;;;;;;;;;3401:16;;3342:83;:::o;4516:218::-;4604:4;4621:83;4630:12;:10;:12::i;:::-;4644:7;4653:50;4692:10;4653:11;:25;4665:12;:10;:12::i;:::-;4653:25;;;;;;;;;;;;;;;:34;4679:7;4653:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4621:8;:83::i;:::-;4722:4;4715:11;;4516:218;;;;:::o;9809:196::-;9898:7;;;;;;;;;;;9884:21;;:10;:21;;;:45;;;;9923:6;;;;;;;;;;;9909:20;;:10;:20;;;9884:45;9876:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;9973:24;9979:8;9989:7;9973:5;:24::i;:::-;9809:196;;:::o;8643:97::-;8687:4;8711:21;8721:10;8711:9;:21::i;:::-;8704:28;;8643:97;:::o;8804:254::-;8852:4;8869:12;8884:21;8894:10;8884:9;:21::i;:::-;8869:36;;8921:6;8916:109;8937:8;:20;8946:10;8937:20;;;;;;;;;;;;;;;:27;;;;8933:1;:31;8916:109;;;8996:17;9011:1;8996:14;:17::i;:::-;8985:28;;;;8966:3;;;;;;;8916:109;;;;9043:7;9036:14;;;8804:254;:::o;3541:119::-;3607:7;3634:9;:18;3644:7;3634:18;;;;;;;;;;;;;;;;3627:25;;3541:119;;;:::o;9588:145::-;9662:6;;;;;;;;;;;9648:20;;:10;:20;;;9640:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;9719:6;9710;;:15;;;;;;;;;;;;;;;;;;9588:145;:::o;10373:386::-;10437:26;10443:10;10455:7;10437:5;:26::i;:::-;10490:7;10474:12;;:23;;;;;;;;;;;10508:17;;:::i;:::-;10550:7;10536:4;:11;;:21;;;;;10585:3;10568:4;:14;;:20;;;;;10616:10;10599:4;:14;;:27;;;;;10637:8;:20;10646:10;10637:20;;;;;;;;;;;;;;;10663:4;10637:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10684:67;10691:10;10703:7;10712:15;:27;10728:10;10712:27;;;;;;;;;;;:38;;;10684:67;;;;;;;;:::i;:::-;;;;;;;;10373:386;;;:::o;3247:87::-;3286:13;3319:7;3312:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3247:87;:::o;4742:269::-;4835:4;4852:129;4861:12;:10;:12::i;:::-;4875:7;4884:96;4923:15;4884:96;;;;;;;;;;;;;;;;;:11;:25;4896:12;:10;:12::i;:::-;4884:25;;;;;;;;;;;;;;;:34;4910:7;4884:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;4852:8;:129::i;:::-;4999:4;4992:11;;4742:269;;;;:::o;3668:175::-;3754:4;3771:42;3781:12;:10;:12::i;:::-;3795:9;3806:6;3771:9;:42::i;:::-;3831:4;3824:11;;3668:175;;;;:::o;9157:174::-;9243:6;;;;;;;;;;;9227:22;;:12;:10;:12::i;:::-;:22;;;9219:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9315:8;9298:14;;:25;;;;;;;;;;;;;;;;;;9157:174;:::o;11345:125::-;11403:4;11427:8;:20;11436:10;11427:20;;;;;;;;;;;;;;;11448:6;11427:28;;;;;;;;;;;;;;;;;;:35;;;11420:42;;11345:125;;;:::o;8479:106::-;8525:4;8565:12;;8549:13;:11;:13::i;:::-;:28;8542:35;;8479:106;:::o;3851:151::-;3940:7;3967:11;:18;3979:5;3967:18;;;;;;;;;;;;;;;:27;3986:7;3967:27;;;;;;;;;;;;;;;;3960:34;;3851:151;;;;:::o;10827:430::-;10869:16;10898:30;10945:8;:20;10954:10;10945:20;;;;;;;;;;;;;;;:27;;;;10931:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;10898:75;;10989:6;10984:234;11005:8;:20;11014:10;11005:20;;;;;;;;;;;;;;;:27;;;;11001:1;:31;10984:234;;;11075:17;11090:1;11075:14;:17::i;:::-;11053:13;11067:1;11053:16;;;;;;;;;;;;;;11070:1;11053:19;;;;;;;;;;:39;;;;;11129:23;11150:1;11129:20;:23::i;:::-;11107:13;11121:1;11107:16;;;;;;;;;;;;;;11124:1;11107:19;;;;;;;;;;:45;;;;;11189:17;11204:1;11189:14;:17::i;:::-;11167:13;11181:1;11167:16;;;;;;;;;;;;;;11184:1;11167:19;;;;;;;;;;:39;;;;;11034:3;;;;;;;10984:234;;;;11236:13;11229:20;;;10827:430;:::o;12705:602::-;12763:4;12780:16;12805:8;:20;12814:10;12805:20;;;;;;;;;;;;;;;12826:6;12805:28;;;;;;;;;;;;;;;;;;:38;;;12799:3;:44;12780:63;;12854:24;12895:11;;12881;:25;12854:52;;12917:12;12954:8;;12932:19;:30;;;;;;12917:45;;12973:30;13016:15;:55;13032:8;:20;13041:10;13032:20;;;;;;;;;;;;;;;13053:6;13032:28;;;;;;;;;;;;;;;;;;:38;;;13016:55;;;;;;;;;;;:69;;;13006:7;:79;12973:112;;13096:17;13154:25;13116:8;:20;13125:10;13116:20;;;;;;;;;;;;;;;13137:6;13116:28;;;;;;;;;;;;;;;;;;:35;;;:63;13096:83;;13190:15;13223:11;;13208:12;:26;;;;;;13190:44;;13245:11;13272:3;13259:10;:16;;;;;;13245:30;;13293:6;13286:13;;;;;;;;;12705:602;;;:::o;9401:149::-;9477:6;;;;;;;;;;;9463:20;;:10;:20;;;9455:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;9535:7;9525;;:17;;;;;;;;;;;;;;;;;;9401:149;:::o;145:106::-;198:15;233:10;226:17;;145:106;:::o;6378:346::-;6497:1;6480:19;;:5;:19;;;;6472:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6578:1;6559:21;;:7;:21;;;;6551:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6662:6;6632:11;:18;6644:5;6632:18;;;;;;;;;;;;;;;:27;6651:7;6632:27;;;;;;;;;;;;;;;:36;;;;6700:7;6684:32;;6693:5;6684:32;;;6709:6;6684:32;;;;;;:::i;:::-;;;;;;;;6378:346;;;:::o;5566:378::-;5669:1;5650:21;;:7;:21;;;;5642:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;5720:49;5749:1;5753:7;5762:6;5720:20;:49::i;:::-;5797:24;5814:6;5797:12;;:16;;:24;;;;:::i;:::-;5782:12;:39;;;;5853:30;5876:6;5853:9;:18;5863:7;5853:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;5832:9;:18;5842:7;5832:18;;;;;;;;;;;;;;;:51;;;;5920:7;5899:37;;5916:1;5899:37;;;5929:6;5899:37;;;;;;:::i;:::-;;;;;;;;5566:378;;:::o;5019:539::-;5143:1;5125:20;;:6;:20;;;;5117:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5227:1;5206:23;;:9;:23;;;;5198:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5282:47;5303:6;5311:9;5322:6;5282:20;:47::i;:::-;5362:71;5384:6;5362:71;;;;;;;;;;;;;;;;;:9;:17;5372:6;5362:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;5342:9;:17;5352:6;5342:17;;;;;;;;;;;;;;;:91;;;;5467:32;5492:6;5467:9;:20;5477:9;5467:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5444:9;:20;5454:9;5444:20;;;;;;;;;;;;;;;:55;;;;5532:9;5515:35;;5524:6;5515:35;;;5543:6;5515:35;;;;;;:::i;:::-;;;;;;;;5019:539;;;:::o;1533:192::-;1619:7;1652:1;1647;:6;;1655:12;1639:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1679:9;1695:1;1691;:5;1679:17;;1716:1;1709:8;;;1533:192;;;;;:::o;11585:244::-;11643:4;11660:16;11685:8;:20;11694:10;11685:20;;;;;;;;;;;;;;;11706:6;11685:28;;;;;;;;;;;;;;;;;;:38;;;11679:3;:44;11660:63;;11755:15;:55;11771:8;:20;11780:10;11771:20;;;;;;;;;;;;;;;11792:6;11771:28;;;;;;;;;;;;;;;;;;:38;;;11755:55;;;;;;;;;;;:66;;;11741:11;:80;11734:87;;;11585:244;;;:::o;14197:256::-;14296:6;:13;;;;14286:6;:23;14282:36;;14311:7;;14282:36;14333:6;14342;14333:15;;14328:95;14366:1;14352:6;:13;;;;:15;14350:1;:17;14328:95;;;14400:6;14409:1;14407;:3;14400:11;;;;;;;;;;;;;;;;;;14388:6;14395:1;14388:9;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;14369:3;;;;;;;14328:95;;;;14433:6;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14197:256;;;:::o;1200:181::-;1258:7;1278:9;1294:1;1290;:5;1278:17;;1319:1;1314;:6;;1306:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1372:1;1365:8;;;1200:181;;;;:::o;5952:418::-;6055:1;6036:21;;:7;:21;;;;6028:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6108:49;6129:7;6146:1;6150:6;6108:20;:49::i;:::-;6191:68;6214:6;6191:68;;;;;;;;;;;;;;;;;:9;:18;6201:7;6191:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;6170:9;:18;6180:7;6170:18;;;;;;;;;;;;;;;:89;;;;6285:24;6302:6;6285:12;;:16;;:24;;;;:::i;:::-;6270:12;:39;;;;6351:1;6325:37;;6334:7;6325:37;;;6355:6;6325:37;;;;;;:::i;:::-;;;;;;;;5952:418;;:::o;6838:92::-;;;;:::o;1389:136::-;1447:7;1474:43;1478:1;1481;1474:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1467:50;;1389:136;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;;85:6;72:20;63:29;;97:33;124:5;97:33;:::i;:::-;57:78;;;;:::o;160:707::-;;277:3;270:4;262:6;258:17;254:27;244:2;;295:1;292;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;:::i;:::-;354:80;:::i;:::-;345:89;;451:5;476:6;469:5;462:21;506:4;498:6;494:17;484:27;;528:4;523:3;519:14;512:21;;581:6;628:3;620:4;612:6;608:17;603:3;599:27;596:36;593:2;;;645:1;642;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;738:3;760:37;793:3;781:10;760:37;:::i;:::-;755:3;748:50;821:4;816:3;812:14;805:21;;849:4;844:3;840:14;833:21;;712:149;702:1;699;695:9;690:14;;655:206;;;659:14;237:630;;;;;;;:::o;875:130::-;;955:6;942:20;933:29;;967:33;994:5;967:33;:::i;:::-;927:78;;;;:::o;1012:241::-;;1116:2;1104:9;1095:7;1091:23;1087:32;1084:2;;;1132:1;1129;1122:12;1084:2;1167:1;1184:53;1229:7;1220:6;1209:9;1205:22;1184:53;:::i;:::-;1174:63;;1146:97;1078:175;;;;:::o;1260:366::-;;;1381:2;1369:9;1360:7;1356:23;1352:32;1349:2;;;1397:1;1394;1387:12;1349:2;1432:1;1449:53;1494:7;1485:6;1474:9;1470:22;1449:53;:::i;:::-;1439:63;;1411:97;1539:2;1557:53;1602:7;1593:6;1582:9;1578:22;1557:53;:::i;:::-;1547:63;;1518:98;1343:283;;;;;:::o;1633:491::-;;;;1771:2;1759:9;1750:7;1746:23;1742:32;1739:2;;;1787:1;1784;1777:12;1739:2;1822:1;1839:53;1884:7;1875:6;1864:9;1860:22;1839:53;:::i;:::-;1829:63;;1801:97;1929:2;1947:53;1992:7;1983:6;1972:9;1968:22;1947:53;:::i;:::-;1937:63;;1908:98;2037:2;2055:53;2100:7;2091:6;2080:9;2076:22;2055:53;:::i;:::-;2045:63;;2016:98;1733:391;;;;;:::o;2131:366::-;;;2252:2;2240:9;2231:7;2227:23;2223:32;2220:2;;;2268:1;2265;2258:12;2220:2;2303:1;2320:53;2365:7;2356:6;2345:9;2341:22;2320:53;:::i;:::-;2310:63;;2282:97;2410:2;2428:53;2473:7;2464:6;2453:9;2449:22;2428:53;:::i;:::-;2418:63;;2389:98;2214:283;;;;;:::o;2504:502::-;;;2650:2;2638:9;2629:7;2625:23;2621:32;2618:2;;;2666:1;2663;2656:12;2618:2;2729:1;2718:9;2714:17;2701:31;2752:18;2744:6;2741:30;2738:2;;;2784:1;2781;2774:12;2738:2;2804:78;2874:7;2865:6;2854:9;2850:22;2804:78;:::i;:::-;2794:88;;2680:208;2919:2;2937:53;2982:7;2973:6;2962:9;2958:22;2937:53;:::i;:::-;2927:63;;2898:98;2612:394;;;;;:::o;3013:241::-;;3117:2;3105:9;3096:7;3092:23;3088:32;3085:2;;;3133:1;3130;3123:12;3085:2;3168:1;3185:53;3230:7;3221:6;3210:9;3206:22;3185:53;:::i;:::-;3175:63;;3147:97;3079:175;;;;:::o;3261:366::-;;;3382:2;3370:9;3361:7;3357:23;3353:32;3350:2;;;3398:1;3395;3388:12;3350:2;3433:1;3450:53;3495:7;3486:6;3475:9;3471:22;3450:53;:::i;:::-;3440:63;;3412:97;3540:2;3558:53;3603:7;3594:6;3583:9;3579:22;3558:53;:::i;:::-;3548:63;;3519:98;3344:283;;;;;:::o;3635:265::-;;3768:92;3856:3;3848:6;3768:92;:::i;:::-;3889:4;3884:3;3880:14;3866:28;;3761:139;;;;:::o;3909:173::-;;3996:46;4038:3;4030:6;3996:46;:::i;:::-;4071:4;4066:3;4062:14;4048:28;;3989:93;;;;:::o;4090:142::-;4181:45;4220:5;4181:45;:::i;:::-;4176:3;4169:58;4163:69;;:::o;4239:137::-;4338:32;4364:5;4338:32;:::i;:::-;4333:3;4326:45;4320:56;;:::o;4420:874::-;;4611:77;4682:5;4611:77;:::i;:::-;4701:109;4803:6;4798:3;4701:109;:::i;:::-;4694:116;;4831:79;4904:5;4831:79;:::i;:::-;4930:7;4958:1;4943:329;4968:6;4965:1;4962:13;4943:329;;;5035:6;5029:13;5056:109;5161:3;5146:13;5056:109;:::i;:::-;5049:116;;5182:83;5258:6;5182:83;:::i;:::-;5172:93;;5000:272;4990:1;4987;4983:9;4978:14;;4943:329;;;4947:14;5285:3;5278:10;;4590:704;;;;;;;:::o;5335:640::-;5458:52;5504:5;5458:52;:::i;:::-;5523:74;5590:6;5585:3;5523:74;:::i;:::-;5516:81;;5618:54;5666:5;5618:54;:::i;:::-;5692:7;5720:1;5705:258;5730:6;5727:1;5724:13;5705:258;;;5797:6;5791:13;5818:63;5877:3;5862:13;5818:63;:::i;:::-;5811:70;;5898:58;5949:6;5898:58;:::i;:::-;5888:68;;5762:201;5752:1;5749;5745:9;5740:14;;5705:258;;;5709:14;5437:538;;;;;:::o;5983:104::-;6060:21;6075:5;6060:21;:::i;:::-;6055:3;6048:34;6042:45;;:::o;6094:356::-;;6222:38;6254:5;6222:38;:::i;:::-;6272:88;6353:6;6348:3;6272:88;:::i;:::-;6265:95;;6365:52;6410:6;6405:3;6398:4;6391:5;6387:16;6365:52;:::i;:::-;6438:6;6433:3;6429:16;6422:23;;6202:248;;;;;:::o;6457:347::-;;6569:39;6602:5;6569:39;:::i;:::-;6620:71;6684:6;6679:3;6620:71;:::i;:::-;6613:78;;6696:52;6741:6;6736:3;6729:4;6722:5;6718:16;6696:52;:::i;:::-;6769:29;6791:6;6769:29;:::i;:::-;6764:3;6760:39;6753:46;;6549:255;;;;;:::o;6812:372::-;;6972:67;7036:2;7031:3;6972:67;:::i;:::-;6965:74;;7072:34;7068:1;7063:3;7059:11;7052:55;7141:5;7136:2;7131:3;7127:12;7120:27;7175:2;7170:3;7166:12;7159:19;;6958:226;;;:::o;7193:379::-;;7353:67;7417:2;7412:3;7353:67;:::i;:::-;7346:74;;7453:34;7449:1;7444:3;7440:11;7433:55;7522:12;7517:2;7512:3;7508:12;7501:34;7563:2;7558:3;7554:12;7547:19;;7339:233;;;:::o;7581:326::-;;7741:67;7805:2;7800:3;7741:67;:::i;:::-;7734:74;;7841:28;7837:1;7832:3;7828:11;7821:49;7898:2;7893:3;7889:12;7882:19;;7727:180;;;:::o;7916:371::-;;8076:67;8140:2;8135:3;8076:67;:::i;:::-;8069:74;;8176:34;8172:1;8167:3;8163:11;8156:55;8245:4;8240:2;8235:3;8231:12;8224:26;8278:2;8273:3;8269:12;8262:19;;8062:225;;;:::o;8296:328::-;;8456:67;8520:2;8515:3;8456:67;:::i;:::-;8449:74;;8556:30;8552:1;8547:3;8543:11;8536:51;8615:2;8610:3;8606:12;8599:19;;8442:182;;;:::o;8633:327::-;;8793:67;8857:2;8852:3;8793:67;:::i;:::-;8786:74;;8893:29;8889:1;8884:3;8880:11;8873:50;8951:2;8946:3;8942:12;8935:19;;8779:181;;;:::o;8969:319::-;;9129:67;9193:2;9188:3;9129:67;:::i;:::-;9122:74;;9229:21;9225:1;9220:3;9216:11;9209:42;9279:2;9274:3;9270:12;9263:19;;9115:173;;;:::o;9297:325::-;;9457:67;9521:2;9516:3;9457:67;:::i;:::-;9450:74;;9557:27;9553:1;9548:3;9544:11;9537:48;9613:2;9608:3;9604:12;9597:19;;9443:179;;;:::o;9631:370::-;;9791:67;9855:2;9850:3;9791:67;:::i;:::-;9784:74;;9891:34;9887:1;9882:3;9878:11;9871:55;9960:3;9955:2;9950:3;9946:12;9939:25;9992:2;9987:3;9983:12;9976:19;;9777:224;;;:::o;10010:374::-;;10170:67;10234:2;10229:3;10170:67;:::i;:::-;10163:74;;10270:34;10266:1;10261:3;10257:11;10250:55;10339:7;10334:2;10329:3;10325:12;10318:29;10375:2;10370:3;10366:12;10359:19;;10156:228;;;:::o;10393:371::-;;10553:67;10617:2;10612:3;10553:67;:::i;:::-;10546:74;;10653:34;10649:1;10644:3;10640:11;10633:55;10722:4;10717:2;10712:3;10708:12;10701:26;10755:2;10750:3;10746:12;10739:19;;10539:225;;;:::o;10773:373::-;;10933:67;10997:2;10992:3;10933:67;:::i;:::-;10926:74;;11033:34;11029:1;11024:3;11020:11;11013:55;11102:6;11097:2;11092:3;11088:12;11081:28;11137:2;11132:3;11128:12;11121:19;;10919:227;;;:::o;11155:331::-;;11315:67;11379:2;11374:3;11315:67;:::i;:::-;11308:74;;11415:33;11411:1;11406:3;11402:11;11395:54;11477:2;11472:3;11468:12;11461:19;;11301:185;;;:::o;11494:103::-;11567:24;11585:5;11567:24;:::i;:::-;11562:3;11555:37;11549:48;;:::o;11604:113::-;11687:24;11705:5;11687:24;:::i;:::-;11682:3;11675:37;11669:48;;:::o;11724:107::-;11803:22;11819:5;11803:22;:::i;:::-;11798:3;11791:35;11785:46;;:::o;11838:271::-;;11991:93;12080:3;12071:6;11991:93;:::i;:::-;11984:100;;12101:3;12094:10;;11972:137;;;;:::o;12116:365::-;;12287:2;12276:9;12272:18;12264:26;;12301:87;12385:1;12374:9;12370:17;12361:6;12301:87;:::i;:::-;12399:72;12467:2;12456:9;12452:18;12443:6;12399:72;:::i;:::-;12258:223;;;;;:::o;12488:349::-;;12651:2;12640:9;12636:18;12628:26;;12665:79;12741:1;12730:9;12726:17;12717:6;12665:79;:::i;:::-;12755:72;12823:2;12812:9;12808:18;12799:6;12755:72;:::i;:::-;12622:215;;;;;:::o;12844:460::-;;13035:2;13024:9;13020:18;13012:26;;13049:79;13125:1;13114:9;13110:17;13101:6;13049:79;:::i;:::-;13139:72;13207:2;13196:9;13192:18;13183:6;13139:72;:::i;:::-;13222;13290:2;13279:9;13275:18;13266:6;13222:72;:::i;:::-;13006:298;;;;;;:::o;13311:462::-;;13534:2;13523:9;13519:18;13511:26;;13584:9;13578:4;13574:20;13570:1;13559:9;13555:17;13548:47;13609:154;13758:4;13749:6;13609:154;:::i;:::-;13601:162;;13505:268;;;;:::o;13780:210::-;;13901:2;13890:9;13886:18;13878:26;;13915:65;13977:1;13966:9;13962:17;13953:6;13915:65;:::i;:::-;13872:118;;;;:::o;13997:310::-;;14144:2;14133:9;14129:18;14121:26;;14194:9;14188:4;14184:20;14180:1;14169:9;14165:17;14158:47;14219:78;14292:4;14283:6;14219:78;:::i;:::-;14211:86;;14115:192;;;;:::o;14314:416::-;;14514:2;14503:9;14499:18;14491:26;;14564:9;14558:4;14554:20;14550:1;14539:9;14535:17;14528:47;14589:131;14715:4;14589:131;:::i;:::-;14581:139;;14485:245;;;:::o;14737:416::-;;14937:2;14926:9;14922:18;14914:26;;14987:9;14981:4;14977:20;14973:1;14962:9;14958:17;14951:47;15012:131;15138:4;15012:131;:::i;:::-;15004:139;;14908:245;;;:::o;15160:416::-;;15360:2;15349:9;15345:18;15337:26;;15410:9;15404:4;15400:20;15396:1;15385:9;15381:17;15374:47;15435:131;15561:4;15435:131;:::i;:::-;15427:139;;15331:245;;;:::o;15583:416::-;;15783:2;15772:9;15768:18;15760:26;;15833:9;15827:4;15823:20;15819:1;15808:9;15804:17;15797:47;15858:131;15984:4;15858:131;:::i;:::-;15850:139;;15754:245;;;:::o;16006:416::-;;16206:2;16195:9;16191:18;16183:26;;16256:9;16250:4;16246:20;16242:1;16231:9;16227:17;16220:47;16281:131;16407:4;16281:131;:::i;:::-;16273:139;;16177:245;;;:::o;16429:416::-;;16629:2;16618:9;16614:18;16606:26;;16679:9;16673:4;16669:20;16665:1;16654:9;16650:17;16643:47;16704:131;16830:4;16704:131;:::i;:::-;16696:139;;16600:245;;;:::o;16852:416::-;;17052:2;17041:9;17037:18;17029:26;;17102:9;17096:4;17092:20;17088:1;17077:9;17073:17;17066:47;17127:131;17253:4;17127:131;:::i;:::-;17119:139;;17023:245;;;:::o;17275:416::-;;17475:2;17464:9;17460:18;17452:26;;17525:9;17519:4;17515:20;17511:1;17500:9;17496:17;17489:47;17550:131;17676:4;17550:131;:::i;:::-;17542:139;;17446:245;;;:::o;17698:416::-;;17898:2;17887:9;17883:18;17875:26;;17948:9;17942:4;17938:20;17934:1;17923:9;17919:17;17912:47;17973:131;18099:4;17973:131;:::i;:::-;17965:139;;17869:245;;;:::o;18121:416::-;;18321:2;18310:9;18306:18;18298:26;;18371:9;18365:4;18361:20;18357:1;18346:9;18342:17;18335:47;18396:131;18522:4;18396:131;:::i;:::-;18388:139;;18292:245;;;:::o;18544:416::-;;18744:2;18733:9;18729:18;18721:26;;18794:9;18788:4;18784:20;18780:1;18769:9;18765:17;18758:47;18819:131;18945:4;18819:131;:::i;:::-;18811:139;;18715:245;;;:::o;18967:416::-;;19167:2;19156:9;19152:18;19144:26;;19217:9;19211:4;19207:20;19203:1;19192:9;19188:17;19181:47;19242:131;19368:4;19242:131;:::i;:::-;19234:139;;19138:245;;;:::o;19390:416::-;;19590:2;19579:9;19575:18;19567:26;;19640:9;19634:4;19630:20;19626:1;19615:9;19611:17;19604:47;19665:131;19791:4;19665:131;:::i;:::-;19657:139;;19561:245;;;:::o;19813:222::-;;19940:2;19929:9;19925:18;19917:26;;19954:71;20022:1;20011:9;20007:17;19998:6;19954:71;:::i;:::-;19911:124;;;;:::o;20042:214::-;;20165:2;20154:9;20150:18;20142:26;;20179:67;20243:1;20232:9;20228:17;20219:6;20179:67;:::i;:::-;20136:120;;;;:::o;20263:256::-;;20325:2;20319:9;20309:19;;20363:4;20355:6;20351:17;20462:6;20450:10;20447:22;20426:18;20414:10;20411:34;20408:62;20405:2;;;20483:1;20480;20473:12;20405:2;20503:10;20499:2;20492:22;20303:216;;;;:::o;20526:304::-;;20685:18;20677:6;20674:30;20671:2;;;20717:1;20714;20707:12;20671:2;20752:4;20744:6;20740:17;20732:25;;20815:4;20809;20805:15;20797:23;;20608:222;;;:::o;20837:174::-;;20946:3;20938:11;;20984:4;20979:3;20975:14;20967:22;;20932:79;;;:::o;21018:97::-;;21102:3;21094:11;;21088:27;;;:::o;21122:160::-;;21254:5;21248:12;21238:22;;21219:63;;;:::o;21289:108::-;;21383:4;21373:14;;21361:36;;;:::o;21404:121::-;;21497:5;21491:12;21481:22;;21462:63;;;:::o;21532:122::-;;21626:5;21620:12;21610:22;;21591:63;;;:::o;21661:131::-;;21782:4;21777:3;21773:14;21765:22;;21759:33;;;:::o;21799:106::-;;21895:4;21890:3;21886:14;21878:22;;21872:33;;;:::o;21913:201::-;;22066:6;22061:3;22054:19;22103:4;22098:3;22094:14;22079:29;;22047:67;;;;:::o;22123:130::-;;22244:3;22229:18;;22222:31;;;;:::o;22262:144::-;;22397:3;22382:18;;22375:31;;;;:::o;22415:163::-;;22530:6;22525:3;22518:19;22567:4;22562:3;22558:14;22543:29;;22511:67;;;;:::o;22586:91::-;;22648:24;22666:5;22648:24;:::i;:::-;22637:35;;22631:46;;;:::o;22684:99::-;;22754:24;22772:5;22754:24;:::i;:::-;22743:35;;22737:46;;;:::o;22790:85::-;;22863:5;22856:13;22849:21;22838:32;;22832:43;;;:::o;22882:121::-;;22955:42;22948:5;22944:54;22933:65;;22927:76;;;:::o;23010:72::-;;23072:5;23061:16;;23055:27;;;:::o;23089:81::-;;23160:4;23153:5;23149:16;23138:27;;23132:38;;;:::o;23177:129::-;;23264:37;23295:5;23264:37;:::i;:::-;23251:50;;23245:61;;;:::o;23313:121::-;;23392:37;23423:5;23392:37;:::i;:::-;23379:50;;23373:61;;;:::o;23441:108::-;;23520:24;23538:5;23520:24;:::i;:::-;23507:37;;23501:48;;;:::o;23557:268::-;23622:1;23629:101;23643:6;23640:1;23637:13;23629:101;;;23719:1;23714:3;23710:11;23704:18;23700:1;23695:3;23691:11;23684:39;23665:2;23662:1;23658:10;23653:15;;23629:101;;;23745:6;23742:1;23739:13;23736:2;;;23810:1;23801:6;23796:3;23792:16;23785:27;23736:2;23606:219;;;;:::o;23833:97::-;;23921:2;23917:7;23912:2;23905:5;23901:14;23897:28;23887:38;;23881:49;;;:::o;23938:117::-;24007:24;24025:5;24007:24;:::i;:::-;24000:5;23997:35;23987:2;;24046:1;24043;24036:12;23987:2;23981:74;:::o;24062:117::-;24131:24;24149:5;24131:24;:::i;:::-;24124:5;24121:35;24111:2;;24170:1;24167;24160:12;24111:2;24105:74;:::o

Swarm Source

ipfs://2c3aa755903008d35a9ef74a4f03f6ab56da422e39ff1b068f9d68db99d10692
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.