ETH Price: $3,898.44 (+0.36%)

Token

MoeTheMartian (MOMO)
 

Overview

Max Total Supply

410,955,263,483,570.277809030602176921 MOMO

Holders

156 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.372015777410765226 MOMO

Value
$0.00
0xa03205c3169a9ab942e4be2c3543c34dd1bd730a
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

A community builder memecoin. Custom logic, sliding tax w/ burn sell and liq redistribution (automated) w/ caller rewards and a vesting schedule. The meme is to encourage space exploration and spread happy cheers in the space.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MoeTheMartianContract

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-01
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
*  
* $MOMO - MoeTheMartian's Token
* 
*  
* Join the Martian expedition and be part of the next big thing in the crypto universe.
* $MOMO isn't just a token; it's a ticket to the stars. With unique anti-bot measures,
* incentivized holding strategies, and a community that's out of this world, our destination is Mars.
* Don't miss the rocket! #ToMarsWithMOMO 🚀🪐
* 
* A community-driven token with unique features:
*
* -- Anti-bot measures to ensure fair trading
* -- Sliding tax mechanism rewarding early and frequent buyers
* -- Liquidity redirection to constantly strengthen the pool
* -- Vesting schedule for holders, rewards based on amount of $MOMO held
* -- Reentrancy defense against attacks
*
* Hold, trade, and be part of an epic interplanetary adventure!
* X: https://twitter.com/MoeTheMartian
* Website: TBD -- I will deploy this contract first, and after this begin developing a launchpage good enough for SpaceX to use
**/

contract ReentrancyGuard {
    bool private _notEntered = true;
    
    modifier nonReentrant() {
        require(_notEntered, "Reentrant call");
        _notEntered = false;
        _;
        _notEntered = true;
    }
}

abstract contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event TaxRedistributed(address indexed sender, uint256 halfTax, uint256 ethReceived);
    event RewardClaimed(address indexed claimer, uint256 reward);

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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);
    function increaseAllowance(address spender, uint addedValue) external returns (bool);
    function decreaseAllowance(address spender, uint subtractedValue) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IUniswapV2Router02 {
    function WETH() external pure returns (address);
    function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);
    function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);
}

contract MOMOToken is IERC20, IERC20Metadata, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name = "MoeTheMartian";
    string private _symbol = "MOMO";

    constructor() {
    _totalSupply = 420 * 10**12 * 10**18; // 420 trillion tokens with 18 decimals
    _balances[msg.sender] = _totalSupply;
    emit Transfer(address(0), msg.sender, _totalSupply);
    _transferOwnership(msg.sender);
}

function _rewardCaller(address caller, uint256 reward) internal {
    _balances[caller] += reward;
}

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(msg.sender, 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(msg.sender, spender, amount);
        return true;
    }

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

    function increaseAllowance(address spender, uint addedValue) public virtual override returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint subtractedValue) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(msg.sender, spender, currentAllowance - subtractedValue);
        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");
        require(amount > 0, "Transfer amount must be greater than zero");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, 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 _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

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

contract MoeTheMartianContract is MOMOToken, ReentrancyGuard {
    mapping(address => uint256) public lastBuyTimestamp;
    uint256 public taxRate = 20;
    uint256 public accumulatedTax = 0;
    uint256 public redistributionThreshold = 420000 * 10 ** decimals();
    uint256 public lastRedistribution;
    uint256 public rewardPool;
    mapping(address => uint256) public lastClaimTime;
    uint256 public constant CLAIM_INTERVAL = 420 hours;
    uint256 public constant CLIFF_DURATION = 30 days;

    address public uniswapV2Pair;
    IUniswapV2Router02 public uniswapV2Router;

    constructor() {
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    }

    function setPairAddress() external onlyOwner {
        uniswapV2Pair = IUniswapV2Factory(0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f).getPair(address(this), uniswapV2Router.WETH());
        require(uniswapV2Pair != address(0), "Pair address not found");
    }

    function getPathForTokenToETH() private view returns (address[] memory) {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        return path;
    }

    // Implementing the nonReentrant modifier to the necessary functions
    function redistributeTax() external nonReentrant {
        require(accumulatedTax >= redistributionThreshold, "Insufficient accumulated tax for redistribution");
        uint256 halfTax = accumulatedTax / 2;
        uint256 ethReceived = _swapTokensForETH(halfTax);
        _addLiquidity(halfTax, ethReceived);
        accumulatedTax = 0;
        emit TaxRedistributed(msg.sender, halfTax, ethReceived);
    }

    function _swapTokensForETH(uint256 tokenAmount) internal nonReentrant returns (uint256) {
        uint256 initialBalance = address(this).balance;
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            getPathForTokenToETH(),
            address(this),
            block.timestamp
        );
        return address(this).balance - initialBalance;
    }

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal nonReentrant {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }

      receive() external payable {}

    function setTaxRate(uint256 newTaxRate) external onlyOwner {
        require(newTaxRate >= 0 && newTaxRate <= 100, "Invalid tax rate");
        taxRate = newTaxRate;
    }

    function setRedistributionThreshold(uint256 newThreshold) external onlyOwner {
        redistributionThreshold = newThreshold;
    }

    function withdrawStrayTokens(IERC20 token) external onlyOwner {
        require(address(token) != uniswapV2Pair, "Cannot withdraw from the liquidity pool");
        uint256 amount = token.balanceOf(address(this));
        token.transfer(msg.sender, amount);
    }

    function withdrawStrayETH() external onlyOwner {
        (bool success, ) = msg.sender.call{value: address(this).balance}("");
        require(success, "Failed to send Ether");
    }

  function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {
    if (uniswapV2Pair == address(0)) {
        require(from == owner() || to == owner(), "Trading is not started");
        return;
    }
    if (from == uniswapV2Pair && to != address(uniswapV2Router)) { 
        require(block.timestamp - lastBuyTimestamp[msg.sender] > 60, "1-minute cooldown between buys");
        if (taxRate > 1) {
            uint256 taxAmount = (taxRate * amount) / 100;
            accumulatedTax += taxAmount;
            amount -= taxAmount;
            taxRate--;
        }

        if (accumulatedTax >= redistributionThreshold) {
    uint256 halfTax = accumulatedTax / 2;
    uint256 rewardForCaller = (halfTax * 42) / 1000;  // 4.2% of the halfTax
    uint256 ethReceived = _swapTokensForETH(halfTax - rewardForCaller);
    _addLiquidity(halfTax - rewardForCaller, ethReceived);
    _rewardCaller(msg.sender, rewardForCaller);  // Reward the caller using the helper function
    accumulatedTax -= halfTax;
    emit TaxRedistributed(msg.sender, halfTax, ethReceived);
        
}

        lastBuyTimestamp[msg.sender] = block.timestamp;
    } else if (to == uniswapV2Pair) { 
        require(block.timestamp - lastBuyTimestamp[msg.sender] > 60, "1-minute cooldown after buying");
        uint256 burnAmount = (taxRate * amount) / 100;
        _burn(msg.sender, burnAmount);
    }
}

    function burn(uint256 value) external {
        _burn(msg.sender, value);
    }

    function claimRewards() external {
        require(block.timestamp >= lastClaimTime[msg.sender] + CLAIM_INTERVAL + CLIFF_DURATION, "You can only claim every 420 hours after the cliff duration");
        uint256 reward = (balanceOf(msg.sender) * rewardPool) / totalSupply();
        _transfer(address(this), msg.sender, reward);
        lastClaimTime[msg.sender] = block.timestamp;
        emit RewardClaimed(msg.sender, reward);
    }
}

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"claimer","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"halfTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"TaxRedistributed","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"},{"inputs":[],"name":"CLAIM_INTERVAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CLIFF_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accumulatedTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","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":[{"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":"","type":"address"}],"name":"lastBuyTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastClaimTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRedistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redistributeTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"redistributionThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setPairAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"setRedistributionThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTaxRate","type":"uint256"}],"name":"setTaxRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStrayETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"withdrawStrayTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600d81526020017f4d6f655468654d61727469616e00000000000000000000000000000000000000815250600490816200004a91906200056e565b506040518060400160405280600481526020017f4d4f4d4f00000000000000000000000000000000000000000000000000000000815250600590816200009191906200056e565b506001600660006101000a81548160ff02191690831515021790555060146008556000600955620000c76200022760201b60201c565b600a620000d59190620007e5565b620668a0620000e5919062000836565b600a55348015620000f557600080fd5b506d14b5253145b397d6545100000000600381905550600354600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600354604051620001b3919062000892565b60405180910390a3620001cc336200023060201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620008af565b60006012905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200037657607f821691505b6020821081036200038c576200038b6200032e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003f67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003b7565b620004028683620003b7565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200044f6200044962000443846200041a565b62000424565b6200041a565b9050919050565b6000819050919050565b6200046b836200042e565b620004836200047a8262000456565b848454620003c4565b825550505050565b600090565b6200049a6200048b565b620004a781848462000460565b505050565b5b81811015620004cf57620004c360008262000490565b600181019050620004ad565b5050565b601f8211156200051e57620004e88162000392565b620004f384620003a7565b8101602085101562000503578190505b6200051b6200051285620003a7565b830182620004ac565b50505b505050565b600082821c905092915050565b6000620005436000198460080262000523565b1980831691505092915050565b60006200055e838362000530565b9150826002028217905092915050565b6200057982620002f4565b67ffffffffffffffff811115620005955762000594620002ff565b5b620005a182546200035d565b620005ae828285620004d3565b600060209050601f831160018114620005e65760008415620005d1578287015190505b620005dd858262000550565b8655506200064d565b601f198416620005f68662000392565b60005b828110156200062057848901518255600182019150602085019450602081019050620005f9565b868310156200064057848901516200063c601f89168262000530565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620006e357808604811115620006bb57620006ba62000655565b5b6001851615620006cb5780820291505b8081029050620006db8562000684565b94506200069b565b94509492505050565b600082620006fe5760019050620007d1565b816200070e5760009050620007d1565b8160018114620007275760028114620007325762000768565b6001915050620007d1565b60ff84111562000747576200074662000655565b5b8360020a91508482111562000761576200076062000655565b5b50620007d1565b5060208310610133831016604e8410600b8410161715620007a25782820a9050838111156200079c576200079b62000655565b5b620007d1565b620007b1848484600162000691565b92509050818404811115620007cb57620007ca62000655565b5b81810290505b9392505050565b600060ff82169050919050565b6000620007f2826200041a565b9150620007ff83620007d8565b92506200082e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006ec565b905092915050565b600062000843826200041a565b915062000850836200041a565b925082820262000860816200041a565b915082820484148315176200087a576200087962000655565b5b5092915050565b6200088c816200041a565b82525050565b6000602082019050620008a9600083018462000881565b92915050565b61394c80620008bf6000396000f3fe6080604052600436106101f25760003560e01c8063771a3a1d1161010d578063b3daa652116100a0578063dd62ed3e1161006f578063dd62ed3e146106c6578063e66382a914610703578063ef7898d01461072c578063f2fde38b14610769578063f9c0a3c314610792576101f9565b8063b3daa6521461061e578063b77cf9c614610649578063bea42c8e14610686578063c6d69a301461069d576101f9565b80639e4a56b1116100dc5780639e4a56b114610564578063a457c2d71461058d578063a9059cbb146105ca578063a9c404e314610607576101f9565b8063771a3a1d146104b857806379f0dbaa146104e35780638da5cb5b1461050e57806395d89b4114610539576101f9565b8063395093511161018557806366666aa91161015457806366666aa91461040e5780636cd65eed1461043957806370a0823114610464578063715018a6146104a1576101f9565b8063395093511461035257806342966c681461038f57806349bd5a5e146103b857806349d3a0c1146103e3576101f9565b806323b872dd116101c157806323b872dd146102bc57806328101f50146102f9578063313ce56714610310578063372500ab1461033b576101f9565b806306fdde03146101fe578063095ea7b3146102295780631694505e1461026657806318160ddd14610291576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107bd565b6040516102209190612463565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b919061252d565b61084f565b60405161025d9190612588565b60405180910390f35b34801561027257600080fd5b5061027b610866565b6040516102889190612602565b60405180910390f35b34801561029d57600080fd5b506102a661088c565b6040516102b3919061262c565b60405180910390f35b3480156102c857600080fd5b506102e360048036038101906102de9190612647565b610896565b6040516102f09190612588565b60405180910390f35b34801561030557600080fd5b5061030e610989565b005b34801561031c57600080fd5b50610325610bf1565b60405161033291906126b6565b60405180910390f35b34801561034757600080fd5b50610350610bfa565b005b34801561035e57600080fd5b506103796004803603810190610374919061252d565b610d64565b6040516103869190612588565b60405180910390f35b34801561039b57600080fd5b506103b660048036038101906103b191906126d1565b610e02565b005b3480156103c457600080fd5b506103cd610e0f565b6040516103da919061270d565b60405180910390f35b3480156103ef57600080fd5b506103f8610e35565b604051610405919061262c565b60405180910390f35b34801561041a57600080fd5b50610423610e3c565b604051610430919061262c565b60405180910390f35b34801561044557600080fd5b5061044e610e42565b60405161045b919061262c565b60405180910390f35b34801561047057600080fd5b5061048b60048036038101906104869190612728565b610e48565b604051610498919061262c565b60405180910390f35b3480156104ad57600080fd5b506104b6610e91565b005b3480156104c457600080fd5b506104cd610f12565b6040516104da919061262c565b60405180910390f35b3480156104ef57600080fd5b506104f8610f18565b604051610505919061262c565b60405180910390f35b34801561051a57600080fd5b50610523610f1e565b604051610530919061270d565b60405180910390f35b34801561054557600080fd5b5061054e610f47565b60405161055b9190612463565b60405180910390f35b34801561057057600080fd5b5061058b600480360381019061058691906126d1565b610fd9565b005b34801561059957600080fd5b506105b460048036038101906105af919061252d565b611058565b6040516105c19190612588565b60405180910390f35b3480156105d657600080fd5b506105f160048036038101906105ec919061252d565b61113e565b6040516105fe9190612588565b60405180910390f35b34801561061357600080fd5b5061061c611155565b005b34801561062a57600080fd5b506106336112a7565b604051610640919061262c565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190612728565b6112ae565b60405161067d919061262c565b60405180910390f35b34801561069257600080fd5b5061069b6112c6565b005b3480156106a957600080fd5b506106c460048036038101906106bf91906126d1565b6113ea565b005b3480156106d257600080fd5b506106ed60048036038101906106e89190612755565b6114ba565b6040516106fa919061262c565b60405180910390f35b34801561070f57600080fd5b5061072a600480360381019061072591906127d3565b611541565b005b34801561073857600080fd5b50610753600480360381019061074e9190612728565b611747565b604051610760919061262c565b60405180910390f35b34801561077557600080fd5b50610790600480360381019061078b9190612728565b61175f565b005b34801561079e57600080fd5b506107a761184f565b6040516107b4919061262c565b60405180910390f35b6060600480546107cc9061282f565b80601f01602080910402602001604051908101604052809291908181526020018280546107f89061282f565b80156108455780601f1061081a57610100808354040283529160200191610845565b820191906000526020600020905b81548152906001019060200180831161082857829003601f168201915b5050505050905090565b600061085c338484611855565b6001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600354905090565b60006108a3848484611a1e565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095e906128d2565b60405180910390fd5b61097d853385846109789190612921565b611855565b60019150509392505050565b3373ffffffffffffffffffffffffffffffffffffffff166109a8610f1e565b73ffffffffffffffffffffffffffffffffffffffff16146109fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f5906129a1565b60405180910390fd5b735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac091906129d6565b6040518363ffffffff1660e01b8152600401610add929190612a03565b602060405180830381865afa158015610afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1e91906129d6565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be690612a78565b60405180910390fd5b565b60006012905090565b62278d0062171240600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c4c9190612a98565b610c569190612a98565b421015610c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8f90612b3e565b60405180910390fd5b6000610ca261088c565b600c54610cae33610e48565b610cb89190612b5e565b610cc29190612bcf565b9050610ccf303383611a1e565b42600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724182604051610d59919061262c565b60405180910390a250565b6000610df8338484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610df39190612a98565b611855565b6001905092915050565b610e0c3382611cd6565b50565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6217124081565b600c5481565b600b5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610eb0610f1e565b73ffffffffffffffffffffffffffffffffffffffff1614610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd906129a1565b60405180910390fd5b610f106000611e9f565b565b60085481565b600a5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610f569061282f565b80601f0160208091040260200160405190810160405280929190818152602001828054610f829061282f565b8015610fcf5780601f10610fa457610100808354040283529160200191610fcf565b820191906000526020600020905b815481529060010190602001808311610fb257829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff16610ff8610f1e565b73ffffffffffffffffffffffffffffffffffffffff161461104e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611045906129a1565b60405180910390fd5b80600a8190555050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561111d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111490612c72565b60405180910390fd5b6111333385858461112e9190612921565b611855565b600191505092915050565b600061114b338484611a1e565b6001905092915050565b600660009054906101000a900460ff166111a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119b90612cde565b60405180910390fd5b6000600660006101000a81548160ff021916908315150217905550600a546009541015611206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fd90612d70565b60405180910390fd5b600060026009546112179190612bcf565b9050600061122482611f63565b905061123082826120e4565b60006009819055503373ffffffffffffffffffffffffffffffffffffffff167f3cbad58205fb7807d9b82256bea01899292984b98055948563a56dbbc4e3e84b8383604051611280929190612d90565b60405180910390a250506001600660006101000a81548160ff021916908315150217905550565b62278d0081565b600d6020528060005260406000206000915090505481565b3373ffffffffffffffffffffffffffffffffffffffff166112e5610f1e565b73ffffffffffffffffffffffffffffffffffffffff161461133b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611332906129a1565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161136190612dea565b60006040518083038185875af1925050503d806000811461139e576040519150601f19603f3d011682016040523d82523d6000602084013e6113a3565b606091505b50509050806113e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113de90612e4b565b60405180910390fd5b50565b3373ffffffffffffffffffffffffffffffffffffffff16611409610f1e565b73ffffffffffffffffffffffffffffffffffffffff161461145f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611456906129a1565b60405180910390fd5b60008110158015611471575060648111155b6114b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a790612eb7565b60405180910390fd5b8060088190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16611560610f1e565b73ffffffffffffffffffffffffffffffffffffffff16146115b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ad906129a1565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163d90612f49565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611681919061270d565b602060405180830381865afa15801561169e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c29190612f7e565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016116ff929190612fab565b6020604051808303816000875af115801561171e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117429190613000565b505050565b60076020528060005260406000206000915090505481565b3373ffffffffffffffffffffffffffffffffffffffff1661177e610f1e565b73ffffffffffffffffffffffffffffffffffffffff16146117d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cb906129a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183a9061309f565b60405180910390fd5b61184c81611e9f565b50565b60095481565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bb90613131565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192a906131c3565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a11919061262c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8490613255565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af3906132e7565b60405180910390fd5b60008111611b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3690613379565b60405180910390fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd9061340b565b60405180910390fd5b8181611bd29190612921565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c649190612a98565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cc8919061262c565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3c9061349d565b60405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc39061352f565b60405180910390fd5b8181611dd89190612921565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160036000828254611e2d9190612921565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e92919061262c565b60405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600660009054906101000a900460ff16611fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fab90612cde565b60405180910390fd5b6000600660006101000a81548160ff021916908315150217905550600047905061200130600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611855565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94784600061204a61224e565b30426040518663ffffffff1660e01b815260040161206c959493929190613648565b6000604051808303816000875af115801561208b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906120b491906137ea565b5080476120c19190612921565b9150506001600660006101000a81548160ff021916908315150217905550919050565b600660009054906101000a900460ff16612133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212a90612cde565b60405180910390fd5b6000600660006101000a81548160ff02191690831515021790555061217b30600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611855565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806121c7610f1e565b426040518863ffffffff1660e01b81526004016121e996959493929190613833565b60606040518083038185885af1158015612207573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061222c9190613894565b5050506001600660006101000a81548160ff0219169083151502179055505050565b60606000600267ffffffffffffffff81111561226d5761226c6136a7565b5b60405190808252806020026020018201604052801561229b5781602001602082028036833780820191505090505b50905030816000815181106122b3576122b26138e7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561235a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237e91906129d6565b81600181518110612392576123916138e7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508091505090565b600081519050919050565b600082825260208201905092915050565b60005b8381101561240d5780820151818401526020810190506123f2565b60008484015250505050565b6000601f19601f8301169050919050565b6000612435826123d3565b61243f81856123de565b935061244f8185602086016123ef565b61245881612419565b840191505092915050565b6000602082019050818103600083015261247d818461242a565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124c482612499565b9050919050565b6124d4816124b9565b81146124df57600080fd5b50565b6000813590506124f1816124cb565b92915050565b6000819050919050565b61250a816124f7565b811461251557600080fd5b50565b60008135905061252781612501565b92915050565b600080604083850312156125445761254361248f565b5b6000612552858286016124e2565b925050602061256385828601612518565b9150509250929050565b60008115159050919050565b6125828161256d565b82525050565b600060208201905061259d6000830184612579565b92915050565b6000819050919050565b60006125c86125c36125be84612499565b6125a3565b612499565b9050919050565b60006125da826125ad565b9050919050565b60006125ec826125cf565b9050919050565b6125fc816125e1565b82525050565b600060208201905061261760008301846125f3565b92915050565b612626816124f7565b82525050565b6000602082019050612641600083018461261d565b92915050565b6000806000606084860312156126605761265f61248f565b5b600061266e868287016124e2565b935050602061267f868287016124e2565b925050604061269086828701612518565b9150509250925092565b600060ff82169050919050565b6126b08161269a565b82525050565b60006020820190506126cb60008301846126a7565b92915050565b6000602082840312156126e7576126e661248f565b5b60006126f584828501612518565b91505092915050565b612707816124b9565b82525050565b600060208201905061272260008301846126fe565b92915050565b60006020828403121561273e5761273d61248f565b5b600061274c848285016124e2565b91505092915050565b6000806040838503121561276c5761276b61248f565b5b600061277a858286016124e2565b925050602061278b858286016124e2565b9150509250929050565b60006127a0826124b9565b9050919050565b6127b081612795565b81146127bb57600080fd5b50565b6000813590506127cd816127a7565b92915050565b6000602082840312156127e9576127e861248f565b5b60006127f7848285016127be565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061284757607f821691505b60208210810361285a57612859612800565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006128bc6028836123de565b91506128c782612860565b604082019050919050565b600060208201905081810360008301526128eb816128af565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061292c826124f7565b9150612937836124f7565b925082820390508181111561294f5761294e6128f2565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061298b6020836123de565b915061299682612955565b602082019050919050565b600060208201905081810360008301526129ba8161297e565b9050919050565b6000815190506129d0816124cb565b92915050565b6000602082840312156129ec576129eb61248f565b5b60006129fa848285016129c1565b91505092915050565b6000604082019050612a1860008301856126fe565b612a2560208301846126fe565b9392505050565b7f506169722061646472657373206e6f7420666f756e6400000000000000000000600082015250565b6000612a626016836123de565b9150612a6d82612a2c565b602082019050919050565b60006020820190508181036000830152612a9181612a55565b9050919050565b6000612aa3826124f7565b9150612aae836124f7565b9250828201905080821115612ac657612ac56128f2565b5b92915050565b7f596f752063616e206f6e6c7920636c61696d2065766572792034323020686f7560008201527f72732061667465722074686520636c696666206475726174696f6e0000000000602082015250565b6000612b28603b836123de565b9150612b3382612acc565b604082019050919050565b60006020820190508181036000830152612b5781612b1b565b9050919050565b6000612b69826124f7565b9150612b74836124f7565b9250828202612b82816124f7565b91508282048414831517612b9957612b986128f2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612bda826124f7565b9150612be5836124f7565b925082612bf557612bf4612ba0565b5b828204905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612c5c6025836123de565b9150612c6782612c00565b604082019050919050565b60006020820190508181036000830152612c8b81612c4f565b9050919050565b7f5265656e7472616e742063616c6c000000000000000000000000000000000000600082015250565b6000612cc8600e836123de565b9150612cd382612c92565b602082019050919050565b60006020820190508181036000830152612cf781612cbb565b9050919050565b7f496e73756666696369656e7420616363756d756c617465642074617820666f7260008201527f207265646973747269627574696f6e0000000000000000000000000000000000602082015250565b6000612d5a602f836123de565b9150612d6582612cfe565b604082019050919050565b60006020820190508181036000830152612d8981612d4d565b9050919050565b6000604082019050612da5600083018561261d565b612db2602083018461261d565b9392505050565b600081905092915050565b50565b6000612dd4600083612db9565b9150612ddf82612dc4565b600082019050919050565b6000612df582612dc7565b9150819050919050565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b6000612e356014836123de565b9150612e4082612dff565b602082019050919050565b60006020820190508181036000830152612e6481612e28565b9050919050565b7f496e76616c696420746178207261746500000000000000000000000000000000600082015250565b6000612ea16010836123de565b9150612eac82612e6b565b602082019050919050565b60006020820190508181036000830152612ed081612e94565b9050919050565b7f43616e6e6f742077697468647261772066726f6d20746865206c69717569646960008201527f747920706f6f6c00000000000000000000000000000000000000000000000000602082015250565b6000612f336027836123de565b9150612f3e82612ed7565b604082019050919050565b60006020820190508181036000830152612f6281612f26565b9050919050565b600081519050612f7881612501565b92915050565b600060208284031215612f9457612f9361248f565b5b6000612fa284828501612f69565b91505092915050565b6000604082019050612fc060008301856126fe565b612fcd602083018461261d565b9392505050565b612fdd8161256d565b8114612fe857600080fd5b50565b600081519050612ffa81612fd4565b92915050565b6000602082840312156130165761301561248f565b5b600061302484828501612feb565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130896026836123de565b91506130948261302d565b604082019050919050565b600060208201905081810360008301526130b88161307c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061311b6024836123de565b9150613126826130bf565b604082019050919050565b6000602082019050818103600083015261314a8161310e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131ad6022836123de565b91506131b882613151565b604082019050919050565b600060208201905081810360008301526131dc816131a0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061323f6025836123de565b915061324a826131e3565b604082019050919050565b6000602082019050818103600083015261326e81613232565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006132d16023836123de565b91506132dc82613275565b604082019050919050565b60006020820190508181036000830152613300816132c4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006133636029836123de565b915061336e82613307565b604082019050919050565b6000602082019050818103600083015261339281613356565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006133f56026836123de565b915061340082613399565b604082019050919050565b60006020820190508181036000830152613424816133e8565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006134876021836123de565b91506134928261342b565b604082019050919050565b600060208201905081810360008301526134b68161347a565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006135196022836123de565b9150613524826134bd565b604082019050919050565b600060208201905081810360008301526135488161350c565b9050919050565b6000819050919050565b600061357461356f61356a8461354f565b6125a3565b6124f7565b9050919050565b61358481613559565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135bf816124b9565b82525050565b60006135d183836135b6565b60208301905092915050565b6000602082019050919050565b60006135f58261358a565b6135ff8185613595565b935061360a836135a6565b8060005b8381101561363b57815161362288826135c5565b975061362d836135dd565b92505060018101905061360e565b5085935050505092915050565b600060a08201905061365d600083018861261d565b61366a602083018761357b565b818103604083015261367c81866135ea565b905061368b60608301856126fe565b613698608083018461261d565b9695505050505050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6136df82612419565b810181811067ffffffffffffffff821117156136fe576136fd6136a7565b5b80604052505050565b6000613711612485565b905061371d82826136d6565b919050565b600067ffffffffffffffff82111561373d5761373c6136a7565b5b602082029050602081019050919050565b600080fd5b600061376661376184613722565b613707565b905080838252602082019050602084028301858111156137895761378861374e565b5b835b818110156137b2578061379e8882612f69565b84526020840193505060208101905061378b565b5050509392505050565b600082601f8301126137d1576137d06136a2565b5b81516137e1848260208601613753565b91505092915050565b600060208284031215613800576137ff61248f565b5b600082015167ffffffffffffffff81111561381e5761381d612494565b5b61382a848285016137bc565b91505092915050565b600060c08201905061384860008301896126fe565b613855602083018861261d565b613862604083018761357b565b61386f606083018661357b565b61387c60808301856126fe565b61388960a083018461261d565b979650505050505050565b6000806000606084860312156138ad576138ac61248f565b5b60006138bb86828701612f69565b93505060206138cc86828701612f69565b92505060406138dd86828701612f69565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212205a3f51c1d5ee74e994800e25cc583d77a66d9a400cfe018bcca43ca16f1cf81564736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c8063771a3a1d1161010d578063b3daa652116100a0578063dd62ed3e1161006f578063dd62ed3e146106c6578063e66382a914610703578063ef7898d01461072c578063f2fde38b14610769578063f9c0a3c314610792576101f9565b8063b3daa6521461061e578063b77cf9c614610649578063bea42c8e14610686578063c6d69a301461069d576101f9565b80639e4a56b1116100dc5780639e4a56b114610564578063a457c2d71461058d578063a9059cbb146105ca578063a9c404e314610607576101f9565b8063771a3a1d146104b857806379f0dbaa146104e35780638da5cb5b1461050e57806395d89b4114610539576101f9565b8063395093511161018557806366666aa91161015457806366666aa91461040e5780636cd65eed1461043957806370a0823114610464578063715018a6146104a1576101f9565b8063395093511461035257806342966c681461038f57806349bd5a5e146103b857806349d3a0c1146103e3576101f9565b806323b872dd116101c157806323b872dd146102bc57806328101f50146102f9578063313ce56714610310578063372500ab1461033b576101f9565b806306fdde03146101fe578063095ea7b3146102295780631694505e1461026657806318160ddd14610291576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107bd565b6040516102209190612463565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b919061252d565b61084f565b60405161025d9190612588565b60405180910390f35b34801561027257600080fd5b5061027b610866565b6040516102889190612602565b60405180910390f35b34801561029d57600080fd5b506102a661088c565b6040516102b3919061262c565b60405180910390f35b3480156102c857600080fd5b506102e360048036038101906102de9190612647565b610896565b6040516102f09190612588565b60405180910390f35b34801561030557600080fd5b5061030e610989565b005b34801561031c57600080fd5b50610325610bf1565b60405161033291906126b6565b60405180910390f35b34801561034757600080fd5b50610350610bfa565b005b34801561035e57600080fd5b506103796004803603810190610374919061252d565b610d64565b6040516103869190612588565b60405180910390f35b34801561039b57600080fd5b506103b660048036038101906103b191906126d1565b610e02565b005b3480156103c457600080fd5b506103cd610e0f565b6040516103da919061270d565b60405180910390f35b3480156103ef57600080fd5b506103f8610e35565b604051610405919061262c565b60405180910390f35b34801561041a57600080fd5b50610423610e3c565b604051610430919061262c565b60405180910390f35b34801561044557600080fd5b5061044e610e42565b60405161045b919061262c565b60405180910390f35b34801561047057600080fd5b5061048b60048036038101906104869190612728565b610e48565b604051610498919061262c565b60405180910390f35b3480156104ad57600080fd5b506104b6610e91565b005b3480156104c457600080fd5b506104cd610f12565b6040516104da919061262c565b60405180910390f35b3480156104ef57600080fd5b506104f8610f18565b604051610505919061262c565b60405180910390f35b34801561051a57600080fd5b50610523610f1e565b604051610530919061270d565b60405180910390f35b34801561054557600080fd5b5061054e610f47565b60405161055b9190612463565b60405180910390f35b34801561057057600080fd5b5061058b600480360381019061058691906126d1565b610fd9565b005b34801561059957600080fd5b506105b460048036038101906105af919061252d565b611058565b6040516105c19190612588565b60405180910390f35b3480156105d657600080fd5b506105f160048036038101906105ec919061252d565b61113e565b6040516105fe9190612588565b60405180910390f35b34801561061357600080fd5b5061061c611155565b005b34801561062a57600080fd5b506106336112a7565b604051610640919061262c565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190612728565b6112ae565b60405161067d919061262c565b60405180910390f35b34801561069257600080fd5b5061069b6112c6565b005b3480156106a957600080fd5b506106c460048036038101906106bf91906126d1565b6113ea565b005b3480156106d257600080fd5b506106ed60048036038101906106e89190612755565b6114ba565b6040516106fa919061262c565b60405180910390f35b34801561070f57600080fd5b5061072a600480360381019061072591906127d3565b611541565b005b34801561073857600080fd5b50610753600480360381019061074e9190612728565b611747565b604051610760919061262c565b60405180910390f35b34801561077557600080fd5b50610790600480360381019061078b9190612728565b61175f565b005b34801561079e57600080fd5b506107a761184f565b6040516107b4919061262c565b60405180910390f35b6060600480546107cc9061282f565b80601f01602080910402602001604051908101604052809291908181526020018280546107f89061282f565b80156108455780601f1061081a57610100808354040283529160200191610845565b820191906000526020600020905b81548152906001019060200180831161082857829003601f168201915b5050505050905090565b600061085c338484611855565b6001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600354905090565b60006108a3848484611a1e565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095e906128d2565b60405180910390fd5b61097d853385846109789190612921565b611855565b60019150509392505050565b3373ffffffffffffffffffffffffffffffffffffffff166109a8610f1e565b73ffffffffffffffffffffffffffffffffffffffff16146109fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f5906129a1565b60405180910390fd5b735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac091906129d6565b6040518363ffffffff1660e01b8152600401610add929190612a03565b602060405180830381865afa158015610afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1e91906129d6565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be690612a78565b60405180910390fd5b565b60006012905090565b62278d0062171240600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c4c9190612a98565b610c569190612a98565b421015610c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8f90612b3e565b60405180910390fd5b6000610ca261088c565b600c54610cae33610e48565b610cb89190612b5e565b610cc29190612bcf565b9050610ccf303383611a1e565b42600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724182604051610d59919061262c565b60405180910390a250565b6000610df8338484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610df39190612a98565b611855565b6001905092915050565b610e0c3382611cd6565b50565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6217124081565b600c5481565b600b5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610eb0610f1e565b73ffffffffffffffffffffffffffffffffffffffff1614610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd906129a1565b60405180910390fd5b610f106000611e9f565b565b60085481565b600a5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610f569061282f565b80601f0160208091040260200160405190810160405280929190818152602001828054610f829061282f565b8015610fcf5780601f10610fa457610100808354040283529160200191610fcf565b820191906000526020600020905b815481529060010190602001808311610fb257829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff16610ff8610f1e565b73ffffffffffffffffffffffffffffffffffffffff161461104e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611045906129a1565b60405180910390fd5b80600a8190555050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561111d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111490612c72565b60405180910390fd5b6111333385858461112e9190612921565b611855565b600191505092915050565b600061114b338484611a1e565b6001905092915050565b600660009054906101000a900460ff166111a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119b90612cde565b60405180910390fd5b6000600660006101000a81548160ff021916908315150217905550600a546009541015611206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fd90612d70565b60405180910390fd5b600060026009546112179190612bcf565b9050600061122482611f63565b905061123082826120e4565b60006009819055503373ffffffffffffffffffffffffffffffffffffffff167f3cbad58205fb7807d9b82256bea01899292984b98055948563a56dbbc4e3e84b8383604051611280929190612d90565b60405180910390a250506001600660006101000a81548160ff021916908315150217905550565b62278d0081565b600d6020528060005260406000206000915090505481565b3373ffffffffffffffffffffffffffffffffffffffff166112e5610f1e565b73ffffffffffffffffffffffffffffffffffffffff161461133b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611332906129a1565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161136190612dea565b60006040518083038185875af1925050503d806000811461139e576040519150601f19603f3d011682016040523d82523d6000602084013e6113a3565b606091505b50509050806113e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113de90612e4b565b60405180910390fd5b50565b3373ffffffffffffffffffffffffffffffffffffffff16611409610f1e565b73ffffffffffffffffffffffffffffffffffffffff161461145f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611456906129a1565b60405180910390fd5b60008110158015611471575060648111155b6114b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a790612eb7565b60405180910390fd5b8060088190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16611560610f1e565b73ffffffffffffffffffffffffffffffffffffffff16146115b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ad906129a1565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163d90612f49565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611681919061270d565b602060405180830381865afa15801561169e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c29190612f7e565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016116ff929190612fab565b6020604051808303816000875af115801561171e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117429190613000565b505050565b60076020528060005260406000206000915090505481565b3373ffffffffffffffffffffffffffffffffffffffff1661177e610f1e565b73ffffffffffffffffffffffffffffffffffffffff16146117d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cb906129a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183a9061309f565b60405180910390fd5b61184c81611e9f565b50565b60095481565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bb90613131565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192a906131c3565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a11919061262c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8490613255565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af3906132e7565b60405180910390fd5b60008111611b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3690613379565b60405180910390fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd9061340b565b60405180910390fd5b8181611bd29190612921565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c649190612a98565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cc8919061262c565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3c9061349d565b60405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc39061352f565b60405180910390fd5b8181611dd89190612921565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160036000828254611e2d9190612921565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e92919061262c565b60405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600660009054906101000a900460ff16611fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fab90612cde565b60405180910390fd5b6000600660006101000a81548160ff021916908315150217905550600047905061200130600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611855565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94784600061204a61224e565b30426040518663ffffffff1660e01b815260040161206c959493929190613648565b6000604051808303816000875af115801561208b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906120b491906137ea565b5080476120c19190612921565b9150506001600660006101000a81548160ff021916908315150217905550919050565b600660009054906101000a900460ff16612133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212a90612cde565b60405180910390fd5b6000600660006101000a81548160ff02191690831515021790555061217b30600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611855565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806121c7610f1e565b426040518863ffffffff1660e01b81526004016121e996959493929190613833565b60606040518083038185885af1158015612207573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061222c9190613894565b5050506001600660006101000a81548160ff0219169083151502179055505050565b60606000600267ffffffffffffffff81111561226d5761226c6136a7565b5b60405190808252806020026020018201604052801561229b5781602001602082028036833780820191505090505b50905030816000815181106122b3576122b26138e7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561235a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237e91906129d6565b81600181518110612392576123916138e7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508091505090565b600081519050919050565b600082825260208201905092915050565b60005b8381101561240d5780820151818401526020810190506123f2565b60008484015250505050565b6000601f19601f8301169050919050565b6000612435826123d3565b61243f81856123de565b935061244f8185602086016123ef565b61245881612419565b840191505092915050565b6000602082019050818103600083015261247d818461242a565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124c482612499565b9050919050565b6124d4816124b9565b81146124df57600080fd5b50565b6000813590506124f1816124cb565b92915050565b6000819050919050565b61250a816124f7565b811461251557600080fd5b50565b60008135905061252781612501565b92915050565b600080604083850312156125445761254361248f565b5b6000612552858286016124e2565b925050602061256385828601612518565b9150509250929050565b60008115159050919050565b6125828161256d565b82525050565b600060208201905061259d6000830184612579565b92915050565b6000819050919050565b60006125c86125c36125be84612499565b6125a3565b612499565b9050919050565b60006125da826125ad565b9050919050565b60006125ec826125cf565b9050919050565b6125fc816125e1565b82525050565b600060208201905061261760008301846125f3565b92915050565b612626816124f7565b82525050565b6000602082019050612641600083018461261d565b92915050565b6000806000606084860312156126605761265f61248f565b5b600061266e868287016124e2565b935050602061267f868287016124e2565b925050604061269086828701612518565b9150509250925092565b600060ff82169050919050565b6126b08161269a565b82525050565b60006020820190506126cb60008301846126a7565b92915050565b6000602082840312156126e7576126e661248f565b5b60006126f584828501612518565b91505092915050565b612707816124b9565b82525050565b600060208201905061272260008301846126fe565b92915050565b60006020828403121561273e5761273d61248f565b5b600061274c848285016124e2565b91505092915050565b6000806040838503121561276c5761276b61248f565b5b600061277a858286016124e2565b925050602061278b858286016124e2565b9150509250929050565b60006127a0826124b9565b9050919050565b6127b081612795565b81146127bb57600080fd5b50565b6000813590506127cd816127a7565b92915050565b6000602082840312156127e9576127e861248f565b5b60006127f7848285016127be565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061284757607f821691505b60208210810361285a57612859612800565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006128bc6028836123de565b91506128c782612860565b604082019050919050565b600060208201905081810360008301526128eb816128af565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061292c826124f7565b9150612937836124f7565b925082820390508181111561294f5761294e6128f2565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061298b6020836123de565b915061299682612955565b602082019050919050565b600060208201905081810360008301526129ba8161297e565b9050919050565b6000815190506129d0816124cb565b92915050565b6000602082840312156129ec576129eb61248f565b5b60006129fa848285016129c1565b91505092915050565b6000604082019050612a1860008301856126fe565b612a2560208301846126fe565b9392505050565b7f506169722061646472657373206e6f7420666f756e6400000000000000000000600082015250565b6000612a626016836123de565b9150612a6d82612a2c565b602082019050919050565b60006020820190508181036000830152612a9181612a55565b9050919050565b6000612aa3826124f7565b9150612aae836124f7565b9250828201905080821115612ac657612ac56128f2565b5b92915050565b7f596f752063616e206f6e6c7920636c61696d2065766572792034323020686f7560008201527f72732061667465722074686520636c696666206475726174696f6e0000000000602082015250565b6000612b28603b836123de565b9150612b3382612acc565b604082019050919050565b60006020820190508181036000830152612b5781612b1b565b9050919050565b6000612b69826124f7565b9150612b74836124f7565b9250828202612b82816124f7565b91508282048414831517612b9957612b986128f2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612bda826124f7565b9150612be5836124f7565b925082612bf557612bf4612ba0565b5b828204905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612c5c6025836123de565b9150612c6782612c00565b604082019050919050565b60006020820190508181036000830152612c8b81612c4f565b9050919050565b7f5265656e7472616e742063616c6c000000000000000000000000000000000000600082015250565b6000612cc8600e836123de565b9150612cd382612c92565b602082019050919050565b60006020820190508181036000830152612cf781612cbb565b9050919050565b7f496e73756666696369656e7420616363756d756c617465642074617820666f7260008201527f207265646973747269627574696f6e0000000000000000000000000000000000602082015250565b6000612d5a602f836123de565b9150612d6582612cfe565b604082019050919050565b60006020820190508181036000830152612d8981612d4d565b9050919050565b6000604082019050612da5600083018561261d565b612db2602083018461261d565b9392505050565b600081905092915050565b50565b6000612dd4600083612db9565b9150612ddf82612dc4565b600082019050919050565b6000612df582612dc7565b9150819050919050565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b6000612e356014836123de565b9150612e4082612dff565b602082019050919050565b60006020820190508181036000830152612e6481612e28565b9050919050565b7f496e76616c696420746178207261746500000000000000000000000000000000600082015250565b6000612ea16010836123de565b9150612eac82612e6b565b602082019050919050565b60006020820190508181036000830152612ed081612e94565b9050919050565b7f43616e6e6f742077697468647261772066726f6d20746865206c69717569646960008201527f747920706f6f6c00000000000000000000000000000000000000000000000000602082015250565b6000612f336027836123de565b9150612f3e82612ed7565b604082019050919050565b60006020820190508181036000830152612f6281612f26565b9050919050565b600081519050612f7881612501565b92915050565b600060208284031215612f9457612f9361248f565b5b6000612fa284828501612f69565b91505092915050565b6000604082019050612fc060008301856126fe565b612fcd602083018461261d565b9392505050565b612fdd8161256d565b8114612fe857600080fd5b50565b600081519050612ffa81612fd4565b92915050565b6000602082840312156130165761301561248f565b5b600061302484828501612feb565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130896026836123de565b91506130948261302d565b604082019050919050565b600060208201905081810360008301526130b88161307c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061311b6024836123de565b9150613126826130bf565b604082019050919050565b6000602082019050818103600083015261314a8161310e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131ad6022836123de565b91506131b882613151565b604082019050919050565b600060208201905081810360008301526131dc816131a0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061323f6025836123de565b915061324a826131e3565b604082019050919050565b6000602082019050818103600083015261326e81613232565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006132d16023836123de565b91506132dc82613275565b604082019050919050565b60006020820190508181036000830152613300816132c4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006133636029836123de565b915061336e82613307565b604082019050919050565b6000602082019050818103600083015261339281613356565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006133f56026836123de565b915061340082613399565b604082019050919050565b60006020820190508181036000830152613424816133e8565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006134876021836123de565b91506134928261342b565b604082019050919050565b600060208201905081810360008301526134b68161347a565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006135196022836123de565b9150613524826134bd565b604082019050919050565b600060208201905081810360008301526135488161350c565b9050919050565b6000819050919050565b600061357461356f61356a8461354f565b6125a3565b6124f7565b9050919050565b61358481613559565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135bf816124b9565b82525050565b60006135d183836135b6565b60208301905092915050565b6000602082019050919050565b60006135f58261358a565b6135ff8185613595565b935061360a836135a6565b8060005b8381101561363b57815161362288826135c5565b975061362d836135dd565b92505060018101905061360e565b5085935050505092915050565b600060a08201905061365d600083018861261d565b61366a602083018761357b565b818103604083015261367c81866135ea565b905061368b60608301856126fe565b613698608083018461261d565b9695505050505050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6136df82612419565b810181811067ffffffffffffffff821117156136fe576136fd6136a7565b5b80604052505050565b6000613711612485565b905061371d82826136d6565b919050565b600067ffffffffffffffff82111561373d5761373c6136a7565b5b602082029050602081019050919050565b600080fd5b600061376661376184613722565b613707565b905080838252602082019050602084028301858111156137895761378861374e565b5b835b818110156137b2578061379e8882612f69565b84526020840193505060208101905061378b565b5050509392505050565b600082601f8301126137d1576137d06136a2565b5b81516137e1848260208601613753565b91505092915050565b600060208284031215613800576137ff61248f565b5b600082015167ffffffffffffffff81111561381e5761381d612494565b5b61382a848285016137bc565b91505092915050565b600060c08201905061384860008301896126fe565b613855602083018861261d565b613862604083018761357b565b61386f606083018661357b565b61387c60808301856126fe565b61388960a083018461261d565b979650505050505050565b6000806000606084860312156138ad576138ac61248f565b5b60006138bb86828701612f69565b93505060206138cc86828701612f69565b92505060406138dd86828701612f69565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212205a3f51c1d5ee74e994800e25cc583d77a66d9a400cfe018bcca43ca16f1cf81564736f6c63430008120033

Deployed Bytecode Sourcemap

8493:5424:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4956:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5868:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9042:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5277:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6043:414;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9213:261;;;;;;;;;;;;;:::i;:::-;;5176:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13474:440;;;;;;;;;;;;;:::i;:::-;;6465:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13385:81;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9007:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8893:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8806:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8766:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5393:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1792:95;;;;;;;;;;;;;:::i;:::-;;8619:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8693:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1579:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5064:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11337:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6690:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5528:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9794:416;;;;;;;;;;;;;:::i;:::-;;8950:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8838;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11754:185;;;;;;;;;;;;;:::i;:::-;;11155:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5709:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11479:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8561:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1895:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8653:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4956:100;5010:13;5043:5;5036:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4956:100;:::o;5868:167::-;5951:4;5968:37;5977:10;5989:7;5998:6;5968:8;:37::i;:::-;6023:4;6016:11;;5868:167;;;;:::o;9042:41::-;;;;;;;;;;;;;:::o;5277:108::-;5338:7;5365:12;;5358:19;;5277:108;:::o;6043:414::-;6149:4;6166:36;6176:6;6184:9;6195:6;6166:9;:36::i;:::-;6213:24;6240:11;:19;6252:6;6240:19;;;;;;;;;;;;;;;:31;6260:10;6240:31;;;;;;;;;;;;;;;;6213:58;;6310:6;6290:16;:26;;6282:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;6372:55;6381:6;6389:10;6420:6;6401:16;:25;;;;:::i;:::-;6372:8;:55::i;:::-;6445:4;6438:11;;;6043:414;;;;;:::o;9213:261::-;1717:10;1706:21;;:7;:5;:7::i;:::-;:21;;;1698:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9303:42:::1;9285:69;;;9363:4;9370:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9285:108;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9269:13;;:124;;;;;;;;;;;;;;;;;;9437:1;9412:27;;:13;;;;;;;;;;;:27;;::::0;9404:62:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9213:261::o:0;5176:93::-;5234:5;5259:2;5252:9;;5176:93;:::o;13474:440::-;8991:7;8934:9;13545:13;:25;13559:10;13545:25;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;:59;;;;:::i;:::-;13526:15;:78;;13518:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;13679:14;13735:13;:11;:13::i;:::-;13721:10;;13697:21;13707:10;13697:9;:21::i;:::-;:34;;;;:::i;:::-;13696:52;;;;:::i;:::-;13679:69;;13759:44;13777:4;13784:10;13796:6;13759:9;:44::i;:::-;13842:15;13814:13;:25;13828:10;13814:25;;;;;;;;;;;;;;;:43;;;;13887:10;13873:33;;;13899:6;13873:33;;;;;;:::i;:::-;;;;;;;;13507:407;13474:440::o;6465:217::-;6559:4;6576:76;6585:10;6597:7;6641:10;6606:11;:23;6618:10;6606:23;;;;;;;;;;;;;;;:32;6630:7;6606:32;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;6576:8;:76::i;:::-;6670:4;6663:11;;6465:217;;;;:::o;13385:81::-;13434:24;13440:10;13452:5;13434;:24::i;:::-;13385:81;:::o;9007:28::-;;;;;;;;;;;;;:::o;8893:50::-;8934:9;8893:50;:::o;8806:25::-;;;;:::o;8766:33::-;;;;:::o;5393:127::-;5467:7;5494:9;:18;5504:7;5494:18;;;;;;;;;;;;;;;;5487:25;;5393:127;;;:::o;1792:95::-;1717:10;1706:21;;:7;:5;:7::i;:::-;:21;;;1698:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;1849:30:::1;1876:1;1849:18;:30::i;:::-;1792:95::o:0;8619:27::-;;;;:::o;8693:66::-;;;;:::o;1579:79::-;1617:7;1644:6;;;;;;;;;;;1637:13;;1579:79;:::o;5064:104::-;5120:13;5153:7;5146:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5064:104;:::o;11337:134::-;1717:10;1706:21;;:7;:5;:7::i;:::-;:21;;;1698:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;11451:12:::1;11425:23;:38;;;;11337:134:::0;:::o;6690:377::-;6789:4;6806:24;6833:11;:23;6845:10;6833:23;;;;;;;;;;;;;;;:32;6857:7;6833:32;;;;;;;;;;;;;;;;6806:59;;6904:15;6884:16;:35;;6876:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6972:65;6981:10;6993:7;7021:15;7002:16;:34;;;;:::i;:::-;6972:8;:65::i;:::-;7055:4;7048:11;;;6690:377;;;;:::o;5528:173::-;5614:4;5631:40;5641:10;5653:9;5664:6;5631:9;:40::i;:::-;5689:4;5682:11;;5528:173;;;;:::o;9794:416::-;1149:11;;;;;;;;;;;1141:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;1204:5;1190:11;;:19;;;;;;;;;;;;;;;;;;9880:23:::1;;9862:14;;:41;;9854:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;9966:15;10001:1;9984:14;;:18;;;;:::i;:::-;9966:36;;10013:19;10035:26;10053:7;10035:17;:26::i;:::-;10013:48;;10072:35;10086:7;10095:11;10072:13;:35::i;:::-;10135:1;10118:14;:18;;;;10169:10;10152:50;;;10181:7;10190:11;10152:50;;;;;;;:::i;:::-;;;;;;;;9843:367;;1246:4:::0;1232:11;;:18;;;;;;;;;;;;;;;;;;9794:416::o;8950:48::-;8991:7;8950:48;:::o;8838:::-;;;;;;;;;;;;;;;;;:::o;11754:185::-;1717:10;1706:21;;:7;:5;:7::i;:::-;:21;;;1698:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;11813:12:::1;11831:10;:15;;11854:21;11831:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11812:68;;;11899:7;11891:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;11801:138;11754:185::o:0;11155:174::-;1717:10;1706:21;;:7;:5;:7::i;:::-;:21;;;1698:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;11247:1:::1;11233:10;:15;;:36;;;;;11266:3;11252:10;:17;;11233:36;11225:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11311:10;11301:7;:20;;;;11155:174:::0;:::o;5709:151::-;5798:7;5825:11;:18;5837:5;5825:18;;;;;;;;;;;;;;;:27;5844:7;5825:27;;;;;;;;;;;;;;;;5818:34;;5709:151;;;;:::o;11479:267::-;1717:10;1706:21;;:7;:5;:7::i;:::-;:21;;;1698:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;11578:13:::1;;;;;;;;;;;11560:31;;11568:5;11560:31;;::::0;11552:83:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11646:14;11663:5;:15;;;11687:4;11663:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11646:47;;11704:5;:14;;;11719:10;11731:6;11704:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11541:205;11479:267:::0;:::o;8561:51::-;;;;;;;;;;;;;;;;;:::o;1895:193::-;1717:10;1706:21;;:7;:5;:7::i;:::-;:21;;;1698:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;1996:1:::1;1976:22;;:8;:22;;::::0;1968:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2052:28;2071:8;2052:18;:28::i;:::-;1895:193:::0;:::o;8653:33::-;;;;:::o;7702:346::-;7821:1;7804:19;;:5;:19;;;7796:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7902:1;7883:21;;:7;:21;;;7875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7986:6;7956:11;:18;7968:5;7956:18;;;;;;;;;;;;;;;:27;7975:7;7956:27;;;;;;;;;;;;;;;:36;;;;8024:7;8008:32;;8017:5;8008:32;;;8033:6;8008:32;;;;;;:::i;:::-;;;;;;;;7702:346;;;:::o;7075:619::-;7199:1;7181:20;;:6;:20;;;7173:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7283:1;7262:23;;:9;:23;;;7254:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7353:1;7344:6;:10;7336:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7413:21;7437:9;:17;7447:6;7437:17;;;;;;;;;;;;;;;;7413:41;;7490:6;7473:13;:23;;7465:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7586:6;7570:13;:22;;;;:::i;:::-;7550:9;:17;7560:6;7550:17;;;;;;;;;;;;;;;:42;;;;7627:6;7603:9;:20;7613:9;7603:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7668:9;7651:35;;7660:6;7651:35;;;7679:6;7651:35;;;;;;:::i;:::-;;;;;;;;7162:532;7075:619;;;:::o;8056:430::-;8159:1;8140:21;;:7;:21;;;8132:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8210:22;8235:9;:18;8245:7;8235:18;;;;;;;;;;;;;;;;8210:43;;8290:6;8272:14;:24;;8264:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8384:6;8367:14;:23;;;;:::i;:::-;8346:9;:18;8356:7;8346:18;;;;;;;;;;;;;;;:44;;;;8417:6;8401:12;;:22;;;;;;;:::i;:::-;;;;;;;;8467:1;8441:37;;8450:7;8441:37;;;8471:6;8441:37;;;;;;:::i;:::-;;;;;;;;8121:365;8056:430;;:::o;2096:183::-;2162:16;2181:6;;;;;;;;;;;2162:25;;2207:8;2198:6;;:17;;;;;;;;;;;;;;;;;;2262:8;2231:40;;2252:8;2231:40;;;;;;;;;;;;2151:128;2096:183;:::o;10218:507::-;10297:7;1149:11;;;;;;;;;;;1141:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;1204:5;1190:11;;:19;;;;;;;;;;;;;;;;;;10317:22:::1;10342:21;10317:46;;10374:62;10391:4;10406:15;;;;;;;;;;;10424:11;10374:8;:62::i;:::-;10447:15;;;;;;;;;;;:66;;;10528:11;10554:1;10570:22;:20;:22::i;:::-;10615:4;10635:15;10447:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10703:14;10679:21;:38;;;;:::i;:::-;10672:45;;;1246:4:::0;1232:11;;:18;;;;;;;;;;;;;;;;;;10218:507;;;:::o;10733:375::-;1149:11;;;;;;;;;;;1141:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;1204:5;1190:11;;:19;;;;;;;;;;;;;;;;;;10829:62:::1;10846:4;10861:15;;;;;;;;;;;10879:11;10829:8;:62::i;:::-;10902:15;;;;;;;;;;;:31;;;10941:9;10974:4;10994:11;11020:1;11036::::0;11052:7:::1;:5;:7::i;:::-;11074:15;10902:198;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;1246:4:::0;1232:11;;:18;;;;;;;;;;;;;;;;;;10733:375;;:::o;9482:230::-;9536:16;9565:21;9603:1;9589:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9565:40;;9634:4;9616;9621:1;9616:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;9660:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9650:4;9655:1;9650:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;9700:4;9693:11;;;9482:230;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:329::-;5885:6;5934:2;5922:9;5913:7;5909:23;5905:32;5902:119;;;5940:79;;:::i;:::-;5902:119;6060:1;6085:53;6130:7;6121:6;6110:9;6106:22;6085:53;:::i;:::-;6075:63;;6031:117;5826:329;;;;:::o;6161:118::-;6248:24;6266:5;6248:24;:::i;:::-;6243:3;6236:37;6161:118;;:::o;6285:222::-;6378:4;6416:2;6405:9;6401:18;6393:26;;6429:71;6497:1;6486:9;6482:17;6473:6;6429:71;:::i;:::-;6285:222;;;;:::o;6513:329::-;6572:6;6621:2;6609:9;6600:7;6596:23;6592:32;6589:119;;;6627:79;;:::i;:::-;6589:119;6747:1;6772:53;6817:7;6808:6;6797:9;6793:22;6772:53;:::i;:::-;6762:63;;6718:117;6513:329;;;;:::o;6848:474::-;6916:6;6924;6973:2;6961:9;6952:7;6948:23;6944:32;6941:119;;;6979:79;;:::i;:::-;6941:119;7099:1;7124:53;7169:7;7160:6;7149:9;7145:22;7124:53;:::i;:::-;7114:63;;7070:117;7226:2;7252:53;7297:7;7288:6;7277:9;7273:22;7252:53;:::i;:::-;7242:63;;7197:118;6848:474;;;;;:::o;7328:110::-;7379:7;7408:24;7426:5;7408:24;:::i;:::-;7397:35;;7328:110;;;:::o;7444:150::-;7531:38;7563:5;7531:38;:::i;:::-;7524:5;7521:49;7511:77;;7584:1;7581;7574:12;7511:77;7444:150;:::o;7600:167::-;7660:5;7698:6;7685:20;7676:29;;7714:47;7755:5;7714:47;:::i;:::-;7600:167;;;;:::o;7773:357::-;7846:6;7895:2;7883:9;7874:7;7870:23;7866:32;7863:119;;;7901:79;;:::i;:::-;7863:119;8021:1;8046:67;8105:7;8096:6;8085:9;8081:22;8046:67;:::i;:::-;8036:77;;7992:131;7773:357;;;;:::o;8136:180::-;8184:77;8181:1;8174:88;8281:4;8278:1;8271:15;8305:4;8302:1;8295:15;8322:320;8366:6;8403:1;8397:4;8393:12;8383:22;;8450:1;8444:4;8440:12;8471:18;8461:81;;8527:4;8519:6;8515:17;8505:27;;8461:81;8589:2;8581:6;8578:14;8558:18;8555:38;8552:84;;8608:18;;:::i;:::-;8552:84;8373:269;8322:320;;;:::o;8648:227::-;8788:34;8784:1;8776:6;8772:14;8765:58;8857:10;8852:2;8844:6;8840:15;8833:35;8648:227;:::o;8881:366::-;9023:3;9044:67;9108:2;9103:3;9044:67;:::i;:::-;9037:74;;9120:93;9209:3;9120:93;:::i;:::-;9238:2;9233:3;9229:12;9222:19;;8881:366;;;:::o;9253:419::-;9419:4;9457:2;9446:9;9442:18;9434:26;;9506:9;9500:4;9496:20;9492:1;9481:9;9477:17;9470:47;9534:131;9660:4;9534:131;:::i;:::-;9526:139;;9253:419;;;:::o;9678:180::-;9726:77;9723:1;9716:88;9823:4;9820:1;9813:15;9847:4;9844:1;9837:15;9864:194;9904:4;9924:20;9942:1;9924:20;:::i;:::-;9919:25;;9958:20;9976:1;9958:20;:::i;:::-;9953:25;;10002:1;9999;9995:9;9987:17;;10026:1;10020:4;10017:11;10014:37;;;10031:18;;:::i;:::-;10014:37;9864:194;;;;:::o;10064:182::-;10204:34;10200:1;10192:6;10188:14;10181:58;10064:182;:::o;10252:366::-;10394:3;10415:67;10479:2;10474:3;10415:67;:::i;:::-;10408:74;;10491:93;10580:3;10491:93;:::i;:::-;10609:2;10604:3;10600:12;10593:19;;10252:366;;;:::o;10624:419::-;10790:4;10828:2;10817:9;10813:18;10805:26;;10877:9;10871:4;10867:20;10863:1;10852:9;10848:17;10841:47;10905:131;11031:4;10905:131;:::i;:::-;10897:139;;10624:419;;;:::o;11049:143::-;11106:5;11137:6;11131:13;11122:22;;11153:33;11180:5;11153:33;:::i;:::-;11049:143;;;;:::o;11198:351::-;11268:6;11317:2;11305:9;11296:7;11292:23;11288:32;11285:119;;;11323:79;;:::i;:::-;11285:119;11443:1;11468:64;11524:7;11515:6;11504:9;11500:22;11468:64;:::i;:::-;11458:74;;11414:128;11198:351;;;;:::o;11555:332::-;11676:4;11714:2;11703:9;11699:18;11691:26;;11727:71;11795:1;11784:9;11780:17;11771:6;11727:71;:::i;:::-;11808:72;11876:2;11865:9;11861:18;11852:6;11808:72;:::i;:::-;11555:332;;;;;:::o;11893:172::-;12033:24;12029:1;12021:6;12017:14;12010:48;11893:172;:::o;12071:366::-;12213:3;12234:67;12298:2;12293:3;12234:67;:::i;:::-;12227:74;;12310:93;12399:3;12310:93;:::i;:::-;12428:2;12423:3;12419:12;12412:19;;12071:366;;;:::o;12443:419::-;12609:4;12647:2;12636:9;12632:18;12624:26;;12696:9;12690:4;12686:20;12682:1;12671:9;12667:17;12660:47;12724:131;12850:4;12724:131;:::i;:::-;12716:139;;12443:419;;;:::o;12868:191::-;12908:3;12927:20;12945:1;12927:20;:::i;:::-;12922:25;;12961:20;12979:1;12961:20;:::i;:::-;12956:25;;13004:1;13001;12997:9;12990:16;;13025:3;13022:1;13019:10;13016:36;;;13032:18;;:::i;:::-;13016:36;12868:191;;;;:::o;13065:246::-;13205:34;13201:1;13193:6;13189:14;13182:58;13274:29;13269:2;13261:6;13257:15;13250:54;13065:246;:::o;13317:366::-;13459:3;13480:67;13544:2;13539:3;13480:67;:::i;:::-;13473:74;;13556:93;13645:3;13556:93;:::i;:::-;13674:2;13669:3;13665:12;13658:19;;13317:366;;;:::o;13689:419::-;13855:4;13893:2;13882:9;13878:18;13870:26;;13942:9;13936:4;13932:20;13928:1;13917:9;13913:17;13906:47;13970:131;14096:4;13970:131;:::i;:::-;13962:139;;13689:419;;;:::o;14114:410::-;14154:7;14177:20;14195:1;14177:20;:::i;:::-;14172:25;;14211:20;14229:1;14211:20;:::i;:::-;14206:25;;14266:1;14263;14259:9;14288:30;14306:11;14288:30;:::i;:::-;14277:41;;14467:1;14458:7;14454:15;14451:1;14448:22;14428:1;14421:9;14401:83;14378:139;;14497:18;;:::i;:::-;14378:139;14162:362;14114:410;;;;:::o;14530:180::-;14578:77;14575:1;14568:88;14675:4;14672:1;14665:15;14699:4;14696:1;14689:15;14716:185;14756:1;14773:20;14791:1;14773:20;:::i;:::-;14768:25;;14807:20;14825:1;14807:20;:::i;:::-;14802:25;;14846:1;14836:35;;14851:18;;:::i;:::-;14836:35;14893:1;14890;14886:9;14881:14;;14716:185;;;;:::o;14907:224::-;15047:34;15043:1;15035:6;15031:14;15024:58;15116:7;15111:2;15103:6;15099:15;15092:32;14907:224;:::o;15137:366::-;15279:3;15300:67;15364:2;15359:3;15300:67;:::i;:::-;15293:74;;15376:93;15465:3;15376:93;:::i;:::-;15494:2;15489:3;15485:12;15478:19;;15137:366;;;:::o;15509:419::-;15675:4;15713:2;15702:9;15698:18;15690:26;;15762:9;15756:4;15752:20;15748:1;15737:9;15733:17;15726:47;15790:131;15916:4;15790:131;:::i;:::-;15782:139;;15509:419;;;:::o;15934:164::-;16074:16;16070:1;16062:6;16058:14;16051:40;15934:164;:::o;16104:366::-;16246:3;16267:67;16331:2;16326:3;16267:67;:::i;:::-;16260:74;;16343:93;16432:3;16343:93;:::i;:::-;16461:2;16456:3;16452:12;16445:19;;16104:366;;;:::o;16476:419::-;16642:4;16680:2;16669:9;16665:18;16657:26;;16729:9;16723:4;16719:20;16715:1;16704:9;16700:17;16693:47;16757:131;16883:4;16757:131;:::i;:::-;16749:139;;16476:419;;;:::o;16901:234::-;17041:34;17037:1;17029:6;17025:14;17018:58;17110:17;17105:2;17097:6;17093:15;17086:42;16901:234;:::o;17141:366::-;17283:3;17304:67;17368:2;17363:3;17304:67;:::i;:::-;17297:74;;17380:93;17469:3;17380:93;:::i;:::-;17498:2;17493:3;17489:12;17482:19;;17141:366;;;:::o;17513:419::-;17679:4;17717:2;17706:9;17702:18;17694:26;;17766:9;17760:4;17756:20;17752:1;17741:9;17737:17;17730:47;17794:131;17920:4;17794:131;:::i;:::-;17786:139;;17513:419;;;:::o;17938:332::-;18059:4;18097:2;18086:9;18082:18;18074:26;;18110:71;18178:1;18167:9;18163:17;18154:6;18110:71;:::i;:::-;18191:72;18259:2;18248:9;18244:18;18235:6;18191:72;:::i;:::-;17938:332;;;;;:::o;18276:147::-;18377:11;18414:3;18399:18;;18276:147;;;;:::o;18429:114::-;;:::o;18549:398::-;18708:3;18729:83;18810:1;18805:3;18729:83;:::i;:::-;18722:90;;18821:93;18910:3;18821:93;:::i;:::-;18939:1;18934:3;18930:11;18923:18;;18549:398;;;:::o;18953:379::-;19137:3;19159:147;19302:3;19159:147;:::i;:::-;19152:154;;19323:3;19316:10;;18953:379;;;:::o;19338:170::-;19478:22;19474:1;19466:6;19462:14;19455:46;19338:170;:::o;19514:366::-;19656:3;19677:67;19741:2;19736:3;19677:67;:::i;:::-;19670:74;;19753:93;19842:3;19753:93;:::i;:::-;19871:2;19866:3;19862:12;19855:19;;19514:366;;;:::o;19886:419::-;20052:4;20090:2;20079:9;20075:18;20067:26;;20139:9;20133:4;20129:20;20125:1;20114:9;20110:17;20103:47;20167:131;20293:4;20167:131;:::i;:::-;20159:139;;19886:419;;;:::o;20311:166::-;20451:18;20447:1;20439:6;20435:14;20428:42;20311:166;:::o;20483:366::-;20625:3;20646:67;20710:2;20705:3;20646:67;:::i;:::-;20639:74;;20722:93;20811:3;20722:93;:::i;:::-;20840:2;20835:3;20831:12;20824:19;;20483:366;;;:::o;20855:419::-;21021:4;21059:2;21048:9;21044:18;21036:26;;21108:9;21102:4;21098:20;21094:1;21083:9;21079:17;21072:47;21136:131;21262:4;21136:131;:::i;:::-;21128:139;;20855:419;;;:::o;21280:226::-;21420:34;21416:1;21408:6;21404:14;21397:58;21489:9;21484:2;21476:6;21472:15;21465:34;21280:226;:::o;21512:366::-;21654:3;21675:67;21739:2;21734:3;21675:67;:::i;:::-;21668:74;;21751:93;21840:3;21751:93;:::i;:::-;21869:2;21864:3;21860:12;21853:19;;21512:366;;;:::o;21884:419::-;22050:4;22088:2;22077:9;22073:18;22065:26;;22137:9;22131:4;22127:20;22123:1;22112:9;22108:17;22101:47;22165:131;22291:4;22165:131;:::i;:::-;22157:139;;21884:419;;;:::o;22309:143::-;22366:5;22397:6;22391:13;22382:22;;22413:33;22440:5;22413:33;:::i;:::-;22309:143;;;;:::o;22458:351::-;22528:6;22577:2;22565:9;22556:7;22552:23;22548:32;22545:119;;;22583:79;;:::i;:::-;22545:119;22703:1;22728:64;22784:7;22775:6;22764:9;22760:22;22728:64;:::i;:::-;22718:74;;22674:128;22458:351;;;;:::o;22815:332::-;22936:4;22974:2;22963:9;22959:18;22951:26;;22987:71;23055:1;23044:9;23040:17;23031:6;22987:71;:::i;:::-;23068:72;23136:2;23125:9;23121:18;23112:6;23068:72;:::i;:::-;22815:332;;;;;:::o;23153:116::-;23223:21;23238:5;23223:21;:::i;:::-;23216:5;23213:32;23203:60;;23259:1;23256;23249:12;23203:60;23153:116;:::o;23275:137::-;23329:5;23360:6;23354:13;23345:22;;23376:30;23400:5;23376:30;:::i;:::-;23275:137;;;;:::o;23418:345::-;23485:6;23534:2;23522:9;23513:7;23509:23;23505:32;23502:119;;;23540:79;;:::i;:::-;23502:119;23660:1;23685:61;23738:7;23729:6;23718:9;23714:22;23685:61;:::i;:::-;23675:71;;23631:125;23418:345;;;;:::o;23769:225::-;23909:34;23905:1;23897:6;23893:14;23886:58;23978:8;23973:2;23965:6;23961:15;23954:33;23769:225;:::o;24000:366::-;24142:3;24163:67;24227:2;24222:3;24163:67;:::i;:::-;24156:74;;24239:93;24328:3;24239:93;:::i;:::-;24357:2;24352:3;24348:12;24341:19;;24000:366;;;:::o;24372:419::-;24538:4;24576:2;24565:9;24561:18;24553:26;;24625:9;24619:4;24615:20;24611:1;24600:9;24596:17;24589:47;24653:131;24779:4;24653:131;:::i;:::-;24645:139;;24372:419;;;:::o;24797:223::-;24937:34;24933:1;24925:6;24921:14;24914:58;25006:6;25001:2;24993:6;24989:15;24982:31;24797:223;:::o;25026:366::-;25168:3;25189:67;25253:2;25248:3;25189:67;:::i;:::-;25182:74;;25265:93;25354:3;25265:93;:::i;:::-;25383:2;25378:3;25374:12;25367:19;;25026:366;;;:::o;25398:419::-;25564:4;25602:2;25591:9;25587:18;25579:26;;25651:9;25645:4;25641:20;25637:1;25626:9;25622:17;25615:47;25679:131;25805:4;25679:131;:::i;:::-;25671:139;;25398:419;;;:::o;25823:221::-;25963:34;25959:1;25951:6;25947:14;25940:58;26032:4;26027:2;26019:6;26015:15;26008:29;25823:221;:::o;26050:366::-;26192:3;26213:67;26277:2;26272:3;26213:67;:::i;:::-;26206:74;;26289:93;26378:3;26289:93;:::i;:::-;26407:2;26402:3;26398:12;26391:19;;26050:366;;;:::o;26422:419::-;26588:4;26626:2;26615:9;26611:18;26603:26;;26675:9;26669:4;26665:20;26661:1;26650:9;26646:17;26639:47;26703:131;26829:4;26703:131;:::i;:::-;26695:139;;26422:419;;;:::o;26847:224::-;26987:34;26983:1;26975:6;26971:14;26964:58;27056:7;27051:2;27043:6;27039:15;27032:32;26847:224;:::o;27077:366::-;27219:3;27240:67;27304:2;27299:3;27240:67;:::i;:::-;27233:74;;27316:93;27405:3;27316:93;:::i;:::-;27434:2;27429:3;27425:12;27418:19;;27077:366;;;:::o;27449:419::-;27615:4;27653:2;27642:9;27638:18;27630:26;;27702:9;27696:4;27692:20;27688:1;27677:9;27673:17;27666:47;27730:131;27856:4;27730:131;:::i;:::-;27722:139;;27449:419;;;:::o;27874:222::-;28014:34;28010:1;28002:6;27998:14;27991:58;28083:5;28078:2;28070:6;28066:15;28059:30;27874:222;:::o;28102:366::-;28244:3;28265:67;28329:2;28324:3;28265:67;:::i;:::-;28258:74;;28341:93;28430:3;28341:93;:::i;:::-;28459:2;28454:3;28450:12;28443:19;;28102:366;;;:::o;28474:419::-;28640:4;28678:2;28667:9;28663:18;28655:26;;28727:9;28721:4;28717:20;28713:1;28702:9;28698:17;28691:47;28755:131;28881:4;28755:131;:::i;:::-;28747:139;;28474:419;;;:::o;28899:228::-;29039:34;29035:1;29027:6;29023:14;29016:58;29108:11;29103:2;29095:6;29091:15;29084:36;28899:228;:::o;29133:366::-;29275:3;29296:67;29360:2;29355:3;29296:67;:::i;:::-;29289:74;;29372:93;29461:3;29372:93;:::i;:::-;29490:2;29485:3;29481:12;29474:19;;29133:366;;;:::o;29505:419::-;29671:4;29709:2;29698:9;29694:18;29686:26;;29758:9;29752:4;29748:20;29744:1;29733:9;29729:17;29722:47;29786:131;29912:4;29786:131;:::i;:::-;29778:139;;29505:419;;;:::o;29930:225::-;30070:34;30066:1;30058:6;30054:14;30047:58;30139:8;30134:2;30126:6;30122:15;30115:33;29930:225;:::o;30161:366::-;30303:3;30324:67;30388:2;30383:3;30324:67;:::i;:::-;30317:74;;30400:93;30489:3;30400:93;:::i;:::-;30518:2;30513:3;30509:12;30502:19;;30161:366;;;:::o;30533:419::-;30699:4;30737:2;30726:9;30722:18;30714:26;;30786:9;30780:4;30776:20;30772:1;30761:9;30757:17;30750:47;30814:131;30940:4;30814:131;:::i;:::-;30806:139;;30533:419;;;:::o;30958:220::-;31098:34;31094:1;31086:6;31082:14;31075:58;31167:3;31162:2;31154:6;31150:15;31143:28;30958:220;:::o;31184:366::-;31326:3;31347:67;31411:2;31406:3;31347:67;:::i;:::-;31340:74;;31423:93;31512:3;31423:93;:::i;:::-;31541:2;31536:3;31532:12;31525:19;;31184:366;;;:::o;31556:419::-;31722:4;31760:2;31749:9;31745:18;31737:26;;31809:9;31803:4;31799:20;31795:1;31784:9;31780:17;31773:47;31837:131;31963:4;31837:131;:::i;:::-;31829:139;;31556:419;;;:::o;31981:221::-;32121:34;32117:1;32109:6;32105:14;32098:58;32190:4;32185:2;32177:6;32173:15;32166:29;31981:221;:::o;32208:366::-;32350:3;32371:67;32435:2;32430:3;32371:67;:::i;:::-;32364:74;;32447:93;32536:3;32447:93;:::i;:::-;32565:2;32560:3;32556:12;32549:19;;32208:366;;;:::o;32580:419::-;32746:4;32784:2;32773:9;32769:18;32761:26;;32833:9;32827:4;32823:20;32819:1;32808:9;32804:17;32797:47;32861:131;32987:4;32861:131;:::i;:::-;32853:139;;32580:419;;;:::o;33005:85::-;33050:7;33079:5;33068:16;;33005:85;;;:::o;33096:158::-;33154:9;33187:61;33205:42;33214:32;33240:5;33214:32;:::i;:::-;33205:42;:::i;:::-;33187:61;:::i;:::-;33174:74;;33096:158;;;:::o;33260:147::-;33355:45;33394:5;33355:45;:::i;:::-;33350:3;33343:58;33260:147;;:::o;33413:114::-;33480:6;33514:5;33508:12;33498:22;;33413:114;;;:::o;33533:184::-;33632:11;33666:6;33661:3;33654:19;33706:4;33701:3;33697:14;33682:29;;33533:184;;;;:::o;33723:132::-;33790:4;33813:3;33805:11;;33843:4;33838:3;33834:14;33826:22;;33723:132;;;:::o;33861:108::-;33938:24;33956:5;33938:24;:::i;:::-;33933:3;33926:37;33861:108;;:::o;33975:179::-;34044:10;34065:46;34107:3;34099:6;34065:46;:::i;:::-;34143:4;34138:3;34134:14;34120:28;;33975:179;;;;:::o;34160:113::-;34230:4;34262;34257:3;34253:14;34245:22;;34160:113;;;:::o;34309:732::-;34428:3;34457:54;34505:5;34457:54;:::i;:::-;34527:86;34606:6;34601:3;34527:86;:::i;:::-;34520:93;;34637:56;34687:5;34637:56;:::i;:::-;34716:7;34747:1;34732:284;34757:6;34754:1;34751:13;34732:284;;;34833:6;34827:13;34860:63;34919:3;34904:13;34860:63;:::i;:::-;34853:70;;34946:60;34999:6;34946:60;:::i;:::-;34936:70;;34792:224;34779:1;34776;34772:9;34767:14;;34732:284;;;34736:14;35032:3;35025:10;;34433:608;;;34309:732;;;;:::o;35047:831::-;35310:4;35348:3;35337:9;35333:19;35325:27;;35362:71;35430:1;35419:9;35415:17;35406:6;35362:71;:::i;:::-;35443:80;35519:2;35508:9;35504:18;35495:6;35443:80;:::i;:::-;35570:9;35564:4;35560:20;35555:2;35544:9;35540:18;35533:48;35598:108;35701:4;35692:6;35598:108;:::i;:::-;35590:116;;35716:72;35784:2;35773:9;35769:18;35760:6;35716:72;:::i;:::-;35798:73;35866:3;35855:9;35851:19;35842:6;35798:73;:::i;:::-;35047:831;;;;;;;;:::o;35884:117::-;35993:1;35990;35983:12;36007:180;36055:77;36052:1;36045:88;36152:4;36149:1;36142:15;36176:4;36173:1;36166:15;36193:281;36276:27;36298:4;36276:27;:::i;:::-;36268:6;36264:40;36406:6;36394:10;36391:22;36370:18;36358:10;36355:34;36352:62;36349:88;;;36417:18;;:::i;:::-;36349:88;36457:10;36453:2;36446:22;36236:238;36193:281;;:::o;36480:129::-;36514:6;36541:20;;:::i;:::-;36531:30;;36570:33;36598:4;36590:6;36570:33;:::i;:::-;36480:129;;;:::o;36615:311::-;36692:4;36782:18;36774:6;36771:30;36768:56;;;36804:18;;:::i;:::-;36768:56;36854:4;36846:6;36842:17;36834:25;;36914:4;36908;36904:15;36896:23;;36615:311;;;:::o;36932:117::-;37041:1;37038;37031:12;37072:732;37179:5;37204:81;37220:64;37277:6;37220:64;:::i;:::-;37204:81;:::i;:::-;37195:90;;37305:5;37334:6;37327:5;37320:21;37368:4;37361:5;37357:16;37350:23;;37421:4;37413:6;37409:17;37401:6;37397:30;37450:3;37442:6;37439:15;37436:122;;;37469:79;;:::i;:::-;37436:122;37584:6;37567:231;37601:6;37596:3;37593:15;37567:231;;;37676:3;37705:48;37749:3;37737:10;37705:48;:::i;:::-;37700:3;37693:61;37783:4;37778:3;37774:14;37767:21;;37643:155;37627:4;37622:3;37618:14;37611:21;;37567:231;;;37571:21;37185:619;;37072:732;;;;;:::o;37827:385::-;37909:5;37958:3;37951:4;37943:6;37939:17;37935:27;37925:122;;37966:79;;:::i;:::-;37925:122;38076:6;38070:13;38101:105;38202:3;38194:6;38187:4;38179:6;38175:17;38101:105;:::i;:::-;38092:114;;37915:297;37827:385;;;;:::o;38218:554::-;38313:6;38362:2;38350:9;38341:7;38337:23;38333:32;38330:119;;;38368:79;;:::i;:::-;38330:119;38509:1;38498:9;38494:17;38488:24;38539:18;38531:6;38528:30;38525:117;;;38561:79;;:::i;:::-;38525:117;38666:89;38747:7;38738:6;38727:9;38723:22;38666:89;:::i;:::-;38656:99;;38459:306;38218:554;;;;:::o;38778:807::-;39027:4;39065:3;39054:9;39050:19;39042:27;;39079:71;39147:1;39136:9;39132:17;39123:6;39079:71;:::i;:::-;39160:72;39228:2;39217:9;39213:18;39204:6;39160:72;:::i;:::-;39242:80;39318:2;39307:9;39303:18;39294:6;39242:80;:::i;:::-;39332;39408:2;39397:9;39393:18;39384:6;39332:80;:::i;:::-;39422:73;39490:3;39479:9;39475:19;39466:6;39422:73;:::i;:::-;39505;39573:3;39562:9;39558:19;39549:6;39505:73;:::i;:::-;38778:807;;;;;;;;;:::o;39591:663::-;39679:6;39687;39695;39744:2;39732:9;39723:7;39719:23;39715:32;39712:119;;;39750:79;;:::i;:::-;39712:119;39870:1;39895:64;39951:7;39942:6;39931:9;39927:22;39895:64;:::i;:::-;39885:74;;39841:128;40008:2;40034:64;40090:7;40081:6;40070:9;40066:22;40034:64;:::i;:::-;40024:74;;39979:129;40147:2;40173:64;40229:7;40220:6;40209:9;40205:22;40173:64;:::i;:::-;40163:74;;40118:129;39591:663;;;;;:::o;40260:180::-;40308:77;40305:1;40298:88;40405:4;40402:1;40395:15;40429:4;40426:1;40419:15

Swarm Source

ipfs://5a3f51c1d5ee74e994800e25cc583d77a66d9a400cfe018bcca43ca16f1cf815
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.