ETH Price: $3,497.86 (-0.05%)
Gas: 4 Gwei

Token

LUCKY (Lucky Coin)
 

Overview

Max Total Supply

100,000,000 Lucky Coin

Holders

9

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
Lucky

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-18
*/

/* --------------------------------------------------------------------------- */
    /*                 This is a simple and interesting contract !                 */
    /*       You only need to hold 1,000,000 Lucky(initial value 0.01 ETH)         */
    /*       You have a chance to get 1 ETH when contract tax reaches 1ETH         */
    /*                            Initial tax = 30                                 */
    /*                After openTrading() 5 minute removeLimit(), Tax = 5          */
    /*                    Initial Everyone MaxTotal = 1,000,000                    */
    /*                After removeLimit(), MaxTotal = 10,000,000                   */
    /*        4/5 Tax to contract, It converts taxes to eth when anyone sells      */
    /*               1/5 Tax to Dev, Will be used to promote the token             */
    /*                              100% to LP                                     */    
    /*                        Good Lucky Exeryone !!!                              */    
    /* --------------------------------------------------------------------------- */
    /*                         twitter.com/0xLuckyCoin                             */
    /*                            t.me/xLucky_Coin                                 */
    /* --------------------------------------------------------------------------- */

// 
// SPDX-License-Identifier: MIT
pragma solidity 0.8.21;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval (address indexed owner, address indexed spender, uint256 value);
}

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

}

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);
    }

}

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

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

contract Lucky is Context, IERC20, Ownable {
    using SafeMath for uint256;
    /* -------------------------------------------------------------------------- */
    /*                                  contract                                  */
    /* -------------------------------------------------------------------------- */
    string private constant _name = unicode"LUCKY";
    string private constant _symbol = unicode"Lucky Coin";
    mapping (address => uint256) private _balances;
    mapping (address => bool) public isLuckyHolder;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    address payable private _devWallet;
    uint8 private constant _decimals = 18;
    uint256 private constant _totalSupply = 100000000 * 10**_decimals;  //Anyone max hold 10000000 Lucky
    uint256 private constant _MaxTotal = 10000001 * 10**_decimals;      //Anyone max hold 10000000 Lucky
    uint256 private constant _limitMaxTotal = 1000001 * 10**_decimals;   //Anyone max hold 1000000 Lucky before removeLomit()
    uint256 private constant _luckySupply = 1000000 * 10**_decimals;      //Hold 1% and have the opportunity to participate  
    uint256 private constant tokenToETHThreshold = 10000 * 10**_decimals;  //Make sure every times update Progress
    uint256 private constant ONE_ETH = 1 * 10**_decimals;                   //Lucky holder reward
    /* -------------------------------------------------------------------------- */
    /*                                 swapState                                  */
    /* -------------------------------------------------------------------------- */
    uint256 private maxTxAmount;
    bool private tradingOpen = false;
    uint8 private Tax;
    bool private inSwap = false;
    uint256 firstBlock;
    /* -------------------------------------------------------------------------- */
    /*                                   uniswapV2                                */
    /* -------------------------------------------------------------------------- */
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    /* -------------------------------------------------------------------------- */
    /*                                   events                                   */
    /* -------------------------------------------------------------------------- */
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event Log(uint256 amount, uint256 gas);
    event received(address sender, uint256 value);
    event fallbackCalled(address sender, uint256 value, bytes data);

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

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());

        _approve(address(this), address(uniswapV2Router), _totalSupply);

        Tax = 30;
        maxTxAmount = _limitMaxTotal;
        CurrentRound = 0;

        _devWallet = payable(_msgSender());
        _balances[_msgSender()] = _totalSupply;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[uniswapV2Pair] = true;
        _isExcludedFromFee[_devWallet] = true;

        emit MaxTxAmountUpdated(maxTxAmount);
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

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

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

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

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

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

    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    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 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 transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function _transfer(address from,address to,uint256 amount) internal {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!tradingOpen && (from != owner() && from != address(this) && to != owner())) {
            revert("Trading not enabled");
        }

        uint256 taxAmount = 0;
        uint256 devAmount = 0;//   1/5 taxAmount to dev
        uint256 contractAmount = 0;//   4/5 taxAmount to contract
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            //buy
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to] ) {
                require(amount <= maxTxAmount, "Exceeds the maxTxAmount.");
                require(balanceOf(to) + amount <= maxTxAmount, "Exceeds the maxTxAmount.");
                taxAmount = amount.mul(Tax).div(100);
                if (firstBlock + 3  > block.number) {
                    require(!isContract(to));
                }
            }
            //transfer
            if (to != uniswapV2Pair && !_isExcludedFromFee[to]) {
                require(balanceOf(to) + amount <= maxTxAmount, "Exceeds the maxTxAmount.");
                taxAmount = amount.mul(Tax).div(100);
            }
            //sell
            if(to == uniswapV2Pair && !_isExcludedFromFee[from]){
                taxAmount = amount.mul(Tax).div(100);
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && tradingOpen && contractTokenBalance > tokenToETHThreshold ) {
                swapTokensForEth(contractTokenBalance);
            }
        }
        if(taxAmount > 0){
            devAmount = taxAmount.div(5);//   1/5 taxAmount to dev
            contractAmount = taxAmount.div(5).mul(4);//   4/5 taxAmount to contract
            //transfer Tax to dev
            _balances[_devWallet] = _balances[_devWallet].add(devAmount);
            emit Transfer(from, _devWallet, devAmount);
            //Transfer Tax to contracts
            _balances[address(this)] = _balances[address(this)].add(contractAmount);
            emit Transfer(from, address(this), contractAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
            
        checkHolders(from, to);
        
        if(updateProgress() == 10000){Draw();}

    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve((address(this)),address(uniswapV2Router),type(uint256).max);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        firstBlock = block.number;
        RoundStartMoney = getContractETHBalance();
        tradingOpen = true;
    }

    function removeLimit() public onlyOwner {
        require(tradingOpen == true, "Must open trading before");
        Tax = 5;
        maxTxAmount = _MaxTotal;
        emit MaxTxAmountUpdated(maxTxAmount);
    }

    function getContractETHBalance() public view returns (uint256) {
        return address(this).balance;
    }

    function devWithdraw(uint256 eth) public payable {
        require(_msgSender() == _devWallet, "Only dev");
        if (address(this).balance >= eth) {
            payable(_devWallet).transfer(eth);

            if (RoundStartMoney > eth) {
                RoundStartMoney -= eth;
            } else {
                RoundStartMoney = 0;
            }
        }
    }

    /* -------------------------------------------------------------------------- */
    /*                                    lucky                                   */
    /* -------------------------------------------------------------------------- */

    struct Winner {
        uint256 Round;
        address WinnerAddress;
    }
    Winner _Winner;
    uint256 drawTime;
    uint256 CurrentRound;
    uint256 RoundStartMoney;
    uint256 progress;
    address[] luckyHolders;
    address[] tempHolds;

    function checkHolders(address from, address to) private {
        if(from != uniswapV2Pair && from != address(this) && from != address(0)){
            if(_balances[from] >= _luckySupply && isLuckyHolder[from] == false) {
                isLuckyHolder[from] = true;
                luckyHolders.push(from);
            }else if(_balances[from] >= _luckySupply && isLuckyHolder[from] == true){
                if(!checkluckyHolders(luckyHolders,from)){
                    isLuckyHolder[from] = true;
                    luckyHolders.push(from);
                }
            }else{
                if(isLuckyHolder[from] == true){
                    luckyHolders = removeAddressFromluckyHolders(luckyHolders,from);
                }
                isLuckyHolder[from] = false;
            }
        }

        if(to != uniswapV2Pair && to != address(this) && to != address(0)){
            if(_balances[to] >= _luckySupply && isLuckyHolder[to] == false) {
                isLuckyHolder[to] = true;
                luckyHolders.push(to);
            }else if(_balances[to] >= _luckySupply && isLuckyHolder[to] == true){
                if(!checkluckyHolders(luckyHolders,to)){
                    isLuckyHolder[to] = true;
                    luckyHolders.push(to);
                }
            }else{
                if(isLuckyHolder[to] == true){
                    luckyHolders = removeAddressFromluckyHolders(luckyHolders,to);
                }
                isLuckyHolder[to] = false;
            }
        }
    }

    function checkluckyHolders(
        address[] memory array,
        address checkAddress
    ) private pure returns (bool) {
        uint256 length = array.length;
        bool inLuckyHolders = false;

        for (uint256 i = 0; i < length; i++) {
            if (array[i] == checkAddress) {
                inLuckyHolders = true;
            }
        }
        return inLuckyHolders;
    }

    function removeAddressFromluckyHolders(
        address[] memory array,
        address addressToRemove
    ) private returns (address[] memory) {
        uint256 length = array.length;
        tempHolds = new address[](length);
        uint256 resultIndex = 0;
        uint8 deleteNum = 0;

        for (uint256 i = 0; i < length; i++) {
            if (array[i] != addressToRemove) {
                tempHolds[resultIndex] = array[i];
                resultIndex++;
            }
        }
        for (uint256 d = 0; d < deleteNum; d++){
            tempHolds.pop();
        }
        return tempHolds;
    }

    function whoIsWinner()external view returns (uint256, uint256, address){
        return (_Winner.Round, drawTime, _Winner.WinnerAddress);
    }

    function updateProgress() private returns (uint256) {
        progress = getContractETHBalance().sub(RoundStartMoney).mul(10000).div(ONE_ETH);
        if (progress > 10000) progress = 10000;
        return (progress);
    }

    function showProgress() public view returns (uint256) {
        return (progress);
    }

    function showHolds() public view returns (address[] memory Holds) {
        return (luckyHolders);
    }    

    function getWinner() private view returns (address) {
        uint256 randomNumber = uint256(
            keccak256(
                abi.encodePacked(
                    block.timestamp,
                    msg.sender,
                    luckyHolders.length
                )
            )
        );
        uint256 LuckyNum = randomNumber % luckyHolders.length;
        return luckyHolders[LuckyNum];
    }

    /* -------------------------------------------------------------------------- */
    /*                               Draw !!!                                     */
    /*                         When progress = 10000                              */
    /*                    Anyone sell token will active Draw()                    */
    /*   The contract will randomly select a holder( >=1% total) and send 1ETH    */
    /* -------------------------------------------------------------------------- */
    function Draw() public payable returns (uint256, address) {
        require(luckyHolders.length > 0,"Lucky holders is empty");
        if (progress == 10000 && getContractETHBalance() > ONE_ETH) {
            _Winner.Round = CurrentRound + 1;
            _Winner.WinnerAddress = getWinner();
            drawTime = block.timestamp;
            //send 1ETH  
            payable(_Winner.WinnerAddress).transfer(ONE_ETH);

            RoundStartMoney = getContractETHBalance();
            progress = 0;

            return (_Winner.Round, _Winner.WinnerAddress);
        } else return (_Winner.Round, _Winner.WinnerAddress);
    }

    receive() external payable {
        emit Log(msg.value, gasleft());
    }

    fallback() external payable {
        emit fallbackCalled(_msgSender(), msg.value, msg.data);
    }

}

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":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"}],"name":"Log","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"fallbackCalled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"received","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"Draw","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"eth","type":"uint256"}],"name":"devWithdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getContractETHBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLuckyHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"showHolds","outputs":[{"internalType":"address[]","name":"Holds","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showProgress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"whoIsWinner","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f60085f6101000a81548160ff0219169083151502179055505f600860026101000a81548160ff02191690831515021790555034801562000043575f80fd5b505f62000055620006fd60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001d691906200095b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200028391906200095b565b6040518363ffffffff1660e01b8152600401620002a29291906200099c565b6020604051808303815f875af1158015620002bf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002e591906200095b565b600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200037830600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a6200035b919062000b59565b6305f5e1006200036c919062000ba9565b6200070460201b60201c565b601e600860016101000a81548160ff021916908360ff1602179055506012600a620003a4919062000b59565b620f4241620003b4919062000ba9565b6007819055505f600f81905550620003d1620006fd60201b60201c565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a62000420919062000b59565b6305f5e10062000431919062000ba9565b60015f62000444620006fd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160045f62000496620008cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf60075460405162000659919062000c04565b60405180910390a162000671620006fd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620006cf919062000b59565b6305f5e100620006e0919062000ba9565b604051620006ef919062000c04565b60405180910390a362000d57565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000775576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200076c9062000ca3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007dd9062000d37565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620008c2919062000c04565b60405180910390a3505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200092582620008fa565b9050919050565b620009378162000919565b811462000942575f80fd5b50565b5f8151905062000955816200092c565b92915050565b5f60208284031215620009735762000972620008f6565b5b5f620009828482850162000945565b91505092915050565b620009968162000919565b82525050565b5f604082019050620009b15f8301856200098b565b620009c060208301846200098b565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000a515780860481111562000a295762000a28620009c7565b5b600185161562000a395780820291505b808102905062000a4985620009f4565b945062000a09565b94509492505050565b5f8262000a6b576001905062000b3d565b8162000a7a575f905062000b3d565b816001811462000a93576002811462000a9e5762000ad4565b600191505062000b3d565b60ff84111562000ab35762000ab2620009c7565b5b8360020a91508482111562000acd5762000acc620009c7565b5b5062000b3d565b5060208310610133831016604e8410600b841016171562000b0e5782820a90508381111562000b085762000b07620009c7565b5b62000b3d565b62000b1d848484600162000a00565b9250905081840481111562000b375762000b36620009c7565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000b658262000b44565b915062000b728362000b4d565b925062000ba17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a5a565b905092915050565b5f62000bb58262000b44565b915062000bc28362000b44565b925082820262000bd28162000b44565b9150828204841483151762000bec5762000beb620009c7565b5b5092915050565b62000bfe8162000b44565b82525050565b5f60208201905062000c195f83018462000bf3565b92915050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62000c8b60248362000c1f565b915062000c988262000c2f565b604082019050919050565b5f6020820190508181035f83015262000cbc8162000c7d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000d1f60228362000c1f565b915062000d2c8262000cc3565b604082019050919050565b5f6020820190508181035f83015262000d508162000d11565b9050919050565b614acf8062000d655f395ff3fe608060405260043610610143575f3560e01c806370a08231116100b5578063a9059cbb1161006e578063a9059cbb146104c5578063c543c92214610501578063c9567bf91461051d578063d34628cc14610533578063d4e782721461055b578063dd62ed3e1461057a57610183565b806370a08231146103cb578063715018a6146104075780638c89a0ad1461041d5780638da5cb5b146104475780638e3a6cff1461047157806395d89b411461049b57610183565b8063313ce56711610107578063313ce567146102d157806331c2d847146102fb5780633bbac579146103235780635e1ae86f1461035f5780636225658914610389578063706310a91461039f57610183565b806306fdde03146101c9578063095ea7b3146101f357806318160ddd1461022f57806323b872dd1461025957806325d56c991461029557610183565b36610183577fbd0faddf87043dd749c1b9d4dca8a12589b8cb5e2106832111ce23f219b14367345a604051610179929190613737565b60405180910390a1005b7f7bf8121d238f1338d4842c396807cbe93f5a2396e2b3cad1639735997867b1f56101ac6105b6565b345f366040516101bf94939291906137f7565b60405180910390a1005b3480156101d4575f80fd5b506101dd6105bd565b6040516101ea91906138af565b60405180910390f35b3480156101fe575f80fd5b5061021960048036038101906102149190613934565b6105fa565b604051610226919061398c565b60405180910390f35b34801561023a575f80fd5b50610243610617565b60405161025091906139a5565b60405180910390f35b348015610264575f80fd5b5061027f600480360381019061027a91906139be565b61063a565b60405161028c919061398c565b60405180910390f35b3480156102a0575f80fd5b506102bb60048036038101906102b69190613a0e565b61070e565b6040516102c8919061398c565b60405180910390f35b3480156102dc575f80fd5b506102e561072b565b6040516102f29190613a54565b60405180910390f35b348015610306575f80fd5b50610321600480360381019061031c9190613bad565b610733565b005b34801561032e575f80fd5b5061034960048036038101906103449190613a0e565b610857565b604051610356919061398c565b60405180910390f35b34801561036a575f80fd5b506103736108a9565b6040516103809190613cab565b60405180910390f35b348015610394575f80fd5b5061039d610934565b005b3480156103aa575f80fd5b506103b3610a96565b6040516103c293929190613ccb565b60405180910390f35b3480156103d6575f80fd5b506103f160048036038101906103ec9190613a0e565b610ad1565b6040516103fe91906139a5565b60405180910390f35b348015610412575f80fd5b5061041b610b17565b005b348015610428575f80fd5b50610431610c65565b60405161043e91906139a5565b60405180910390f35b348015610452575f80fd5b5061045b610c6c565b6040516104689190613d00565b60405180910390f35b34801561047c575f80fd5b50610485610c93565b60405161049291906139a5565b60405180910390f35b3480156104a6575f80fd5b506104af610c9c565b6040516104bc91906138af565b60405180910390f35b3480156104d0575f80fd5b506104eb60048036038101906104e69190613934565b610cd9565b6040516104f8919061398c565b60405180910390f35b61051b60048036038101906105169190613d19565b610cf6565b005b348015610528575f80fd5b50610531610e2b565b005b34801561053e575f80fd5b5061055960048036038101906105549190613bad565b6110d5565b005b6105636111fa565b604051610571929190613d44565b60405180910390f35b348015610585575f80fd5b506105a0600480360381019061059b9190613d6b565b6113de565b6040516105ad91906139a5565b60405180910390f35b5f33905090565b60606040518060400160405280600581526020017f4c55434b59000000000000000000000000000000000000000000000000000000815250905090565b5f61060d6106066105b6565b8484611460565b6001905092915050565b5f6012600a6106269190613f05565b6305f5e1006106359190613f4f565b905090565b5f610646848484611623565b610703846106526105b6565b6106fe85604051806060016040528060288152602001614a726028913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106b56105b6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122bd9092919063ffffffff16565b611460565b600190509392505050565b6002602052805f5260405f205f915054906101000a900460ff1681565b5f6012905090565b61073b6105b6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107be90613fda565b60405180910390fd5b5f5b8151811015610853575f60055f8484815181106107e9576107e8613ff8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061084b90614025565b9150506107c9565b5050565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6060601280548060200260200160405190810160405280929190818152602001828054801561092a57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116108e1575b5050505050905090565b61093c6105b6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bf90613fda565b60405180910390fd5b6001151560085f9054906101000a900460ff16151514610a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a14906140b6565b60405180910390fd5b6005600860016101000a81548160ff021916908360ff1602179055506012600a610a479190613f05565b62989681610a559190613f4f565b6007819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf600754604051610a8c91906139a5565b60405180910390a1565b5f805f600c5f0154600e54600c6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925092509250909192565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b1f6105b6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba290613fda565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f47905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f601154905090565b60606040518060400160405280600a81526020017f4c75636b7920436f696e00000000000000000000000000000000000000000000815250905090565b5f610cec610ce56105b6565b8484611623565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d366105b6565b73ffffffffffffffffffffffffffffffffffffffff1614610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d839061411e565b60405180910390fd5b804710610e285760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610df7573d5f803e3d5ffd5b50806010541115610e1f578060105f828254610e13919061413c565b92505081905550610e27565b5f6010819055505b5b50565b610e336105b6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb690613fda565b60405180910390fd5b60085f9054906101000a900460ff1615610f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f05906141b9565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f5630610ad1565b5f80610f60610c6c565b426040518863ffffffff1660e01b8152600401610f8296959493929190614219565b60606040518083038185885af1158015610f9e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fc3919061428c565b505050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016110639291906142dc565b6020604051808303815f875af115801561107f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a3919061432d565b50436009819055506110b3610c65565b601081905550600160085f6101000a81548160ff021916908315150217905550565b6110dd6105b6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116090613fda565b60405180910390fd5b5f5b81518110156111f657600160055f84848151811061118c5761118b613ff8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806111ee90614025565b91505061116b565b5050565b5f805f60128054905011611243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123a906143a2565b60405180910390fd5b61271060115414801561127557506012600a61125f9190613f05565b600161126b9190613f4f565b611273610c65565b115b156113ab576001600f5461128991906143c0565b600c5f018190555061129961231f565b600c6001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600e81905550600c6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6012600a61132e9190613f05565b600161133a9190613f4f565b90811502906040515f60405180830381858888f19350505050158015611362573d5f803e3d5ffd5b5061136b610c65565b6010819055505f601181905550600c5f0154600c6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915091506113da565b600c5f0154600c6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915091505b9091565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c590614463565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361153c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611533906144f1565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161161691906139a5565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611691576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116889061457f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f69061460d565b60405180910390fd5b5f8111611741576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117389061469b565b60405180910390fd5b60085f9054906101000a900460ff161580156118075750611760610c6c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117c757503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561180657506117d6610c6c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b5b15611847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183e90614703565b60405180910390fd5b5f805f611852610c6c565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156118c05750611890610c6c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611e4e5760055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611963575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b61196b575f80fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148015611a145750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611a67575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b6d57600754841115611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa89061476b565b60405180910390fd5b60075484611abe87610ad1565b611ac891906143c0565b1115611b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b009061476b565b60405180910390fd5b611b416064611b33600860019054906101000a900460ff1660ff16876123ac90919063ffffffff16565b61242390919063ffffffff16565b9250436003600954611b5391906143c0565b1115611b6c57611b628561246c565b15611b6b575f80fd5b5b5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611c11575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ca95760075484611c2387610ad1565b611c2d91906143c0565b1115611c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c659061476b565b60405180910390fd5b611ca66064611c98600860019054906101000a900460ff1660ff16876123ac90919063ffffffff16565b61242390919063ffffffff16565b92505b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015611d4c575060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d8c57611d896064611d7b600860019054906101000a900460ff1660ff16876123ac90919063ffffffff16565b61242390919063ffffffff16565b92505b5f611d9630610ad1565b9050600860029054906101000a900460ff16158015611e015750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b8015611e18575060085f9054906101000a900460ff165b8015611e3d57506012600a611e2d9190613f05565b612710611e3a9190613f4f565b81115b15611e4c57611e4b8161247d565b5b505b5f8311156120e557611e6a60058461242390919063ffffffff16565b9150611e936004611e8560058661242390919063ffffffff16565b6123ac90919063ffffffff16565b9050611f068260015f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270890919063ffffffff16565b60015f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fe691906139a5565b60405180910390a361203e8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270890919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120dc91906139a5565b60405180910390a35b6121358460015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276590919063ffffffff16565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121d861218c848661276590919063ffffffff16565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270890919063ffffffff16565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61227b868861276590919063ffffffff16565b60405161228891906139a5565b60405180910390a361229a86866127ae565b6127106122a56132d0565b036122b5576122b26111fa565b50505b505050505050565b5f838311158290612304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fb91906138af565b60405180910390fd5b505f8385612312919061413c565b9050809150509392505050565b5f80423360128054905060405160200161233b939291906147ee565b604051602081830303815290604052805190602001205f1c90505f601280549050826123679190614857565b90506012818154811061237d5761237c613ff8565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250505090565b5f8083036123bc575f905061241d565b5f82846123c99190613f4f565b90508284826123d89190614887565b14612418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240f90614927565b60405180910390fd5b809150505b92915050565b5f61246483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613350565b905092915050565b5f80823b90505f8111915050919050565b6001600860026101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156124b4576124b3613a71565b5b6040519080825280602002602001820160405280156124e25781602001602082028036833780820191505090505b50905030815f815181106124f9576124f8613ff8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561259d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c19190614959565b816001815181106125d5576125d4613ff8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061265b30600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611460565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016126bd959493929190614984565b5f604051808303815f87803b1580156126d4575f80fd5b505af11580156126e6573d5f803e3d5ffd5b50505050505f600860026101000a81548160ff02191690831515021790555050565b5f80828461271691906143c0565b90508381101561275b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275290614a26565b60405180910390fd5b8091505092915050565b5f6127a683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122bd565b905092915050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561283757503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561286f57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d3d576012600a6128829190613f05565b620f42406128909190613f4f565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015801561292857505f151560025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515145b156129e757600160025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550601282908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612d3c565b6012600a6129f59190613f05565b620f4240612a039190613f4f565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410158015612a9c57506001151560025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515145b15612bed57612b2e6012805480602002602001604051908101604052809291908181526020018280548015612b2357602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612ada575b5050505050836133b1565b612be857600160025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550601282908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b612d3b565b6001151560025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503612ce657612ccf6012805480602002602001604051908101604052809291908181526020018280548015612cc457602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612c7b575b505050505083613433565b60129080519060200190612ce492919061367d565b505b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b5b5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612dc657503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015612dfe57505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156132cc576012600a612e119190613f05565b620f4240612e1f9190613f4f565b60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410158015612eb757505f151560025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515145b15612f7657600160025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550601281908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506132cb565b6012600a612f849190613f05565b620f4240612f929190613f4f565b60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015801561302b57506001151560025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515145b1561317c576130bd60128054806020026020016040519081016040528092919081815260200182805480156130b257602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311613069575b5050505050826133b1565b61317757600160025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550601281908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6132ca565b6001151560025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515036132755761325e601280548060200260200160405190810160405280929190818152602001828054801561325357602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161320a575b505050505082613433565b6012908051906020019061327392919061367d565b505b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b5b5b5050565b5f61332c6012600a6132e29190613f05565b60016132ee9190613f4f565b61331e612710613310601054613302610c65565b61276590919063ffffffff16565b6123ac90919063ffffffff16565b61242390919063ffffffff16565b6011819055506127106011541115613348576127106011819055505b601154905090565b5f8083118290613396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338d91906138af565b60405180910390fd5b505f83856133a49190614887565b9050809150509392505050565b5f80835190505f805b82811015613427578473ffffffffffffffffffffffffffffffffffffffff168682815181106133ec576133eb613ff8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff160361341457600191505b808061341f90614025565b9150506133ba565b50809250505092915050565b60605f835190508067ffffffffffffffff81111561345457613453613a71565b5b6040519080825280602002602001820160405280156134825781602001602082028036833780820191505090505b506013908051906020019061349892919061367d565b505f805f5b83811015613588578573ffffffffffffffffffffffffffffffffffffffff168782815181106134cf576134ce613ff8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146135755786818151811061350557613504613ff8565b5b60200260200101516013848154811061352157613520613ff8565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828061357190614025565b9350505b808061358090614025565b91505061349d565b505f5b8160ff168110156135ed5760138054806135a8576135a7614a44565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905580806135e590614025565b91505061358b565b50601380548060200260200160405190810160405280929190818152602001828054801561366d57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311613624575b5050505050935050505092915050565b828054828255905f5260205f209081019282156136f3579160200282015b828111156136f2578251825f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061369b565b5b5090506137009190613704565b5090565b5b8082111561371b575f815f905550600101613705565b5090565b5f819050919050565b6137318161371f565b82525050565b5f60408201905061374a5f830185613728565b6137576020830184613728565b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6137878261375e565b9050919050565b6137978161377d565b82525050565b5f82825260208201905092915050565b828183375f83830152505050565b5f601f19601f8301169050919050565b5f6137d6838561379d565b93506137e38385846137ad565b6137ec836137bb565b840190509392505050565b5f60608201905061380a5f83018761378e565b6138176020830186613728565b818103604083015261382a8184866137cb565b905095945050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561386c578082015181840152602081019050613851565b5f8484015250505050565b5f61388182613835565b61388b818561383f565b935061389b81856020860161384f565b6138a4816137bb565b840191505092915050565b5f6020820190508181035f8301526138c78184613877565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b6138e98161377d565b81146138f3575f80fd5b50565b5f81359050613904816138e0565b92915050565b6139138161371f565b811461391d575f80fd5b50565b5f8135905061392e8161390a565b92915050565b5f806040838503121561394a576139496138d8565b5b5f613957858286016138f6565b925050602061396885828601613920565b9150509250929050565b5f8115159050919050565b61398681613972565b82525050565b5f60208201905061399f5f83018461397d565b92915050565b5f6020820190506139b85f830184613728565b92915050565b5f805f606084860312156139d5576139d46138d8565b5b5f6139e2868287016138f6565b93505060206139f3868287016138f6565b9250506040613a0486828701613920565b9150509250925092565b5f60208284031215613a2357613a226138d8565b5b5f613a30848285016138f6565b91505092915050565b5f60ff82169050919050565b613a4e81613a39565b82525050565b5f602082019050613a675f830184613a45565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613aa7826137bb565b810181811067ffffffffffffffff82111715613ac657613ac5613a71565b5b80604052505050565b5f613ad86138cf565b9050613ae48282613a9e565b919050565b5f67ffffffffffffffff821115613b0357613b02613a71565b5b602082029050602081019050919050565b5f80fd5b5f613b2a613b2584613ae9565b613acf565b90508083825260208201905060208402830185811115613b4d57613b4c613b14565b5b835b81811015613b765780613b6288826138f6565b845260208401935050602081019050613b4f565b5050509392505050565b5f82601f830112613b9457613b93613a6d565b5b8135613ba4848260208601613b18565b91505092915050565b5f60208284031215613bc257613bc16138d8565b5b5f82013567ffffffffffffffff811115613bdf57613bde6138dc565b5b613beb84828501613b80565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c268161377d565b82525050565b5f613c378383613c1d565b60208301905092915050565b5f602082019050919050565b5f613c5982613bf4565b613c638185613bfe565b9350613c6e83613c0e565b805f5b83811015613c9e578151613c858882613c2c565b9750613c9083613c43565b925050600181019050613c71565b5085935050505092915050565b5f6020820190508181035f830152613cc38184613c4f565b905092915050565b5f606082019050613cde5f830186613728565b613ceb6020830185613728565b613cf8604083018461378e565b949350505050565b5f602082019050613d135f83018461378e565b92915050565b5f60208284031215613d2e57613d2d6138d8565b5b5f613d3b84828501613920565b91505092915050565b5f604082019050613d575f830185613728565b613d64602083018461378e565b9392505050565b5f8060408385031215613d8157613d806138d8565b5b5f613d8e858286016138f6565b9250506020613d9f858286016138f6565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115613e2b57808604811115613e0757613e06613da9565b5b6001851615613e165780820291505b8081029050613e2485613dd6565b9450613deb565b94509492505050565b5f82613e435760019050613efe565b81613e50575f9050613efe565b8160018114613e665760028114613e7057613e9f565b6001915050613efe565b60ff841115613e8257613e81613da9565b5b8360020a915084821115613e9957613e98613da9565b5b50613efe565b5060208310610133831016604e8410600b8410161715613ed45782820a905083811115613ecf57613ece613da9565b5b613efe565b613ee18484846001613de2565b92509050818404811115613ef857613ef7613da9565b5b81810290505b9392505050565b5f613f0f8261371f565b9150613f1a83613a39565b9250613f477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613e34565b905092915050565b5f613f598261371f565b9150613f648361371f565b9250828202613f728161371f565b91508282048414831517613f8957613f88613da9565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613fc460208361383f565b9150613fcf82613f90565b602082019050919050565b5f6020820190508181035f830152613ff181613fb8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61402f8261371f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361406157614060613da9565b5b600182019050919050565b7f4d757374206f70656e2074726164696e67206265666f726500000000000000005f82015250565b5f6140a060188361383f565b91506140ab8261406c565b602082019050919050565b5f6020820190508181035f8301526140cd81614094565b9050919050565b7f4f6e6c79206465760000000000000000000000000000000000000000000000005f82015250565b5f61410860088361383f565b9150614113826140d4565b602082019050919050565b5f6020820190508181035f830152614135816140fc565b9050919050565b5f6141468261371f565b91506141518361371f565b925082820390508181111561416957614168613da9565b5b92915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6141a360178361383f565b91506141ae8261416f565b602082019050919050565b5f6020820190508181035f8301526141d081614197565b9050919050565b5f819050919050565b5f819050919050565b5f6142036141fe6141f9846141d7565b6141e0565b61371f565b9050919050565b614213816141e9565b82525050565b5f60c08201905061422c5f83018961378e565b6142396020830188613728565b614246604083018761420a565b614253606083018661420a565b614260608083018561378e565b61426d60a0830184613728565b979650505050505050565b5f815190506142868161390a565b92915050565b5f805f606084860312156142a3576142a26138d8565b5b5f6142b086828701614278565b93505060206142c186828701614278565b92505060406142d286828701614278565b9150509250925092565b5f6040820190506142ef5f83018561378e565b6142fc6020830184613728565b9392505050565b61430c81613972565b8114614316575f80fd5b50565b5f8151905061432781614303565b92915050565b5f60208284031215614342576143416138d8565b5b5f61434f84828501614319565b91505092915050565b7f4c75636b7920686f6c6465727320697320656d707479000000000000000000005f82015250565b5f61438c60168361383f565b915061439782614358565b602082019050919050565b5f6020820190508181035f8301526143b981614380565b9050919050565b5f6143ca8261371f565b91506143d58361371f565b92508282019050808211156143ed576143ec613da9565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61444d60248361383f565b9150614458826143f3565b604082019050919050565b5f6020820190508181035f83015261447a81614441565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6144db60228361383f565b91506144e682614481565b604082019050919050565b5f6020820190508181035f830152614508816144cf565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61456960258361383f565b91506145748261450f565b604082019050919050565b5f6020820190508181035f8301526145968161455d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6145f760238361383f565b91506146028261459d565b604082019050919050565b5f6020820190508181035f830152614624816145eb565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61468560298361383f565b91506146908261462b565b604082019050919050565b5f6020820190508181035f8301526146b281614679565b9050919050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f6146ed60138361383f565b91506146f8826146b9565b602082019050919050565b5f6020820190508181035f83015261471a816146e1565b9050919050565b7f4578636565647320746865206d61785478416d6f756e742e00000000000000005f82015250565b5f61475560188361383f565b915061476082614721565b602082019050919050565b5f6020820190508181035f83015261478281614749565b9050919050565b5f819050919050565b6147a361479e8261371f565b614789565b82525050565b5f8160601b9050919050565b5f6147bf826147a9565b9050919050565b5f6147d0826147b5565b9050919050565b6147e86147e38261377d565b6147c6565b82525050565b5f6147f98286614792565b60208201915061480982856147d7565b6014820191506148198284614792565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6148618261371f565b915061486c8361371f565b92508261487c5761487b61482a565b5b828206905092915050565b5f6148918261371f565b915061489c8361371f565b9250826148ac576148ab61482a565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61491160218361383f565b915061491c826148b7565b604082019050919050565b5f6020820190508181035f83015261493e81614905565b9050919050565b5f81519050614953816138e0565b92915050565b5f6020828403121561496e5761496d6138d8565b5b5f61497b84828501614945565b91505092915050565b5f60a0820190506149975f830188613728565b6149a4602083018761420a565b81810360408301526149b68186613c4f565b90506149c5606083018561378e565b6149d26080830184613728565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614a10601b8361383f565b9150614a1b826149dc565b602082019050919050565b5f6020820190508181035f830152614a3d81614a04565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220045038c671cf58bdeed86e3a9234315e87325d576f9519d0a6990578be3ba45c64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610143575f3560e01c806370a08231116100b5578063a9059cbb1161006e578063a9059cbb146104c5578063c543c92214610501578063c9567bf91461051d578063d34628cc14610533578063d4e782721461055b578063dd62ed3e1461057a57610183565b806370a08231146103cb578063715018a6146104075780638c89a0ad1461041d5780638da5cb5b146104475780638e3a6cff1461047157806395d89b411461049b57610183565b8063313ce56711610107578063313ce567146102d157806331c2d847146102fb5780633bbac579146103235780635e1ae86f1461035f5780636225658914610389578063706310a91461039f57610183565b806306fdde03146101c9578063095ea7b3146101f357806318160ddd1461022f57806323b872dd1461025957806325d56c991461029557610183565b36610183577fbd0faddf87043dd749c1b9d4dca8a12589b8cb5e2106832111ce23f219b14367345a604051610179929190613737565b60405180910390a1005b7f7bf8121d238f1338d4842c396807cbe93f5a2396e2b3cad1639735997867b1f56101ac6105b6565b345f366040516101bf94939291906137f7565b60405180910390a1005b3480156101d4575f80fd5b506101dd6105bd565b6040516101ea91906138af565b60405180910390f35b3480156101fe575f80fd5b5061021960048036038101906102149190613934565b6105fa565b604051610226919061398c565b60405180910390f35b34801561023a575f80fd5b50610243610617565b60405161025091906139a5565b60405180910390f35b348015610264575f80fd5b5061027f600480360381019061027a91906139be565b61063a565b60405161028c919061398c565b60405180910390f35b3480156102a0575f80fd5b506102bb60048036038101906102b69190613a0e565b61070e565b6040516102c8919061398c565b60405180910390f35b3480156102dc575f80fd5b506102e561072b565b6040516102f29190613a54565b60405180910390f35b348015610306575f80fd5b50610321600480360381019061031c9190613bad565b610733565b005b34801561032e575f80fd5b5061034960048036038101906103449190613a0e565b610857565b604051610356919061398c565b60405180910390f35b34801561036a575f80fd5b506103736108a9565b6040516103809190613cab565b60405180910390f35b348015610394575f80fd5b5061039d610934565b005b3480156103aa575f80fd5b506103b3610a96565b6040516103c293929190613ccb565b60405180910390f35b3480156103d6575f80fd5b506103f160048036038101906103ec9190613a0e565b610ad1565b6040516103fe91906139a5565b60405180910390f35b348015610412575f80fd5b5061041b610b17565b005b348015610428575f80fd5b50610431610c65565b60405161043e91906139a5565b60405180910390f35b348015610452575f80fd5b5061045b610c6c565b6040516104689190613d00565b60405180910390f35b34801561047c575f80fd5b50610485610c93565b60405161049291906139a5565b60405180910390f35b3480156104a6575f80fd5b506104af610c9c565b6040516104bc91906138af565b60405180910390f35b3480156104d0575f80fd5b506104eb60048036038101906104e69190613934565b610cd9565b6040516104f8919061398c565b60405180910390f35b61051b60048036038101906105169190613d19565b610cf6565b005b348015610528575f80fd5b50610531610e2b565b005b34801561053e575f80fd5b5061055960048036038101906105549190613bad565b6110d5565b005b6105636111fa565b604051610571929190613d44565b60405180910390f35b348015610585575f80fd5b506105a0600480360381019061059b9190613d6b565b6113de565b6040516105ad91906139a5565b60405180910390f35b5f33905090565b60606040518060400160405280600581526020017f4c55434b59000000000000000000000000000000000000000000000000000000815250905090565b5f61060d6106066105b6565b8484611460565b6001905092915050565b5f6012600a6106269190613f05565b6305f5e1006106359190613f4f565b905090565b5f610646848484611623565b610703846106526105b6565b6106fe85604051806060016040528060288152602001614a726028913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106b56105b6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122bd9092919063ffffffff16565b611460565b600190509392505050565b6002602052805f5260405f205f915054906101000a900460ff1681565b5f6012905090565b61073b6105b6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107be90613fda565b60405180910390fd5b5f5b8151811015610853575f60055f8484815181106107e9576107e8613ff8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061084b90614025565b9150506107c9565b5050565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6060601280548060200260200160405190810160405280929190818152602001828054801561092a57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116108e1575b5050505050905090565b61093c6105b6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bf90613fda565b60405180910390fd5b6001151560085f9054906101000a900460ff16151514610a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a14906140b6565b60405180910390fd5b6005600860016101000a81548160ff021916908360ff1602179055506012600a610a479190613f05565b62989681610a559190613f4f565b6007819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf600754604051610a8c91906139a5565b60405180910390a1565b5f805f600c5f0154600e54600c6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925092509250909192565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b1f6105b6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba290613fda565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f47905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f601154905090565b60606040518060400160405280600a81526020017f4c75636b7920436f696e00000000000000000000000000000000000000000000815250905090565b5f610cec610ce56105b6565b8484611623565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d366105b6565b73ffffffffffffffffffffffffffffffffffffffff1614610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d839061411e565b60405180910390fd5b804710610e285760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610df7573d5f803e3d5ffd5b50806010541115610e1f578060105f828254610e13919061413c565b92505081905550610e27565b5f6010819055505b5b50565b610e336105b6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb690613fda565b60405180910390fd5b60085f9054906101000a900460ff1615610f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f05906141b9565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f5630610ad1565b5f80610f60610c6c565b426040518863ffffffff1660e01b8152600401610f8296959493929190614219565b60606040518083038185885af1158015610f9e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fc3919061428c565b505050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016110639291906142dc565b6020604051808303815f875af115801561107f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a3919061432d565b50436009819055506110b3610c65565b601081905550600160085f6101000a81548160ff021916908315150217905550565b6110dd6105b6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116090613fda565b60405180910390fd5b5f5b81518110156111f657600160055f84848151811061118c5761118b613ff8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806111ee90614025565b91505061116b565b5050565b5f805f60128054905011611243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123a906143a2565b60405180910390fd5b61271060115414801561127557506012600a61125f9190613f05565b600161126b9190613f4f565b611273610c65565b115b156113ab576001600f5461128991906143c0565b600c5f018190555061129961231f565b600c6001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600e81905550600c6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6012600a61132e9190613f05565b600161133a9190613f4f565b90811502906040515f60405180830381858888f19350505050158015611362573d5f803e3d5ffd5b5061136b610c65565b6010819055505f601181905550600c5f0154600c6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915091506113da565b600c5f0154600c6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915091505b9091565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c590614463565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361153c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611533906144f1565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161161691906139a5565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611691576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116889061457f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f69061460d565b60405180910390fd5b5f8111611741576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117389061469b565b60405180910390fd5b60085f9054906101000a900460ff161580156118075750611760610c6c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117c757503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561180657506117d6610c6c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b5b15611847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183e90614703565b60405180910390fd5b5f805f611852610c6c565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156118c05750611890610c6c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611e4e5760055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611963575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b61196b575f80fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148015611a145750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611a67575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b6d57600754841115611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa89061476b565b60405180910390fd5b60075484611abe87610ad1565b611ac891906143c0565b1115611b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b009061476b565b60405180910390fd5b611b416064611b33600860019054906101000a900460ff1660ff16876123ac90919063ffffffff16565b61242390919063ffffffff16565b9250436003600954611b5391906143c0565b1115611b6c57611b628561246c565b15611b6b575f80fd5b5b5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611c11575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ca95760075484611c2387610ad1565b611c2d91906143c0565b1115611c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c659061476b565b60405180910390fd5b611ca66064611c98600860019054906101000a900460ff1660ff16876123ac90919063ffffffff16565b61242390919063ffffffff16565b92505b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015611d4c575060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d8c57611d896064611d7b600860019054906101000a900460ff1660ff16876123ac90919063ffffffff16565b61242390919063ffffffff16565b92505b5f611d9630610ad1565b9050600860029054906101000a900460ff16158015611e015750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b8015611e18575060085f9054906101000a900460ff165b8015611e3d57506012600a611e2d9190613f05565b612710611e3a9190613f4f565b81115b15611e4c57611e4b8161247d565b5b505b5f8311156120e557611e6a60058461242390919063ffffffff16565b9150611e936004611e8560058661242390919063ffffffff16565b6123ac90919063ffffffff16565b9050611f068260015f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270890919063ffffffff16565b60015f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fe691906139a5565b60405180910390a361203e8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270890919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120dc91906139a5565b60405180910390a35b6121358460015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276590919063ffffffff16565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121d861218c848661276590919063ffffffff16565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270890919063ffffffff16565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61227b868861276590919063ffffffff16565b60405161228891906139a5565b60405180910390a361229a86866127ae565b6127106122a56132d0565b036122b5576122b26111fa565b50505b505050505050565b5f838311158290612304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fb91906138af565b60405180910390fd5b505f8385612312919061413c565b9050809150509392505050565b5f80423360128054905060405160200161233b939291906147ee565b604051602081830303815290604052805190602001205f1c90505f601280549050826123679190614857565b90506012818154811061237d5761237c613ff8565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250505090565b5f8083036123bc575f905061241d565b5f82846123c99190613f4f565b90508284826123d89190614887565b14612418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240f90614927565b60405180910390fd5b809150505b92915050565b5f61246483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613350565b905092915050565b5f80823b90505f8111915050919050565b6001600860026101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156124b4576124b3613a71565b5b6040519080825280602002602001820160405280156124e25781602001602082028036833780820191505090505b50905030815f815181106124f9576124f8613ff8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561259d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c19190614959565b816001815181106125d5576125d4613ff8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061265b30600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611460565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016126bd959493929190614984565b5f604051808303815f87803b1580156126d4575f80fd5b505af11580156126e6573d5f803e3d5ffd5b50505050505f600860026101000a81548160ff02191690831515021790555050565b5f80828461271691906143c0565b90508381101561275b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275290614a26565b60405180910390fd5b8091505092915050565b5f6127a683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122bd565b905092915050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561283757503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561286f57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d3d576012600a6128829190613f05565b620f42406128909190613f4f565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015801561292857505f151560025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515145b156129e757600160025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550601282908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612d3c565b6012600a6129f59190613f05565b620f4240612a039190613f4f565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410158015612a9c57506001151560025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515145b15612bed57612b2e6012805480602002602001604051908101604052809291908181526020018280548015612b2357602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612ada575b5050505050836133b1565b612be857600160025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550601282908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b612d3b565b6001151560025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503612ce657612ccf6012805480602002602001604051908101604052809291908181526020018280548015612cc457602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612c7b575b505050505083613433565b60129080519060200190612ce492919061367d565b505b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b5b5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612dc657503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015612dfe57505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156132cc576012600a612e119190613f05565b620f4240612e1f9190613f4f565b60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410158015612eb757505f151560025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515145b15612f7657600160025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550601281908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506132cb565b6012600a612f849190613f05565b620f4240612f929190613f4f565b60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015801561302b57506001151560025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515145b1561317c576130bd60128054806020026020016040519081016040528092919081815260200182805480156130b257602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311613069575b5050505050826133b1565b61317757600160025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550601281908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6132ca565b6001151560025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515036132755761325e601280548060200260200160405190810160405280929190818152602001828054801561325357602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161320a575b505050505082613433565b6012908051906020019061327392919061367d565b505b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b5b5b5050565b5f61332c6012600a6132e29190613f05565b60016132ee9190613f4f565b61331e612710613310601054613302610c65565b61276590919063ffffffff16565b6123ac90919063ffffffff16565b61242390919063ffffffff16565b6011819055506127106011541115613348576127106011819055505b601154905090565b5f8083118290613396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338d91906138af565b60405180910390fd5b505f83856133a49190614887565b9050809150509392505050565b5f80835190505f805b82811015613427578473ffffffffffffffffffffffffffffffffffffffff168682815181106133ec576133eb613ff8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff160361341457600191505b808061341f90614025565b9150506133ba565b50809250505092915050565b60605f835190508067ffffffffffffffff81111561345457613453613a71565b5b6040519080825280602002602001820160405280156134825781602001602082028036833780820191505090505b506013908051906020019061349892919061367d565b505f805f5b83811015613588578573ffffffffffffffffffffffffffffffffffffffff168782815181106134cf576134ce613ff8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146135755786818151811061350557613504613ff8565b5b60200260200101516013848154811061352157613520613ff8565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828061357190614025565b9350505b808061358090614025565b91505061349d565b505f5b8160ff168110156135ed5760138054806135a8576135a7614a44565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905580806135e590614025565b91505061358b565b50601380548060200260200160405190810160405280929190818152602001828054801561366d57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311613624575b5050505050935050505092915050565b828054828255905f5260205f209081019282156136f3579160200282015b828111156136f2578251825f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061369b565b5b5090506137009190613704565b5090565b5b8082111561371b575f815f905550600101613705565b5090565b5f819050919050565b6137318161371f565b82525050565b5f60408201905061374a5f830185613728565b6137576020830184613728565b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6137878261375e565b9050919050565b6137978161377d565b82525050565b5f82825260208201905092915050565b828183375f83830152505050565b5f601f19601f8301169050919050565b5f6137d6838561379d565b93506137e38385846137ad565b6137ec836137bb565b840190509392505050565b5f60608201905061380a5f83018761378e565b6138176020830186613728565b818103604083015261382a8184866137cb565b905095945050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561386c578082015181840152602081019050613851565b5f8484015250505050565b5f61388182613835565b61388b818561383f565b935061389b81856020860161384f565b6138a4816137bb565b840191505092915050565b5f6020820190508181035f8301526138c78184613877565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b6138e98161377d565b81146138f3575f80fd5b50565b5f81359050613904816138e0565b92915050565b6139138161371f565b811461391d575f80fd5b50565b5f8135905061392e8161390a565b92915050565b5f806040838503121561394a576139496138d8565b5b5f613957858286016138f6565b925050602061396885828601613920565b9150509250929050565b5f8115159050919050565b61398681613972565b82525050565b5f60208201905061399f5f83018461397d565b92915050565b5f6020820190506139b85f830184613728565b92915050565b5f805f606084860312156139d5576139d46138d8565b5b5f6139e2868287016138f6565b93505060206139f3868287016138f6565b9250506040613a0486828701613920565b9150509250925092565b5f60208284031215613a2357613a226138d8565b5b5f613a30848285016138f6565b91505092915050565b5f60ff82169050919050565b613a4e81613a39565b82525050565b5f602082019050613a675f830184613a45565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613aa7826137bb565b810181811067ffffffffffffffff82111715613ac657613ac5613a71565b5b80604052505050565b5f613ad86138cf565b9050613ae48282613a9e565b919050565b5f67ffffffffffffffff821115613b0357613b02613a71565b5b602082029050602081019050919050565b5f80fd5b5f613b2a613b2584613ae9565b613acf565b90508083825260208201905060208402830185811115613b4d57613b4c613b14565b5b835b81811015613b765780613b6288826138f6565b845260208401935050602081019050613b4f565b5050509392505050565b5f82601f830112613b9457613b93613a6d565b5b8135613ba4848260208601613b18565b91505092915050565b5f60208284031215613bc257613bc16138d8565b5b5f82013567ffffffffffffffff811115613bdf57613bde6138dc565b5b613beb84828501613b80565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c268161377d565b82525050565b5f613c378383613c1d565b60208301905092915050565b5f602082019050919050565b5f613c5982613bf4565b613c638185613bfe565b9350613c6e83613c0e565b805f5b83811015613c9e578151613c858882613c2c565b9750613c9083613c43565b925050600181019050613c71565b5085935050505092915050565b5f6020820190508181035f830152613cc38184613c4f565b905092915050565b5f606082019050613cde5f830186613728565b613ceb6020830185613728565b613cf8604083018461378e565b949350505050565b5f602082019050613d135f83018461378e565b92915050565b5f60208284031215613d2e57613d2d6138d8565b5b5f613d3b84828501613920565b91505092915050565b5f604082019050613d575f830185613728565b613d64602083018461378e565b9392505050565b5f8060408385031215613d8157613d806138d8565b5b5f613d8e858286016138f6565b9250506020613d9f858286016138f6565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115613e2b57808604811115613e0757613e06613da9565b5b6001851615613e165780820291505b8081029050613e2485613dd6565b9450613deb565b94509492505050565b5f82613e435760019050613efe565b81613e50575f9050613efe565b8160018114613e665760028114613e7057613e9f565b6001915050613efe565b60ff841115613e8257613e81613da9565b5b8360020a915084821115613e9957613e98613da9565b5b50613efe565b5060208310610133831016604e8410600b8410161715613ed45782820a905083811115613ecf57613ece613da9565b5b613efe565b613ee18484846001613de2565b92509050818404811115613ef857613ef7613da9565b5b81810290505b9392505050565b5f613f0f8261371f565b9150613f1a83613a39565b9250613f477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613e34565b905092915050565b5f613f598261371f565b9150613f648361371f565b9250828202613f728161371f565b91508282048414831517613f8957613f88613da9565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613fc460208361383f565b9150613fcf82613f90565b602082019050919050565b5f6020820190508181035f830152613ff181613fb8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61402f8261371f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361406157614060613da9565b5b600182019050919050565b7f4d757374206f70656e2074726164696e67206265666f726500000000000000005f82015250565b5f6140a060188361383f565b91506140ab8261406c565b602082019050919050565b5f6020820190508181035f8301526140cd81614094565b9050919050565b7f4f6e6c79206465760000000000000000000000000000000000000000000000005f82015250565b5f61410860088361383f565b9150614113826140d4565b602082019050919050565b5f6020820190508181035f830152614135816140fc565b9050919050565b5f6141468261371f565b91506141518361371f565b925082820390508181111561416957614168613da9565b5b92915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6141a360178361383f565b91506141ae8261416f565b602082019050919050565b5f6020820190508181035f8301526141d081614197565b9050919050565b5f819050919050565b5f819050919050565b5f6142036141fe6141f9846141d7565b6141e0565b61371f565b9050919050565b614213816141e9565b82525050565b5f60c08201905061422c5f83018961378e565b6142396020830188613728565b614246604083018761420a565b614253606083018661420a565b614260608083018561378e565b61426d60a0830184613728565b979650505050505050565b5f815190506142868161390a565b92915050565b5f805f606084860312156142a3576142a26138d8565b5b5f6142b086828701614278565b93505060206142c186828701614278565b92505060406142d286828701614278565b9150509250925092565b5f6040820190506142ef5f83018561378e565b6142fc6020830184613728565b9392505050565b61430c81613972565b8114614316575f80fd5b50565b5f8151905061432781614303565b92915050565b5f60208284031215614342576143416138d8565b5b5f61434f84828501614319565b91505092915050565b7f4c75636b7920686f6c6465727320697320656d707479000000000000000000005f82015250565b5f61438c60168361383f565b915061439782614358565b602082019050919050565b5f6020820190508181035f8301526143b981614380565b9050919050565b5f6143ca8261371f565b91506143d58361371f565b92508282019050808211156143ed576143ec613da9565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61444d60248361383f565b9150614458826143f3565b604082019050919050565b5f6020820190508181035f83015261447a81614441565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6144db60228361383f565b91506144e682614481565b604082019050919050565b5f6020820190508181035f830152614508816144cf565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61456960258361383f565b91506145748261450f565b604082019050919050565b5f6020820190508181035f8301526145968161455d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6145f760238361383f565b91506146028261459d565b604082019050919050565b5f6020820190508181035f830152614624816145eb565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61468560298361383f565b91506146908261462b565b604082019050919050565b5f6020820190508181035f8301526146b281614679565b9050919050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f6146ed60138361383f565b91506146f8826146b9565b602082019050919050565b5f6020820190508181035f83015261471a816146e1565b9050919050565b7f4578636565647320746865206d61785478416d6f756e742e00000000000000005f82015250565b5f61475560188361383f565b915061476082614721565b602082019050919050565b5f6020820190508181035f83015261478281614749565b9050919050565b5f819050919050565b6147a361479e8261371f565b614789565b82525050565b5f8160601b9050919050565b5f6147bf826147a9565b9050919050565b5f6147d0826147b5565b9050919050565b6147e86147e38261377d565b6147c6565b82525050565b5f6147f98286614792565b60208201915061480982856147d7565b6014820191506148198284614792565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6148618261371f565b915061486c8361371f565b92508261487c5761487b61482a565b5b828206905092915050565b5f6148918261371f565b915061489c8361371f565b9250826148ac576148ab61482a565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61491160218361383f565b915061491c826148b7565b604082019050919050565b5f6020820190508181035f83015261493e81614905565b9050919050565b5f81519050614953816138e0565b92915050565b5f6020828403121561496e5761496d6138d8565b5b5f61497b84828501614945565b91505092915050565b5f60a0820190506149975f830188613728565b6149a4602083018761420a565b81810360408301526149b68186613c4f565b90506149c5606083018561378e565b6149d26080830184613728565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614a10601b8361383f565b9150614a1b826149dc565b602082019050919050565b5f6020820190508181035f830152614a3d81614a04565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220045038c671cf58bdeed86e3a9234315e87325d576f9519d0a6990578be3ba45c64736f6c63430008150033

Deployed Bytecode Sourcemap

4875:15991:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20719:25;20723:9;20734;20719:25;;;;;;;:::i;:::-;;;;;;;;4875:15991;;20804:49;20819:12;:10;:12::i;:::-;20833:9;20844:8;;20804:49;;;;;;;;;:::i;:::-;;;;;;;;4875:15991;8527:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9842:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8804:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10011:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5382:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8713:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13888:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14058:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18961:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14606:214;;;;;;;;;;;;;:::i;:::-;;18475:145;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;8912:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3956:148;;;;;;;;;;;;;:::i;:::-;;14828:110;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3742:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18863:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8618:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10332:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14946:379;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14149:449;;;;;;;;;;;;;:::i;:::-;;13716:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20025:643;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;9691:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1496:98;1549:7;1576:10;1569:17;;1496:98;:::o;8527:83::-;8564:13;8597:5;;;;;;;;;;;;;;;;;8590:12;;8527:83;:::o;9842:161::-;9917:4;9934:39;9943:12;:10;:12::i;:::-;9957:7;9966:6;9934:8;:39::i;:::-;9991:4;9984:11;;9842:161;;;;:::o;8804:100::-;8857:7;5691:2;5752;:13;;;;:::i;:::-;5740:9;:25;;;;:::i;:::-;8877:19;;8804:100;:::o;10011:313::-;10109:4;10126:36;10136:6;10144:9;10155:6;10126:9;:36::i;:::-;10173:121;10182:6;10190:12;:10;:12::i;:::-;10204:89;10242:6;10204:89;;;;;;;;;;;;;;;;;:11;:19;10216:6;10204:19;;;;;;;;;;;;;;;:33;10224:12;:10;:12::i;:::-;10204:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10173:8;:121::i;:::-;10312:4;10305:11;;10011:313;;;;;:::o;5382:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;8713:83::-;8754:5;5691:2;8772:16;;8713:83;:::o;13888:162::-;3879:12;:10;:12::i;:::-;3869:22;;:6;;;;;;;;;;:22;;;3861:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13961:6:::1;13956:87;13977:6;:13;13973:1;:17;13956:87;;;14028:5;14010:4;:15;14015:6;14022:1;14015:9;;;;;;;;:::i;:::-;;;;;;;;14010:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;13992:3;;;;;:::i;:::-;;;;13956:87;;;;13888:162:::0;:::o;14058:83::-;14105:4;14126;:7;14131:1;14126:7;;;;;;;;;;;;;;;;;;;;;;;;;14119:14;;14058:83;;;:::o;18961:106::-;19003:22;19046:12;19038:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18961:106;:::o;14606:214::-;3879:12;:10;:12::i;:::-;3869:22;;:6;;;;;;;;;;:22;;;3861:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14680:4:::1;14665:19;;:11;;;;;;;;;;;:19;;;14657:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;14730:1;14724:3;;:7;;;;;;;;;;;;;;;;;;5691:2;5854;:13;;;;:::i;:::-;5843:8;:24;;;;:::i;:::-;14742:11;:23;;;;14781:31;14800:11;;14781:31;;;;;;:::i;:::-;;;;;;;;14606:214::o:0;18475:145::-;18520:7;18529;18538;18565;:13;;;18580:8;;18590:7;:21;;;;;;;;;;;;18557:55;;;;;;18475:145;;;:::o;8912:119::-;8978:7;9005:9;:18;9015:7;9005:18;;;;;;;;;;;;;;;;8998:25;;8912:119;;;:::o;3956:148::-;3879:12;:10;:12::i;:::-;3869:22;;:6;;;;;;;;;;:22;;;3861:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4063:1:::1;4026:40;;4047:6;::::0;::::1;;;;;;;;4026:40;;;;;;;;;;;;4094:1;4077:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3956:148::o:0;14828:110::-;14882:7;14909:21;14902:28;;14828:110;:::o;3742:79::-;3780:7;3807:6;;;;;;;;;;;3800:13;;3742:79;:::o;18863:90::-;18908:7;18936:8;;18928:17;;18863:90;:::o;8618:87::-;8657:13;8690:7;;;;;;;;;;;;;;;;;8683:14;;8618:87;:::o;10332:167::-;10410:4;10427:42;10437:12;:10;:12::i;:::-;10451:9;10462:6;10427:9;:42::i;:::-;10487:4;10480:11;;10332:167;;;;:::o;14946:379::-;15030:10;;;;;;;;;;;15014:26;;:12;:10;:12::i;:::-;:26;;;15006:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;15093:3;15068:21;:28;15064:254;;15121:10;;;;;;;;;;;15113:28;;:33;15142:3;15113:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15185:3;15167:15;;:21;15163:144;;;15228:3;15209:15;;:22;;;;;;;:::i;:::-;;;;;;;;15163:144;;;15290:1;15272:15;:19;;;;15163:144;15064:254;14946:379;:::o;14149:449::-;3879:12;:10;:12::i;:::-;3869:22;;:6;;;;;;;;;;:22;;;3861:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14213:11:::1;;;;;;;;;;;14212:12;14204:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;14262:15;;;;;;;;;;;:31;;;14301:21;14332:4;14338:24;14356:4;14338:9;:24::i;:::-;14363:1;14365::::0;14367:7:::1;:5;:7::i;:::-;14375:15;14262:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14409:13;;;;;;;;;;;14402:29;;;14440:15;;;;;;;;;;;14458:14;14402:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14497:12;14484:10;:25;;;;14538:23;:21;:23::i;:::-;14520:15;:41;;;;14586:4;14572:11;;:18;;;;;;;;;;;;;;;;;;14149:449::o:0;13716:164::-;3879:12;:10;:12::i;:::-;3869:22;;:6;;;;;;;;;;:22;;;3861:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13790:6:::1;13785:88;13806:5;:12;13802:1;:16;13785:88;;;13857:4;13840;:14;13845:5;13851:1;13845:8;;;;;;;;:::i;:::-;;;;;;;;13840:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13820:3;;;;;:::i;:::-;;;;13785:88;;;;13716:164:::0;:::o;20025:643::-;20065:7;20074;20124:1;20102:12;:19;;;;:23;20094:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;20178:5;20166:8;;:17;:54;;;;;5691:2;6321;:13;;;;:::i;:::-;6317:1;:17;;;;:::i;:::-;20187:23;:21;:23::i;:::-;:33;20166:54;20162:498;;;20268:1;20253:12;;:16;;;;:::i;:::-;20237:7;:13;;:32;;;;20308:11;:9;:11::i;:::-;20284:7;:21;;;:35;;;;;;;;;;;;;;;;;;20345:15;20334:8;:26;;;;20410:7;:21;;;;;;;;;;;;20402:39;;:48;5691:2;6321;:13;;;;:::i;:::-;6317:1;:17;;;;:::i;:::-;20402:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20485:23;:21;:23::i;:::-;20467:15;:41;;;;20534:1;20523:8;:12;;;;20560:7;:13;;;20575:7;:21;;;;;;;;;;;;20552:45;;;;;;20162:498;20623:7;:13;;;20638:7;:21;;;;;;;;;;;;20615:45;;;;20025:643;;;:::o;9691:143::-;9772:7;9799:11;:18;9811:5;9799:18;;;;;;;;;;;;;;;:27;9818:7;9799:27;;;;;;;;;;;;;;;;9792:34;;9691:143;;;;:::o;9348:335::-;9458:1;9441:19;;:5;:19;;;9433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9539:1;9520:21;;:7;:21;;;9512:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9621:6;9591:11;:18;9603:5;9591:18;;;;;;;;;;;;;;;:27;9610:7;9591:27;;;;;;;;;;;;;;;:36;;;;9659:7;9643:32;;9652:5;9643:32;;;9668:6;9643:32;;;;;;:::i;:::-;;;;;;;;9348:335;;;:::o;10507:2704::-;10610:1;10594:18;;:4;:18;;;10586:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10687:1;10673:16;;:2;:16;;;10665:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10757:1;10748:6;:10;10740:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10822:11;;;;;;;;;;;10821:12;:75;;;;;10846:7;:5;:7::i;:::-;10838:15;;:4;:15;;;;:40;;;;;10873:4;10857:21;;:4;:21;;;;10838:40;:57;;;;;10888:7;:5;:7::i;:::-;10882:13;;:2;:13;;;;10838:57;10821:75;10817:137;;;10913:29;;;;;;;;;;:::i;:::-;;;;;;;;10817:137;10966:17;10998;11055:22;11134:7;:5;:7::i;:::-;11126:15;;:4;:15;;;;:32;;;;;11151:7;:5;:7::i;:::-;11145:13;;:2;:13;;;;11126:32;11122:1248;;;11184:4;:10;11189:4;11184:10;;;;;;;;;;;;;;;;;;;;;;;;;11183:11;:24;;;;;11199:4;:8;11204:2;11199:8;;;;;;;;;;;;;;;;;;;;;;;;;11198:9;11183:24;11175:33;;;;;;11254:13;;;;;;;;;;;11246:21;;:4;:21;;;:55;;;;;11285:15;;;;;;;;;;;11271:30;;:2;:30;;;;11246:55;:82;;;;;11306:18;:22;11325:2;11306:22;;;;;;;;;;;;;;;;;;;;;;;;;11305:23;11246:82;11242:451;;;11368:11;;11358:6;:21;;11350:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;11461:11;;11451:6;11435:13;11445:2;11435:9;:13::i;:::-;:22;;;;:::i;:::-;:37;;11427:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11532:24;11552:3;11532:15;11543:3;;;;;;;;;;;11532:15;;:6;:10;;:15;;;;:::i;:::-;:19;;:24;;;;:::i;:::-;11520:36;;11597:12;11592:1;11579:10;;:14;;;;:::i;:::-;:30;11575:103;;;11643:14;11654:2;11643:10;:14::i;:::-;11642:15;11634:24;;;;;;11575:103;11242:451;11741:13;;;;;;;;;;;11735:19;;:2;:19;;;;:46;;;;;11759:18;:22;11778:2;11759:22;;;;;;;;;;;;;;;;;;;;;;;;;11758:23;11735:46;11731:216;;;11836:11;;11826:6;11810:13;11820:2;11810:9;:13::i;:::-;:22;;;;:::i;:::-;:37;;11802:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11907:24;11927:3;11907:15;11918:3;;;;;;;;;;;11907:15;;:6;:10;;:15;;;;:::i;:::-;:19;;:24;;;;:::i;:::-;11895:36;;11731:216;11990:13;;;;;;;;;;;11984:19;;:2;:19;;;:48;;;;;12008:18;:24;12027:4;12008:24;;;;;;;;;;;;;;;;;;;;;;;;;12007:25;11984:48;11981:123;;;12064:24;12084:3;12064:15;12075:3;;;;;;;;;;;12064:15;;:6;:10;;:15;;;;:::i;:::-;:19;;:24;;;;:::i;:::-;12052:36;;11981:123;12118:28;12149:24;12167:4;12149:9;:24::i;:::-;12118:55;;12193:6;;;;;;;;;;;12192:7;:30;;;;;12209:13;;;;;;;;;;;12203:19;;:2;:19;;;12192:30;:45;;;;;12226:11;;;;;;;;;;;12192:45;:91;;;;;5691:2;6221;:13;;;;:::i;:::-;6213:5;:21;;;;:::i;:::-;12241:20;:42;12192:91;12188:171;;;12305:38;12322:20;12305:16;:38::i;:::-;12188:171;11160:1210;11122:1248;12395:1;12383:9;:13;12380:541;;;12424:16;12438:1;12424:9;:13;;:16;;;;:::i;:::-;12412:28;;12497:23;12518:1;12497:16;12511:1;12497:9;:13;;:16;;;;:::i;:::-;:20;;:23;;;;:::i;:::-;12480:40;;12624:36;12650:9;12624;:21;12634:10;;;;;;;;;;;12624:21;;;;;;;;;;;;;;;;:25;;:36;;;;:::i;:::-;12600:9;:21;12610:10;;;;;;;;;;;12600:21;;;;;;;;;;;;;;;:60;;;;12695:10;;;;;;;;;;;12680:37;;12689:4;12680:37;;;12707:9;12680:37;;;;;;:::i;:::-;;;;;;;;12800:44;12829:14;12800:9;:24;12818:4;12800:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;12773:9;:24;12791:4;12773:24;;;;;;;;;;;;;;;:71;;;;12887:4;12864:45;;12873:4;12864:45;;;12894:14;12864:45;;;;;;:::i;:::-;;;;;;;;12380:541;12947:27;12967:6;12947:9;:15;12957:4;12947:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;12931:9;:15;12941:4;12931:15;;;;;;;;;;;;;;;:43;;;;12999:40;13017:21;13028:9;13017:6;:10;;:21;;;;:::i;:::-;12999:9;:13;13009:2;12999:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;12985:9;:13;12995:2;12985:13;;;;;;;;;;;;;;;:54;;;;13070:2;13055:41;;13064:4;13055:41;;;13074:21;13085:9;13074:6;:10;;:21;;;;:::i;:::-;13055:41;;;;;;:::i;:::-;;;;;;;;13121:22;13134:4;13140:2;13121:12;:22::i;:::-;13187:5;13167:16;:14;:16::i;:::-;:25;13164:38;;13194:6;:4;:6::i;:::-;;;13164:38;10575:2636;;;10507:2704;;;:::o;2634:190::-;2720:7;2753:1;2748;:6;;2756:12;2740:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2780:9;2796:1;2792;:5;;;;:::i;:::-;2780:17;;2815:1;2808:8;;;2634:190;;;;;:::o;19079:422::-;19122:7;19142:20;19254:15;19292:10;19325:12;:19;;;;19215:148;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;19187:191;;;;;;19165:224;;19142:247;;19400:16;19434:12;:19;;;;19419:12;:34;;;;:::i;:::-;19400:53;;19471:12;19484:8;19471:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19464:29;;;;19079:422;:::o;2832:246::-;2890:7;2919:1;2914;:6;2910:47;;2944:1;2937:8;;;;2910:47;2967:9;2983:1;2979;:5;;;;:::i;:::-;2967:17;;3012:1;3007;3003;:5;;;;:::i;:::-;:10;2995:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3069:1;3062:8;;;2832:246;;;;;:::o;3086:132::-;3144:7;3171:39;3175:1;3178;3171:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3164:46;;3086:132;;;;:::o;9145:195::-;9204:4;9221:12;9288:7;9276:20;9268:28;;9331:1;9324:4;:8;9317:15;;;9145:195;;;:::o;13219:489::-;8470:4;8461:6;;:13;;;;;;;;;;;;;;;;;;13297:21:::1;13335:1;13321:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13297:40;;13366:4;13348;13353:1;13348:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13392:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13382:4;13387:1;13382:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;13425:68;13443:4;13458:15;;;;;;;;;;;13475:17;13425:8;:68::i;:::-;13504:15;;;;;;;;;;;:66;;;13585:11;13611:1;13627:4;13654;13674:15;13504:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13286:422;8506:5:::0;8497:6;;:14;;;;;;;;;;;;;;;;;;13219:489;:::o;2303:179::-;2361:7;2381:9;2397:1;2393;:5;;;;:::i;:::-;2381:17;;2422:1;2417;:6;;2409:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2473:1;2466:8;;;2303:179;;;;:::o;2490:136::-;2548:7;2575:43;2579:1;2582;2575:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2568:50;;2490:136;;;;:::o;15858:1558::-;15936:13;;;;;;;;;;;15928:21;;:4;:21;;;;:46;;;;;15969:4;15953:21;;:4;:21;;;;15928:46;:68;;;;;15994:1;15978:18;;:4;:18;;;;15928:68;15925:751;;;5691:2;6089;:13;;;;:::i;:::-;6079:7;:23;;;;:::i;:::-;16015:9;:15;16025:4;16015:15;;;;;;;;;;;;;;;;:31;;:63;;;;;16073:5;16050:28;;:13;:19;16064:4;16050:19;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;16015:63;16012:653;;;16121:4;16099:13;:19;16113:4;16099:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;16144:12;16162:4;16144:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16012:653;;;5691:2;6089;:13;;;;:::i;:::-;6079:7;:23;;;;:::i;:::-;16191:9;:15;16201:4;16191:15;;;;;;;;;;;;;;;;:31;;:62;;;;;16249:4;16226:27;;:13;:19;16240:4;16226:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;16191:62;16188:477;;;16277:36;16295:12;16277:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16308:4;16277:17;:36::i;:::-;16273:156;;16359:4;16337:13;:19;16351:4;16337:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;16386:12;16404:4;16386:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16273:156;16188:477;;;16493:4;16470:27;;:13;:19;16484:4;16470:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;16467:137;;16536:48;16566:12;16536:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16579:4;16536:29;:48::i;:::-;16521:12;:63;;;;;;;;;;;;:::i;:::-;;16467:137;16644:5;16622:13;:19;16636:4;16622:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;16188:477;16012:653;15925:751;16697:13;;;;;;;;;;;16691:19;;:2;:19;;;;:42;;;;;16728:4;16714:19;;:2;:19;;;;16691:42;:62;;;;;16751:1;16737:16;;:2;:16;;;;16691:62;16688:721;;;5691:2;6089;:13;;;;:::i;:::-;6079:7;:23;;;;:::i;:::-;16772:9;:13;16782:2;16772:13;;;;;;;;;;;;;;;;:29;;:59;;;;;16826:5;16805:26;;:13;:17;16819:2;16805:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;16772:59;16769:629;;;16872:4;16852:13;:17;16866:2;16852:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;16895:12;16913:2;16895:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16769:629;;;5691:2;6089;:13;;;;:::i;:::-;6079:7;:23;;;;:::i;:::-;16940:9;:13;16950:2;16940:13;;;;;;;;;;;;;;;;:29;;:58;;;;;16994:4;16973:25;;:13;:17;16987:2;16973:17;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;16940:58;16937:461;;;17022:34;17040:12;17022:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17053:2;17022:17;:34::i;:::-;17018:150;;17100:4;17080:13;:17;17094:2;17080:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;17127:12;17145:2;17127:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17018:150;16937:461;;;17230:4;17209:25;;:13;:17;17223:2;17209:17;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;17206:133;;17273:46;17303:12;17273:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17316:2;17273:29;:46::i;:::-;17258:12;:61;;;;;;;;;;;;:::i;:::-;;17206:133;17377:5;17357:13;:17;17371:2;17357:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;16937:461;16769:629;16688:721;15858:1558;;:::o;18628:227::-;18671:7;18702:68;5691:2;6321;:13;;;;:::i;:::-;6317:1;:17;;;;:::i;:::-;18702:55;18751:5;18702:44;18730:15;;18702:23;:21;:23::i;:::-;:27;;:44;;;;:::i;:::-;:48;;:55;;;;:::i;:::-;:59;;:68;;;;:::i;:::-;18691:8;:79;;;;18796:5;18785:8;;:16;18781:38;;;18814:5;18803:8;:16;;;;18781:38;18838:8;;18830:17;;18628:227;:::o;3226:189::-;3312:7;3344:1;3340;:5;3347:12;3332:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3371:9;3387:1;3383;:5;;;;:::i;:::-;3371:17;;3406:1;3399:8;;;3226:189;;;;;:::o;17424:405::-;17544:4;17561:14;17578:5;:12;17561:29;;17601:19;17646:9;17641:149;17665:6;17661:1;:10;17641:149;;;17709:12;17697:24;;:5;17703:1;17697:8;;;;;;;;:::i;:::-;;;;;;;;:24;;;17693:86;;17759:4;17742:21;;17693:86;17673:3;;;;;:::i;:::-;;;;17641:149;;;;17807:14;17800:21;;;;17424:405;;;;:::o;17837:630::-;17967:16;17996:14;18013:5;:12;17996:29;;18062:6;18048:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18036:9;:33;;;;;;;;;;;;:::i;:::-;;18080:19;18114:15;18151:9;18146:196;18170:6;18166:1;:10;18146:196;;;18214:15;18202:27;;:5;18208:1;18202:8;;;;;;;;:::i;:::-;;;;;;;;:27;;;18198:133;;18275:5;18281:1;18275:8;;;;;;;;:::i;:::-;;;;;;;;18250:9;18260:11;18250:22;;;;;;;;:::i;:::-;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;18302:13;;;;;:::i;:::-;;;;18198:133;18178:3;;;;;:::i;:::-;;;;18146:196;;;;18357:9;18352:81;18376:9;18372:13;;:1;:13;18352:81;;;18406:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;18387:3;;;;;:::i;:::-;;;;18352:81;;;;18450:9;18443:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17837:630;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:332::-;335:4;373:2;362:9;358:18;350:26;;386:71;454:1;443:9;439:17;430:6;386:71;:::i;:::-;467:72;535:2;524:9;520:18;511:6;467:72;:::i;:::-;214:332;;;;;:::o;552:126::-;589:7;629:42;622:5;618:54;607:65;;552:126;;;:::o;684:96::-;721:7;750:24;768:5;750:24;:::i;:::-;739:35;;684:96;;;:::o;786:118::-;873:24;891:5;873:24;:::i;:::-;868:3;861:37;786:118;;:::o;910:168::-;993:11;1027:6;1022:3;1015:19;1067:4;1062:3;1058:14;1043:29;;910:168;;;;:::o;1084:146::-;1181:6;1176:3;1171;1158:30;1222:1;1213:6;1208:3;1204:16;1197:27;1084:146;;;:::o;1236:102::-;1277:6;1328:2;1324:7;1319:2;1312:5;1308:14;1304:28;1294:38;;1236:102;;;:::o;1366:314::-;1462:3;1483:70;1546:6;1541:3;1483:70;:::i;:::-;1476:77;;1563:56;1612:6;1607:3;1600:5;1563:56;:::i;:::-;1644:29;1666:6;1644:29;:::i;:::-;1639:3;1635:39;1628:46;;1366:314;;;;;:::o;1686:549::-;1863:4;1901:2;1890:9;1886:18;1878:26;;1914:71;1982:1;1971:9;1967:17;1958:6;1914:71;:::i;:::-;1995:72;2063:2;2052:9;2048:18;2039:6;1995:72;:::i;:::-;2114:9;2108:4;2104:20;2099:2;2088:9;2084:18;2077:48;2142:86;2223:4;2214:6;2206;2142:86;:::i;:::-;2134:94;;1686:549;;;;;;;:::o;2241:99::-;2293:6;2327:5;2321:12;2311:22;;2241:99;;;:::o;2346:169::-;2430:11;2464:6;2459:3;2452:19;2504:4;2499:3;2495:14;2480:29;;2346:169;;;;:::o;2521:246::-;2602:1;2612:113;2626:6;2623:1;2620:13;2612:113;;;2711:1;2706:3;2702:11;2696:18;2692:1;2687:3;2683:11;2676:39;2648:2;2645:1;2641:10;2636:15;;2612:113;;;2759:1;2750:6;2745:3;2741:16;2734:27;2583:184;2521:246;;;:::o;2773:377::-;2861:3;2889:39;2922:5;2889:39;:::i;:::-;2944:71;3008:6;3003:3;2944:71;:::i;:::-;2937:78;;3024:65;3082:6;3077:3;3070:4;3063:5;3059:16;3024:65;:::i;:::-;3114:29;3136:6;3114:29;:::i;:::-;3109:3;3105:39;3098:46;;2865:285;2773:377;;;;:::o;3156:313::-;3269:4;3307:2;3296:9;3292:18;3284:26;;3356:9;3350:4;3346:20;3342:1;3331:9;3327:17;3320:47;3384:78;3457:4;3448:6;3384:78;:::i;:::-;3376:86;;3156:313;;;;:::o;3475:75::-;3508:6;3541:2;3535:9;3525:19;;3475:75;:::o;3556:117::-;3665:1;3662;3655:12;3679:117;3788:1;3785;3778:12;3802:122;3875:24;3893:5;3875:24;:::i;:::-;3868:5;3865:35;3855:63;;3914:1;3911;3904:12;3855:63;3802:122;:::o;3930:139::-;3976:5;4014:6;4001:20;3992:29;;4030:33;4057:5;4030:33;:::i;:::-;3930:139;;;;:::o;4075:122::-;4148:24;4166:5;4148:24;:::i;:::-;4141:5;4138:35;4128:63;;4187:1;4184;4177:12;4128:63;4075:122;:::o;4203:139::-;4249:5;4287:6;4274:20;4265:29;;4303:33;4330:5;4303:33;:::i;:::-;4203:139;;;;:::o;4348:474::-;4416:6;4424;4473:2;4461:9;4452:7;4448:23;4444:32;4441:119;;;4479:79;;:::i;:::-;4441:119;4599:1;4624:53;4669:7;4660:6;4649:9;4645:22;4624:53;:::i;:::-;4614:63;;4570:117;4726:2;4752:53;4797:7;4788:6;4777:9;4773:22;4752:53;:::i;:::-;4742:63;;4697:118;4348:474;;;;;:::o;4828:90::-;4862:7;4905:5;4898:13;4891:21;4880:32;;4828:90;;;:::o;4924:109::-;5005:21;5020:5;5005:21;:::i;:::-;5000:3;4993:34;4924:109;;:::o;5039:210::-;5126:4;5164:2;5153:9;5149:18;5141:26;;5177:65;5239:1;5228:9;5224:17;5215:6;5177:65;:::i;:::-;5039:210;;;;:::o;5255:222::-;5348:4;5386:2;5375:9;5371:18;5363:26;;5399:71;5467:1;5456:9;5452:17;5443:6;5399:71;:::i;:::-;5255:222;;;;:::o;5483:619::-;5560:6;5568;5576;5625:2;5613:9;5604:7;5600:23;5596:32;5593:119;;;5631:79;;:::i;:::-;5593:119;5751:1;5776:53;5821:7;5812:6;5801:9;5797:22;5776:53;:::i;:::-;5766:63;;5722:117;5878:2;5904:53;5949:7;5940:6;5929:9;5925:22;5904:53;:::i;:::-;5894:63;;5849:118;6006:2;6032:53;6077:7;6068:6;6057:9;6053:22;6032:53;:::i;:::-;6022:63;;5977:118;5483:619;;;;;:::o;6108:329::-;6167:6;6216:2;6204:9;6195:7;6191:23;6187:32;6184:119;;;6222:79;;:::i;:::-;6184:119;6342:1;6367:53;6412:7;6403:6;6392:9;6388:22;6367:53;:::i;:::-;6357:63;;6313:117;6108:329;;;;:::o;6443:86::-;6478:7;6518:4;6511:5;6507:16;6496:27;;6443:86;;;:::o;6535:112::-;6618:22;6634:5;6618:22;:::i;:::-;6613:3;6606:35;6535:112;;:::o;6653:214::-;6742:4;6780:2;6769:9;6765:18;6757:26;;6793:67;6857:1;6846:9;6842:17;6833:6;6793:67;:::i;:::-;6653:214;;;;:::o;6873:117::-;6982:1;6979;6972:12;6996:180;7044:77;7041:1;7034:88;7141:4;7138:1;7131:15;7165:4;7162:1;7155:15;7182:281;7265:27;7287:4;7265:27;:::i;:::-;7257:6;7253:40;7395:6;7383:10;7380:22;7359:18;7347:10;7344:34;7341:62;7338:88;;;7406:18;;:::i;:::-;7338:88;7446:10;7442:2;7435:22;7225:238;7182:281;;:::o;7469:129::-;7503:6;7530:20;;:::i;:::-;7520:30;;7559:33;7587:4;7579:6;7559:33;:::i;:::-;7469:129;;;:::o;7604:311::-;7681:4;7771:18;7763:6;7760:30;7757:56;;;7793:18;;:::i;:::-;7757:56;7843:4;7835:6;7831:17;7823:25;;7903:4;7897;7893:15;7885:23;;7604:311;;;:::o;7921:117::-;8030:1;8027;8020:12;8061:710;8157:5;8182:81;8198:64;8255:6;8198:64;:::i;:::-;8182:81;:::i;:::-;8173:90;;8283:5;8312:6;8305:5;8298:21;8346:4;8339:5;8335:16;8328:23;;8399:4;8391:6;8387:17;8379:6;8375:30;8428:3;8420:6;8417:15;8414:122;;;8447:79;;:::i;:::-;8414:122;8562:6;8545:220;8579:6;8574:3;8571:15;8545:220;;;8654:3;8683:37;8716:3;8704:10;8683:37;:::i;:::-;8678:3;8671:50;8750:4;8745:3;8741:14;8734:21;;8621:144;8605:4;8600:3;8596:14;8589:21;;8545:220;;;8549:21;8163:608;;8061:710;;;;;:::o;8794:370::-;8865:5;8914:3;8907:4;8899:6;8895:17;8891:27;8881:122;;8922:79;;:::i;:::-;8881:122;9039:6;9026:20;9064:94;9154:3;9146:6;9139:4;9131:6;9127:17;9064:94;:::i;:::-;9055:103;;8871:293;8794:370;;;;:::o;9170:539::-;9254:6;9303:2;9291:9;9282:7;9278:23;9274:32;9271:119;;;9309:79;;:::i;:::-;9271:119;9457:1;9446:9;9442:17;9429:31;9487:18;9479:6;9476:30;9473:117;;;9509:79;;:::i;:::-;9473:117;9614:78;9684:7;9675:6;9664:9;9660:22;9614:78;:::i;:::-;9604:88;;9400:302;9170:539;;;;:::o;9715:114::-;9782:6;9816:5;9810:12;9800:22;;9715:114;;;:::o;9835:184::-;9934:11;9968:6;9963:3;9956:19;10008:4;10003:3;9999:14;9984:29;;9835:184;;;;:::o;10025:132::-;10092:4;10115:3;10107:11;;10145:4;10140:3;10136:14;10128:22;;10025:132;;;:::o;10163:108::-;10240:24;10258:5;10240:24;:::i;:::-;10235:3;10228:37;10163:108;;:::o;10277:179::-;10346:10;10367:46;10409:3;10401:6;10367:46;:::i;:::-;10445:4;10440:3;10436:14;10422:28;;10277:179;;;;:::o;10462:113::-;10532:4;10564;10559:3;10555:14;10547:22;;10462:113;;;:::o;10611:732::-;10730:3;10759:54;10807:5;10759:54;:::i;:::-;10829:86;10908:6;10903:3;10829:86;:::i;:::-;10822:93;;10939:56;10989:5;10939:56;:::i;:::-;11018:7;11049:1;11034:284;11059:6;11056:1;11053:13;11034:284;;;11135:6;11129:13;11162:63;11221:3;11206:13;11162:63;:::i;:::-;11155:70;;11248:60;11301:6;11248:60;:::i;:::-;11238:70;;11094:224;11081:1;11078;11074:9;11069:14;;11034:284;;;11038:14;11334:3;11327:10;;10735:608;;;10611:732;;;;:::o;11349:373::-;11492:4;11530:2;11519:9;11515:18;11507:26;;11579:9;11573:4;11569:20;11565:1;11554:9;11550:17;11543:47;11607:108;11710:4;11701:6;11607:108;:::i;:::-;11599:116;;11349:373;;;;:::o;11728:442::-;11877:4;11915:2;11904:9;11900:18;11892:26;;11928:71;11996:1;11985:9;11981:17;11972:6;11928:71;:::i;:::-;12009:72;12077:2;12066:9;12062:18;12053:6;12009:72;:::i;:::-;12091;12159:2;12148:9;12144:18;12135:6;12091:72;:::i;:::-;11728:442;;;;;;:::o;12176:222::-;12269:4;12307:2;12296:9;12292:18;12284:26;;12320:71;12388:1;12377:9;12373:17;12364:6;12320:71;:::i;:::-;12176:222;;;;:::o;12404:329::-;12463:6;12512:2;12500:9;12491:7;12487:23;12483:32;12480:119;;;12518:79;;:::i;:::-;12480:119;12638:1;12663:53;12708:7;12699:6;12688:9;12684:22;12663:53;:::i;:::-;12653:63;;12609:117;12404:329;;;;:::o;12739:332::-;12860:4;12898:2;12887:9;12883:18;12875:26;;12911:71;12979:1;12968:9;12964:17;12955:6;12911:71;:::i;:::-;12992:72;13060:2;13049:9;13045:18;13036:6;12992:72;:::i;:::-;12739:332;;;;;:::o;13077:474::-;13145:6;13153;13202:2;13190:9;13181:7;13177:23;13173:32;13170:119;;;13208:79;;:::i;:::-;13170:119;13328:1;13353:53;13398:7;13389:6;13378:9;13374:22;13353:53;:::i;:::-;13343:63;;13299:117;13455:2;13481:53;13526:7;13517:6;13506:9;13502:22;13481:53;:::i;:::-;13471:63;;13426:118;13077:474;;;;;:::o;13557:180::-;13605:77;13602:1;13595:88;13702:4;13699:1;13692:15;13726:4;13723:1;13716:15;13743:102;13785:8;13832:5;13829:1;13825:13;13804:34;;13743:102;;;:::o;13851:848::-;13912:5;13919:4;13943:6;13934:15;;13967:5;13958:14;;13981:712;14002:1;13992:8;13989:15;13981:712;;;14097:4;14092:3;14088:14;14082:4;14079:24;14076:50;;;14106:18;;:::i;:::-;14076:50;14156:1;14146:8;14142:16;14139:451;;;14571:4;14564:5;14560:16;14551:25;;14139:451;14621:4;14615;14611:15;14603:23;;14651:32;14674:8;14651:32;:::i;:::-;14639:44;;13981:712;;;13851:848;;;;;;;:::o;14705:1073::-;14759:5;14950:8;14940:40;;14971:1;14962:10;;14973:5;;14940:40;14999:4;14989:36;;15016:1;15007:10;;15018:5;;14989:36;15085:4;15133:1;15128:27;;;;15169:1;15164:191;;;;15078:277;;15128:27;15146:1;15137:10;;15148:5;;;15164:191;15209:3;15199:8;15196:17;15193:43;;;15216:18;;:::i;:::-;15193:43;15265:8;15262:1;15258:16;15249:25;;15300:3;15293:5;15290:14;15287:40;;;15307:18;;:::i;:::-;15287:40;15340:5;;;15078:277;;15464:2;15454:8;15451:16;15445:3;15439:4;15436:13;15432:36;15414:2;15404:8;15401:16;15396:2;15390:4;15387:12;15383:35;15367:111;15364:246;;;15520:8;15514:4;15510:19;15501:28;;15555:3;15548:5;15545:14;15542:40;;;15562:18;;:::i;:::-;15542:40;15595:5;;15364:246;15635:42;15673:3;15663:8;15657:4;15654:1;15635:42;:::i;:::-;15620:57;;;;15709:4;15704:3;15700:14;15693:5;15690:25;15687:51;;;15718:18;;:::i;:::-;15687:51;15767:4;15760:5;15756:16;15747:25;;14705:1073;;;;;;:::o;15784:281::-;15842:5;15866:23;15884:4;15866:23;:::i;:::-;15858:31;;15910:25;15926:8;15910:25;:::i;:::-;15898:37;;15954:104;15991:66;15981:8;15975:4;15954:104;:::i;:::-;15945:113;;15784:281;;;;:::o;16071:410::-;16111:7;16134:20;16152:1;16134:20;:::i;:::-;16129:25;;16168:20;16186:1;16168:20;:::i;:::-;16163:25;;16223:1;16220;16216:9;16245:30;16263:11;16245:30;:::i;:::-;16234:41;;16424:1;16415:7;16411:15;16408:1;16405:22;16385:1;16378:9;16358:83;16335:139;;16454:18;;:::i;:::-;16335:139;16119:362;16071:410;;;;:::o;16487:182::-;16627:34;16623:1;16615:6;16611:14;16604:58;16487:182;:::o;16675:366::-;16817:3;16838:67;16902:2;16897:3;16838:67;:::i;:::-;16831:74;;16914:93;17003:3;16914:93;:::i;:::-;17032:2;17027:3;17023:12;17016:19;;16675:366;;;:::o;17047:419::-;17213:4;17251:2;17240:9;17236:18;17228:26;;17300:9;17294:4;17290:20;17286:1;17275:9;17271:17;17264:47;17328:131;17454:4;17328:131;:::i;:::-;17320:139;;17047:419;;;:::o;17472:180::-;17520:77;17517:1;17510:88;17617:4;17614:1;17607:15;17641:4;17638:1;17631:15;17658:233;17697:3;17720:24;17738:5;17720:24;:::i;:::-;17711:33;;17766:66;17759:5;17756:77;17753:103;;17836:18;;:::i;:::-;17753:103;17883:1;17876:5;17872:13;17865:20;;17658:233;;;:::o;17897:174::-;18037:26;18033:1;18025:6;18021:14;18014:50;17897:174;:::o;18077:366::-;18219:3;18240:67;18304:2;18299:3;18240:67;:::i;:::-;18233:74;;18316:93;18405:3;18316:93;:::i;:::-;18434:2;18429:3;18425:12;18418:19;;18077:366;;;:::o;18449:419::-;18615:4;18653:2;18642:9;18638:18;18630:26;;18702:9;18696:4;18692:20;18688:1;18677:9;18673:17;18666:47;18730:131;18856:4;18730:131;:::i;:::-;18722:139;;18449:419;;;:::o;18874:158::-;19014:10;19010:1;19002:6;18998:14;18991:34;18874:158;:::o;19038:365::-;19180:3;19201:66;19265:1;19260:3;19201:66;:::i;:::-;19194:73;;19276:93;19365:3;19276:93;:::i;:::-;19394:2;19389:3;19385:12;19378:19;;19038:365;;;:::o;19409:419::-;19575:4;19613:2;19602:9;19598:18;19590:26;;19662:9;19656:4;19652:20;19648:1;19637:9;19633:17;19626:47;19690:131;19816:4;19690:131;:::i;:::-;19682:139;;19409:419;;;:::o;19834:194::-;19874:4;19894:20;19912:1;19894:20;:::i;:::-;19889:25;;19928:20;19946:1;19928:20;:::i;:::-;19923:25;;19972:1;19969;19965:9;19957:17;;19996:1;19990:4;19987:11;19984:37;;;20001:18;;:::i;:::-;19984:37;19834:194;;;;:::o;20034:173::-;20174:25;20170:1;20162:6;20158:14;20151:49;20034:173;:::o;20213:366::-;20355:3;20376:67;20440:2;20435:3;20376:67;:::i;:::-;20369:74;;20452:93;20541:3;20452:93;:::i;:::-;20570:2;20565:3;20561:12;20554:19;;20213:366;;;:::o;20585:419::-;20751:4;20789:2;20778:9;20774:18;20766:26;;20838:9;20832:4;20828:20;20824:1;20813:9;20809:17;20802:47;20866:131;20992:4;20866:131;:::i;:::-;20858:139;;20585:419;;;:::o;21010:85::-;21055:7;21084:5;21073:16;;21010:85;;;:::o;21101:60::-;21129:3;21150:5;21143:12;;21101:60;;;:::o;21167:158::-;21225:9;21258:61;21276:42;21285:32;21311:5;21285:32;:::i;:::-;21276:42;:::i;:::-;21258:61;:::i;:::-;21245:74;;21167:158;;;:::o;21331:147::-;21426:45;21465:5;21426:45;:::i;:::-;21421:3;21414:58;21331:147;;:::o;21484:807::-;21733:4;21771:3;21760:9;21756:19;21748:27;;21785:71;21853:1;21842:9;21838:17;21829:6;21785:71;:::i;:::-;21866:72;21934:2;21923:9;21919:18;21910:6;21866:72;:::i;:::-;21948:80;22024:2;22013:9;22009:18;22000:6;21948:80;:::i;:::-;22038;22114:2;22103:9;22099:18;22090:6;22038:80;:::i;:::-;22128:73;22196:3;22185:9;22181:19;22172:6;22128:73;:::i;:::-;22211;22279:3;22268:9;22264:19;22255:6;22211:73;:::i;:::-;21484:807;;;;;;;;;:::o;22297:143::-;22354:5;22385:6;22379:13;22370:22;;22401:33;22428:5;22401:33;:::i;:::-;22297:143;;;;:::o;22446:663::-;22534:6;22542;22550;22599:2;22587:9;22578:7;22574:23;22570:32;22567:119;;;22605:79;;:::i;:::-;22567:119;22725:1;22750:64;22806:7;22797:6;22786:9;22782:22;22750:64;:::i;:::-;22740:74;;22696:128;22863:2;22889:64;22945:7;22936:6;22925:9;22921:22;22889:64;:::i;:::-;22879:74;;22834:129;23002:2;23028:64;23084:7;23075:6;23064:9;23060:22;23028:64;:::i;:::-;23018:74;;22973:129;22446:663;;;;;:::o;23115:332::-;23236:4;23274:2;23263:9;23259:18;23251:26;;23287:71;23355:1;23344:9;23340:17;23331:6;23287:71;:::i;:::-;23368:72;23436:2;23425:9;23421:18;23412:6;23368:72;:::i;:::-;23115:332;;;;;:::o;23453:116::-;23523:21;23538:5;23523:21;:::i;:::-;23516:5;23513:32;23503:60;;23559:1;23556;23549:12;23503:60;23453:116;:::o;23575:137::-;23629:5;23660:6;23654:13;23645:22;;23676:30;23700:5;23676:30;:::i;:::-;23575:137;;;;:::o;23718:345::-;23785:6;23834:2;23822:9;23813:7;23809:23;23805:32;23802:119;;;23840:79;;:::i;:::-;23802:119;23960:1;23985:61;24038:7;24029:6;24018:9;24014:22;23985:61;:::i;:::-;23975:71;;23931:125;23718:345;;;;:::o;24069:172::-;24209:24;24205:1;24197:6;24193:14;24186:48;24069:172;:::o;24247:366::-;24389:3;24410:67;24474:2;24469:3;24410:67;:::i;:::-;24403:74;;24486:93;24575:3;24486:93;:::i;:::-;24604:2;24599:3;24595:12;24588:19;;24247:366;;;:::o;24619:419::-;24785:4;24823:2;24812:9;24808:18;24800:26;;24872:9;24866:4;24862:20;24858:1;24847:9;24843:17;24836:47;24900:131;25026:4;24900:131;:::i;:::-;24892:139;;24619:419;;;:::o;25044:191::-;25084:3;25103:20;25121:1;25103:20;:::i;:::-;25098:25;;25137:20;25155:1;25137:20;:::i;:::-;25132:25;;25180:1;25177;25173:9;25166:16;;25201:3;25198:1;25195:10;25192:36;;;25208:18;;:::i;:::-;25192:36;25044:191;;;;:::o;25241:223::-;25381:34;25377:1;25369:6;25365:14;25358:58;25450:6;25445:2;25437:6;25433:15;25426:31;25241:223;:::o;25470:366::-;25612:3;25633:67;25697:2;25692:3;25633:67;:::i;:::-;25626:74;;25709:93;25798:3;25709:93;:::i;:::-;25827:2;25822:3;25818:12;25811:19;;25470:366;;;:::o;25842:419::-;26008:4;26046:2;26035:9;26031:18;26023:26;;26095:9;26089:4;26085:20;26081:1;26070:9;26066:17;26059:47;26123:131;26249:4;26123:131;:::i;:::-;26115:139;;25842:419;;;:::o;26267:221::-;26407:34;26403:1;26395:6;26391:14;26384:58;26476:4;26471:2;26463:6;26459:15;26452:29;26267:221;:::o;26494:366::-;26636:3;26657:67;26721:2;26716:3;26657:67;:::i;:::-;26650:74;;26733:93;26822:3;26733:93;:::i;:::-;26851:2;26846:3;26842:12;26835:19;;26494:366;;;:::o;26866:419::-;27032:4;27070:2;27059:9;27055:18;27047:26;;27119:9;27113:4;27109:20;27105:1;27094:9;27090:17;27083:47;27147:131;27273:4;27147:131;:::i;:::-;27139:139;;26866:419;;;:::o;27291:224::-;27431:34;27427:1;27419:6;27415:14;27408:58;27500:7;27495:2;27487:6;27483:15;27476:32;27291:224;:::o;27521:366::-;27663:3;27684:67;27748:2;27743:3;27684:67;:::i;:::-;27677:74;;27760:93;27849:3;27760:93;:::i;:::-;27878:2;27873:3;27869:12;27862:19;;27521:366;;;:::o;27893:419::-;28059:4;28097:2;28086:9;28082:18;28074:26;;28146:9;28140:4;28136:20;28132:1;28121:9;28117:17;28110:47;28174:131;28300:4;28174:131;:::i;:::-;28166:139;;27893:419;;;:::o;28318:222::-;28458:34;28454:1;28446:6;28442:14;28435:58;28527:5;28522:2;28514:6;28510:15;28503:30;28318:222;:::o;28546:366::-;28688:3;28709:67;28773:2;28768:3;28709:67;:::i;:::-;28702:74;;28785:93;28874:3;28785:93;:::i;:::-;28903:2;28898:3;28894:12;28887:19;;28546:366;;;:::o;28918:419::-;29084:4;29122:2;29111:9;29107:18;29099:26;;29171:9;29165:4;29161:20;29157:1;29146:9;29142:17;29135:47;29199:131;29325:4;29199:131;:::i;:::-;29191:139;;28918:419;;;:::o;29343:228::-;29483:34;29479:1;29471:6;29467:14;29460:58;29552:11;29547:2;29539:6;29535:15;29528:36;29343:228;:::o;29577:366::-;29719:3;29740:67;29804:2;29799:3;29740:67;:::i;:::-;29733:74;;29816:93;29905:3;29816:93;:::i;:::-;29934:2;29929:3;29925:12;29918:19;;29577:366;;;:::o;29949:419::-;30115:4;30153:2;30142:9;30138:18;30130:26;;30202:9;30196:4;30192:20;30188:1;30177:9;30173:17;30166:47;30230:131;30356:4;30230:131;:::i;:::-;30222:139;;29949:419;;;:::o;30374:169::-;30514:21;30510:1;30502:6;30498:14;30491:45;30374:169;:::o;30549:366::-;30691:3;30712:67;30776:2;30771:3;30712:67;:::i;:::-;30705:74;;30788:93;30877:3;30788:93;:::i;:::-;30906:2;30901:3;30897:12;30890:19;;30549:366;;;:::o;30921:419::-;31087:4;31125:2;31114:9;31110:18;31102:26;;31174:9;31168:4;31164:20;31160:1;31149:9;31145:17;31138:47;31202:131;31328:4;31202:131;:::i;:::-;31194:139;;30921:419;;;:::o;31346:174::-;31486:26;31482:1;31474:6;31470:14;31463:50;31346:174;:::o;31526:366::-;31668:3;31689:67;31753:2;31748:3;31689:67;:::i;:::-;31682:74;;31765:93;31854:3;31765:93;:::i;:::-;31883:2;31878:3;31874:12;31867:19;;31526:366;;;:::o;31898:419::-;32064:4;32102:2;32091:9;32087:18;32079:26;;32151:9;32145:4;32141:20;32137:1;32126:9;32122:17;32115:47;32179:131;32305:4;32179:131;:::i;:::-;32171:139;;31898:419;;;:::o;32323:79::-;32362:7;32391:5;32380:16;;32323:79;;;:::o;32408:157::-;32513:45;32533:24;32551:5;32533:24;:::i;:::-;32513:45;:::i;:::-;32508:3;32501:58;32408:157;;:::o;32571:94::-;32604:8;32652:5;32648:2;32644:14;32623:35;;32571:94;;;:::o;32671:::-;32710:7;32739:20;32753:5;32739:20;:::i;:::-;32728:31;;32671:94;;;:::o;32771:100::-;32810:7;32839:26;32859:5;32839:26;:::i;:::-;32828:37;;32771:100;;;:::o;32877:157::-;32982:45;33002:24;33020:5;33002:24;:::i;:::-;32982:45;:::i;:::-;32977:3;32970:58;32877:157;;:::o;33040:538::-;33208:3;33223:75;33294:3;33285:6;33223:75;:::i;:::-;33323:2;33318:3;33314:12;33307:19;;33336:75;33407:3;33398:6;33336:75;:::i;:::-;33436:2;33431:3;33427:12;33420:19;;33449:75;33520:3;33511:6;33449:75;:::i;:::-;33549:2;33544:3;33540:12;33533:19;;33569:3;33562:10;;33040:538;;;;;;:::o;33584:180::-;33632:77;33629:1;33622:88;33729:4;33726:1;33719:15;33753:4;33750:1;33743:15;33770:176;33802:1;33819:20;33837:1;33819:20;:::i;:::-;33814:25;;33853:20;33871:1;33853:20;:::i;:::-;33848:25;;33892:1;33882:35;;33897:18;;:::i;:::-;33882:35;33938:1;33935;33931:9;33926:14;;33770:176;;;;:::o;33952:185::-;33992:1;34009:20;34027:1;34009:20;:::i;:::-;34004:25;;34043:20;34061:1;34043:20;:::i;:::-;34038:25;;34082:1;34072:35;;34087:18;;:::i;:::-;34072:35;34129:1;34126;34122:9;34117:14;;33952:185;;;;:::o;34143:220::-;34283:34;34279:1;34271:6;34267:14;34260:58;34352:3;34347:2;34339:6;34335:15;34328:28;34143:220;:::o;34369:366::-;34511:3;34532:67;34596:2;34591:3;34532:67;:::i;:::-;34525:74;;34608:93;34697:3;34608:93;:::i;:::-;34726:2;34721:3;34717:12;34710:19;;34369:366;;;:::o;34741:419::-;34907:4;34945:2;34934:9;34930:18;34922:26;;34994:9;34988:4;34984:20;34980:1;34969:9;34965:17;34958:47;35022:131;35148:4;35022:131;:::i;:::-;35014:139;;34741:419;;;:::o;35166:143::-;35223:5;35254:6;35248:13;35239:22;;35270:33;35297:5;35270:33;:::i;:::-;35166:143;;;;:::o;35315:351::-;35385:6;35434:2;35422:9;35413:7;35409:23;35405:32;35402:119;;;35440:79;;:::i;:::-;35402:119;35560:1;35585:64;35641:7;35632:6;35621:9;35617:22;35585:64;:::i;:::-;35575:74;;35531:128;35315:351;;;;:::o;35672:831::-;35935:4;35973:3;35962:9;35958:19;35950:27;;35987:71;36055:1;36044:9;36040:17;36031:6;35987:71;:::i;:::-;36068:80;36144:2;36133:9;36129:18;36120:6;36068:80;:::i;:::-;36195:9;36189:4;36185:20;36180:2;36169:9;36165:18;36158:48;36223:108;36326:4;36317:6;36223:108;:::i;:::-;36215:116;;36341:72;36409:2;36398:9;36394:18;36385:6;36341:72;:::i;:::-;36423:73;36491:3;36480:9;36476:19;36467:6;36423:73;:::i;:::-;35672:831;;;;;;;;:::o;36509:177::-;36649:29;36645:1;36637:6;36633:14;36626:53;36509:177;:::o;36692:366::-;36834:3;36855:67;36919:2;36914:3;36855:67;:::i;:::-;36848:74;;36931:93;37020:3;36931:93;:::i;:::-;37049:2;37044:3;37040:12;37033:19;;36692:366;;;:::o;37064:419::-;37230:4;37268:2;37257:9;37253:18;37245:26;;37317:9;37311:4;37307:20;37303:1;37292:9;37288:17;37281:47;37345:131;37471:4;37345:131;:::i;:::-;37337:139;;37064:419;;;:::o;37489:180::-;37537:77;37534:1;37527:88;37634:4;37631:1;37624:15;37658:4;37655:1;37648:15

Swarm Source

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