ETH Price: $3,350.83 (-0.91%)

Token

Hadouken Inu (HADOUKEN)
 

Overview

Max Total Supply

911,576,677.329824825211792118 HADOUKEN

Holders

182

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,004.249567376016495861 HADOUKEN

Value
$0.00
0x11ba6c4732b1a7f30dea51c23b8ed4c1f88dcd57
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:
Hadouken

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-14
*/

// SPDX-License-Identifier: CC-BY-SA 4.0
//https://creativecommons.org/licenses/by-sa/4.0/

// TL;DR: The creator of this contract (@LogETH) is not liable for any damages associated with using the following code
// This contract must be deployed with credits toward the original creator, @LogETH.
// You must indicate if changes were made in a reasonable manner, but not in any way that suggests I endorse you or your use.
// If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
// You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.
// This TL;DR is solely an explaination and is not a representation of the license.

// By deploying this contract, you agree to the license above and the terms and conditions that come with it.

pragma solidity >=0.8.0 <0.9.0;

contract Hadouken {

    constructor () {

        totalSupply = 1000000000*1e18;
        name = "Hadouken Inu";
        decimals = 18;
        symbol = "HADOUKEN";
        BuyFeePercent = 3;
        SellFeePercent = 2;
        ReflectBuyFeePercent = 3;
        ReflectSellFeePercent = 2;
        BuyLiqTax = 1;
        SellLiqTax = 2;
        maxWalletPercent = 2;
        threshold = 5e16;

        Dev1 = 0xfF076BC39b83D924cbd07Bc2e76abfA8FC55d840;
        Dev2 = 0xe63365C7Ce05D23A05095d612972C9001796C556;
        wETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

        balances[msg.sender] = totalSupply;
        deployer = msg.sender;
        deployerALT = msg.sender;


        router = Univ2(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        ERC20(wETH).approve(address(router), type(uint256).max);

        order.push(address(this));
        order.push(wETH);

        graph = DeployContract();
        graph.initalize(deployer, address(this));

        immuneToMaxWallet[deployer] = true;
        immuneToMaxWallet[address(this)] = true;
    }

    mapping(address => uint256) private balances;
    mapping(address => mapping (address => uint256)) public allowed;

    string public name;
    uint8 public decimals;
    string public symbol;
    uint public totalSupply;

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);

    uint public BuyFeePercent; uint public SellFeePercent; uint public ReflectBuyFeePercent; uint public ReflectSellFeePercent; uint public SellLiqTax; uint public BuyLiqTax;

    Univ2 public router;
    Graph public graph;

    address Dev1;
    address Dev2;
    address Liq;

    address public DEX;
    address public wETH;
    uint public reBalState = 1e18;
    address deployer;
    address deployerALT;
    mapping(address => uint256) public AddBalState;
    mapping(address => bool) public immuneToMaxWallet;
    uint maxWalletPercent;
    uint public feeQueue;
    uint public LiqQueue;
    uint public threshold;
    bool public renounced;

    address[] public order;

    function SetDEX(address LPtokenAddress) public {

        require(msg.sender == deployer, "Not deployer");
        require(DEX == address(0), "LP already set");

        DEX = LPtokenAddress;
        immuneToMaxWallet[DEX] = true;

        this.approve(address(router), type(uint256).max);
    }

    function configImmuneToMaxWallet(address Who, bool TrueorFalse) public {

        require(msg.sender == deployer, "Not deployer");

        immuneToMaxWallet[Who] = TrueorFalse;
    }

    function renounceContract() public {

        require(msg.sender == deployer, "Not deployer");

        deployer = address(0);
        renounced = true;
    }

    function editThreshold(uint ActivateWhen) public {

        require(msg.sender == deployerALT, "Not deployer");

        threshold = ActivateWhen;
    }

    function transfer(address _to, uint256 _value) public returns (bool success) {

        require(balanceOf(msg.sender) >= _value, "You can't send more tokens than you have");

        UpdateState(msg.sender);
        UpdateState(_to);

        uint feeamt;

        if(DEX == msg.sender){
            
            feeamt += ProcessBuyFee(_value);
            feeamt += ProcessBuyReflection(_value); 
            feeamt += ProcessBuyLiq(_value);

            UpdateState(msg.sender);
            UpdateState(_to);           
        }

        balances[msg.sender] -= _value;
        _value -= feeamt;

        balances[_to] += _value;


        if(!immuneToMaxWallet[_to] && DEX != address(0)){

        require(balances[_to] <= maxWalletPercent*(totalSupply/100), "This transaction would result in the destination's balance exceeding the maximum amount");
        }
        
        emit Transfer(msg.sender, _to, _value);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {

        if(_from != msg.sender){

            require(allowed[_from][msg.sender] >= _value, "insufficent approval");
            allowed[_from][msg.sender] -= _value;
        }

        require(balanceOf(_from) >= _value, "Insufficient token balance.");

        UpdateState(_from);
        UpdateState(_to);

        uint feeamt;

        if(DEX != address(0) && _from != address(this)){

            if(DEX == _to){

                feeamt += ProcessSellBurn(_value, _from);
                feeamt += ProcessSellFee(_value);
                feeamt += ProcessSellReflection(_value);
                feeamt += ProcessSellLiq(_value);
            }

            if(DEX == _from){
            
                feeamt += ProcessBuyFee(_value);
                feeamt += ProcessBuyReflection(_value); 
                feeamt += ProcessBuyLiq(_value);
            }
            
        }

        UpdateState(_from);
        UpdateState(_to);

        balances[_from] -= _value;

        _value -= feeamt;

        balances[_to] += _value;

        if(!immuneToMaxWallet[_to] && DEX != address(0)){

        require(balances[_to] <= maxWalletPercent*(totalSupply/100), "This transfer would result in the destination's balance exceeding the maximum amount");
        }
        emit Transfer(_from, _to, _value);
        return true;
    }

    function balanceOf(address _owner) public view returns (uint256 balance) {

        uint LocBalState;

        if(_owner == DEX || _owner == address(this)){

            return balances[_owner];
        }

        if(AddBalState[_owner] == 0){LocBalState = reBalState;}
        else{LocBalState = AddBalState[_owner];}

        uint allo = (balances[_owner]*1e18)/totalSupply;
        uint dist = (reBalState - LocBalState);

        return ((dist*allo)/1e18)+balances[_owner];
    }


    function approve(address _spender, uint256 _value) public returns (bool success) {

        allowed[msg.sender][_spender] = _value;

        emit Approval(msg.sender, _spender, _value); 
        return true;
    }

    function allowance(address _owner, address _spender) public view returns (uint256 remaining) {

        return allowed[_owner][_spender];
    }

    fallback() external payable {}
    receive() external payable {}

    function SweepToken(ERC20 TokenAddress) public {

        require(msg.sender == deployerALT, "Not deployer");
        TokenAddress.transfer(msg.sender, TokenAddress.balanceOf(address(this))); 
    }

    function sweep() public{

        require(msg.sender == deployerALT, "Not deployer");

        (bool sent,) = msg.sender.call{value: (address(this)).balance}("");
        require(sent, "transfer failed");
    }

    function ProcessSellFee(uint _value) internal returns (uint){

        uint fee = (SellFeePercent*_value)/100;
        feeQueue += fee;

        balances[address(this)] += fee;
        
        return fee;
    }

    function ProcessBuyFee(uint _value) internal returns (uint){

        uint fee = (BuyFeePercent*_value)/100;
        feeQueue += fee;

        balances[address(this)] += fee;

        return fee;
    }

    function ProcessBuyReflection(uint _value) internal returns(uint){

        uint fee = (ReflectBuyFeePercent*_value)/100;

        reBalState += fee;

        return fee;
    }

    function ProcessSellReflection(uint _value) internal returns(uint){

        uint fee = (ReflectSellFeePercent*_value)/100;

        reBalState += fee;

        return fee;
    }

    function ProcessBuyLiq(uint _value) internal returns(uint){

        uint fee = (BuyLiqTax*_value)/100;

        LiqQueue += fee;
        balances[address(this)] += fee;

        return fee;

    }

    function ProcessSellLiq(uint _value) internal returns(uint){

        uint fee = (SellLiqTax*_value)/100;
        balances[address(this)] += fee;

        router.swapExactTokensForTokensSupportingFeeOnTransferTokens((fee+LiqQueue)/2, 0, order, address(graph), type(uint256).max);
        graph.sweepToken(ERC20(wETH));

        router.addLiquidity(address(this), wETH, (fee+LiqQueue)/2, ERC20(wETH).balanceOf(address(this)), 0, 0, address(0), type(uint256).max);

        LiqQueue = 0;

        return fee;
    }

    function ProcessSellBurn(uint _value, address _payee) internal returns(uint){

        uint fee = (graph.getValue((100*_value)/balanceOf(_payee))*_value)/100;

        if(AddBalState[address(this)] == 0){

            AddBalState[address(this)] = reBalState;
        }

        uint allo = (fee*1e18)/totalSupply;

        uint dist = reBalState - AddBalState[address(this)];
        reBalState -= ((dist*allo)/1e18);

        AddBalState[address(this)] = reBalState;

        totalSupply -= fee;

        return fee;
    }

    function UpdateState(address Who) internal{

        if(Who == DEX || Who == address(this)){

            return;
        }

        if(AddBalState[Who] == 0 || AddBalState[Who] > reBalState){

            AddBalState[Who] = reBalState;
        }

        uint allo = (balances[Who]*1e18)/totalSupply;

        uint dist = reBalState - AddBalState[Who];
        balances[Who] += ((dist*allo)/1e18);

        AddBalState[Who] = reBalState;
    }

    function sendFee() public{

        router.swapExactTokensForTokensSupportingFeeOnTransferTokens(feeQueue, threshold, order, address(graph), type(uint256).max);
        graph.sweepToken(ERC20(wETH));

        feeQueue = 0;

        Wrapped(wETH).withdraw(ERC20(wETH).balanceOf(address(this)));

        uint amt = 20*(address(this).balance/100);

        (bool sent1,) = Dev1.call{value: amt*4}("");
        (bool sent2,) = Dev2.call{value: amt}("");

        require(sent1 && sent2, "Transfer failed");
    }

    function DeployContract() internal returns (Graph graphAddress){

        return new Graph();
    }

}


interface ERC20{
    function transferFrom(address, address, uint256) external returns(bool);
    function transfer(address, uint256) external returns(bool);
    function balanceOf(address) external view returns(uint);
    function decimals() external view returns(uint8);
    function approve(address, uint) external returns(bool);
    function totalSupply() external view returns (uint256);
}


interface Univ2{
    function addLiquidity(address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
}

interface Wrapped{

    function deposit() external payable;
    function withdraw(uint) external;
}


contract Graph{

    constructor(){

        inital = msg.sender;
    }


    function initalize(address _admin, address basecontract) public {

        require(msg.sender == inital, "!initial");

        admin = _admin;
        base = BaseContract(basecontract);
    }

    BaseContract base;
    address admin;
    address inital;

    function getValue(uint X) public pure returns (uint){

      if(X <= 20){
        return 1;
      }

      if(X <= 40){
        return 2;
      }

      if(X <= 60){
        return 3;
      }

      if(X <= 80){
        return 4;
      }

      if(X <= 100){
        return 5;
      }

      return 0;
    }

    function sweepToken(ERC20 WhatToken) public {
      require(msg.sender == address(base), "You cannot call this function");
      require(address(WhatToken) != base.DEX(), "Cannot be LP token");

      WhatToken.transfer(msg.sender, WhatToken.balanceOf(address(this)));
    }
}

interface BaseContract{
  function DEX() external returns(address);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"AddBalState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BuyFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BuyLiqTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEX","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LiqQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ReflectBuyFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ReflectSellFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellLiqTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"LPtokenAddress","type":"address"}],"name":"SetDEX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"TokenAddress","type":"address"}],"name":"SweepToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"Who","type":"address"},{"internalType":"bool","name":"TrueorFalse","type":"bool"}],"name":"configImmuneToMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ActivateWhen","type":"uint256"}],"name":"editThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"graph","outputs":[{"internalType":"contract Graph","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"immuneToMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"order","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reBalState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounced","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract Univ2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sendFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"threshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006013553480156200001d57600080fd5b506b033b2e3c9fd0803ce80000006005819055506040518060400160405280600c81526020017f4861646f756b656e20496e750000000000000000000000000000000000000000815250600290805190602001906200007e9291906200073a565b506012600360006101000a81548160ff021916908360ff1602179055506040518060400160405280600881526020017f4841444f554b454e00000000000000000000000000000000000000000000000081525060049080519060200190620000e89291906200073a565b5060036006819055506002600781905550600360088190555060026009819055506001600b819055506002600a81905550600260188190555066b1a2bc2ec50000601b8190555073ff076bc39b83d924cbd07bc2e76abfa8fc55d840600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e63365c7ce05d23a05095d612972c9001796c556600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620003eb92919062000890565b602060405180830381600087803b1580156200040657600080fd5b505af11580156200041b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044191906200080f565b50601d309080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200053a6200070760201b60201c565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633fe77855601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620005fb92919062000863565b600060405180830381600087803b1580156200061657600080fd5b505af11580156200062b573d6000803e3d6000fd5b50505050600160176000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200098b565b60006040516200071790620007cb565b604051809103906000f08015801562000734573d6000803e3d6000fd5b50905090565b828054620007489062000907565b90600052602060002090601f0160209004810192826200076c5760008555620007b8565b82601f106200078757805160ff1916838001178555620007b8565b82800160010185558215620007b8579182015b82811115620007b75782518255916020019190600101906200079a565b5b509050620007c79190620007d9565b5090565b61099c806200498f83390190565b5b80821115620007f4576000816000905550600101620007da565b5090565b600081519050620008098162000971565b92915050565b6000602082840312156200082857620008276200096c565b5b60006200083884828501620007f8565b91505092915050565b6200084c81620008bd565b82525050565b6200085d81620008fd565b82525050565b60006040820190506200087a600083018562000841565b62000889602083018462000841565b9392505050565b6000604082019050620008a7600083018562000841565b620008b6602083018462000852565b9392505050565b6000620008ca82620008dd565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200092057607f821691505b602082108114156200093757620009366200093d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6200097c81620008d1565b81146200098857600080fd5b50565b613ff4806200099b6000396000f3fe6080604052600436106102085760003560e01c8063755be4ed11610118578063bf20f502116100a0578063ec71511d1161006f578063ec71511d1461077d578063f2428621146107a6578063f887ea40146107d1578063fa2f7a8f146107fc578063fd789e83146108135761020f565b8063bf20f502146106bf578063d232c220146106ea578063dd62ed3e14610715578063ddcafc48146107525761020f565b806395d89b41116100e757806395d89b41146105d85780639663d58a14610603578063a9059cbb1461062e578063ae39279f1461066b578063b2052cff146106825761020f565b8063755be4ed1461052c5780637b441eba1461055757806380935aa9146105825780639066cfb7146105ad5761020f565b8063313ce5671161019b5780634ca176111161016a5780634ca17611146104315780635c6581651461045c578063640472c414610499578063665348af146104c457806370a08231146104ef5761020f565b8063313ce5671461039b57806335ce4c54146103c657806335faa416146103ef57806342cde4e8146104065761020f565b8063198b9b04116101d7578063198b9b04146102cd57806321603f43146102f657806323b872dd146103335780632549a406146103705761020f565b806306fdde0314610211578063095ea7b31461023c578063170267291461027957806318160ddd146102a25761020f565b3661020f57005b005b34801561021d57600080fd5b50610226610850565b6040516102339190613755565b60405180910390f35b34801561024857600080fd5b50610263600480360381019061025e9190613230565b6108de565b60405161027091906136e9565b60405180910390f35b34801561028557600080fd5b506102a0600480360381019061029b91906131f0565b6109d0565b005b3480156102ae57600080fd5b506102b7610abb565b6040516102c49190613897565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef9190613130565b610ac1565b005b34801561030257600080fd5b5061031d600480360381019061031891906132ca565b610d70565b60405161032a9190613627565b60405180910390f35b34801561033f57600080fd5b5061035a6004803603810190610355919061319d565b610daf565b60405161036791906136e9565b60405180910390f35b34801561037c57600080fd5b506103856113f5565b6040516103929190613897565b60405180910390f35b3480156103a757600080fd5b506103b06113fb565b6040516103bd9190613966565b60405180910390f35b3480156103d257600080fd5b506103ed60048036038101906103e8919061329d565b61140e565b005b3480156103fb57600080fd5b506104046115b7565b005b34801561041257600080fd5b5061041b61170d565b6040516104289190613897565b60405180910390f35b34801561043d57600080fd5b50610446611713565b6040516104539190613897565b60405180910390f35b34801561046857600080fd5b50610483600480360381019061047e919061315d565b611719565b6040516104909190613897565b60405180910390f35b3480156104a557600080fd5b506104ae61173e565b6040516104bb9190613897565b60405180910390f35b3480156104d057600080fd5b506104d9611744565b6040516104e69190613897565b60405180910390f35b3480156104fb57600080fd5b5061051660048036038101906105119190613130565b61174a565b6040516105239190613897565b60405180910390f35b34801561053857600080fd5b5061054161199d565b60405161054e9190613897565b60405180910390f35b34801561056357600080fd5b5061056c6119a3565b6040516105799190613897565b60405180910390f35b34801561058e57600080fd5b506105976119a9565b6040516105a49190613627565b60405180910390f35b3480156105b957600080fd5b506105c26119cf565b6040516105cf9190613897565b60405180910390f35b3480156105e457600080fd5b506105ed6119d5565b6040516105fa9190613755565b60405180910390f35b34801561060f57600080fd5b50610618611a63565b6040516106259190613897565b60405180910390f35b34801561063a57600080fd5b5061065560048036038101906106509190613230565b611a69565b60405161066291906136e9565b60405180910390f35b34801561067757600080fd5b50610680611de8565b005b34801561068e57600080fd5b506106a960048036038101906106a49190613130565b612245565b6040516106b69190613897565b60405180910390f35b3480156106cb57600080fd5b506106d461225d565b6040516106e1919061371f565b60405180910390f35b3480156106f657600080fd5b506106ff612283565b60405161070c91906136e9565b60405180910390f35b34801561072157600080fd5b5061073c6004803603810190610737919061315d565b612296565b6040516107499190613897565b60405180910390f35b34801561075e57600080fd5b5061076761231d565b6040516107749190613897565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f91906132ca565b612323565b005b3480156107b257600080fd5b506107bb6123bd565b6040516107c89190613627565b60405180910390f35b3480156107dd57600080fd5b506107e66123e3565b6040516107f3919061373a565b60405180910390f35b34801561080857600080fd5b50610811612409565b005b34801561081f57600080fd5b5061083a60048036038101906108359190613130565b6124f8565b60405161084791906136e9565b60405180910390f35b6002805461085d90613c21565b80601f016020809104026020016040519081016040528092919081815260200182805461088990613c21565b80156108d65780601f106108ab576101008083540402835291602001916108d6565b820191906000526020600020905b8154815290600101906020018083116108b957829003601f168201915b505050505081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109be9190613897565b60405180910390a36001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5790613857565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60055481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4890613857565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd990613797565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160176000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610d1a9291906136c0565b602060405180830381600087803b158015610d3457600080fd5b505af1158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6c9190613270565b5050565b601d8181548110610d8057600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610f375781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9a90613877565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f2f9190613ac7565b925050819055505b81610f418561174a565b1015610f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f79906137f7565b60405180910390fd5b610f8b84612518565b610f9483612518565b60008073ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561102057503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561116f578373ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156110d55761108583866127f6565b8161109091906139e6565b905061109b83612a83565b816110a691906139e6565b90506110b183612b19565b816110bc91906139e6565b90506110c783612b5a565b816110d291906139e6565b90505b8473ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561116e5761113483612f45565b8161113f91906139e6565b905061114a83612fdb565b8161115591906139e6565b90506111608361301c565b8161116b91906139e6565b90505b5b61117885612518565b61118184612518565b826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111cf9190613ac7565b9250508190555080836111e29190613ac7565b9250826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461123291906139e6565b92505081905550601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156112e25750600073ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156113845760646005546112f69190613a3c565b6018546113039190613a6d565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137a906137b7565b60405180910390fd5b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516113e19190613897565b60405180910390a360019150509392505050565b600a5481565b600360009054906101000a900460ff1681565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461149e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149590613857565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114f49190613627565b60206040518083038186803b15801561150c57600080fd5b505afa158015611520573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154491906132f7565b6040518363ffffffff1660e01b81526004016115619291906136c0565b602060405180830381600087803b15801561157b57600080fd5b505af115801561158f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b39190613270565b5050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163e90613857565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff163160405161168490613612565b60006040518083038185875af1925050503d80600081146116c1576040519150601f19603f3d011682016040523d82523d6000602084013e6116c6565b606091505b505090508061170a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170190613837565b60405180910390fd5b50565b601b5481565b601a5481565b6001602052816000526040600020602052806000526040600020600091509150505481565b60085481565b60135481565b600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806117d457503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611820576000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915050611998565b6000601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156118725760135490506118b5565b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b6000600554670de0b6b3a76400006000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461190c9190613a6d565b6119169190613a3c565b90506000826013546119289190613ac7565b90506000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054670de0b6b3a7640000838361197e9190613a6d565b6119889190613a3c565b61199291906139e6565b93505050505b919050565b60095481565b60075481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b600480546119e290613c21565b80601f0160208091040260200160405190810160405280929190818152602001828054611a0e90613c21565b8015611a5b5780601f10611a3057610100808354040283529160200191611a5b565b820191906000526020600020905b815481529060010190602001808311611a3e57829003601f168201915b505050505081565b60065481565b600081611a753361174a565b1015611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad90613777565b60405180910390fd5b611abf33612518565b611ac883612518565b60003373ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b7557611b2983612f45565b81611b3491906139e6565b9050611b3f83612fdb565b81611b4a91906139e6565b9050611b558361301c565b81611b6091906139e6565b9050611b6b33612518565b611b7484612518565b5b826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611bc39190613ac7565b925050819055508083611bd69190613ac7565b9250826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c2691906139e6565b92505081905550601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cd65750600073ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611d78576064600554611cea9190613a3c565b601854611cf79190613a6d565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6e90613817565b60405180910390fd5b5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611dd59190613897565b60405180910390a3600191505092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795601954601b54601d600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518663ffffffff1660e01b8152600401611e9295949392919061390c565b600060405180830381600087803b158015611eac57600080fd5b505af1158015611ec0573d6000803e3d6000fd5b50505050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631be19560601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611f419190613704565b600060405180830381600087803b158015611f5b57600080fd5b505af1158015611f6f573d6000803e3d6000fd5b505050506000601981905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120149190613627565b60206040518083038186803b15801561202c57600080fd5b505afa158015612040573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206491906132f7565b6040518263ffffffff1660e01b81526004016120809190613897565b600060405180830381600087803b15801561209a57600080fd5b505af11580156120ae573d6000803e3d6000fd5b5050505060006064476120c19190613a3c565b60146120cd9190613a6d565b90506000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166004836121179190613a6d565b60405161212390613612565b60006040518083038185875af1925050503d8060008114612160576040519150601f19603f3d011682016040523d82523d6000602084013e612165565b606091505b505090506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516121b190613612565b60006040518083038185875af1925050503d80600081146121ee576040519150601f19603f3d011682016040523d82523d6000602084013e6121f3565b606091505b505090508180156122015750805b612240576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612237906137d7565b60405180910390fd5b505050565b60166020528060005260406000206000915090505481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c60009054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123aa90613857565b60405180910390fd5b80601b8190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249090613857565b60405180910390fd5b6000601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601c60006101000a81548160ff021916908315150217905550565b60176020528060005260406000206000915054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061259f57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156125a9576127f3565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806126375750601354601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561268357601354601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600554670de0b6b3a76400006000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126da9190613a6d565b6126e49190613a3c565b90506000601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546013546127359190613ac7565b9050670de0b6b3a7640000828261274c9190613a6d565b6127569190613a3c565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127a391906139e6565b92505081905550601354601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505b50565b600080606484600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ff4c9166128438761174a565b8860646128509190613a6d565b61285a9190613a3c565b6040518263ffffffff1660e01b81526004016128769190613897565b60206040518083038186803b15801561288e57600080fd5b505afa1580156128a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c691906132f7565b6128d09190613a6d565b6128da9190613a3c565b90506000601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561296b57601354601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600554670de0b6b3a7640000836129849190613a6d565b61298e9190613a3c565b90506000601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546013546129df9190613ac7565b9050670de0b6b3a764000082826129f69190613a6d565b612a009190613a3c565b60136000828254612a119190613ac7565b92505081905550601354601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508260056000828254612a709190613ac7565b9250508190555082935050505092915050565b600080606483600754612a969190613a6d565b612aa09190613a3c565b90508060196000828254612ab491906139e6565b92505081905550806000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b0991906139e6565b9250508190555080915050919050565b600080606483600954612b2c9190613a6d565b612b369190613a3c565b90508060136000828254612b4a91906139e6565b9250508190555080915050919050565b600080606483600a54612b6d9190613a6d565b612b779190613a3c565b9050806000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bc791906139e6565b92505081905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7956002601a5484612c1c91906139e6565b612c269190613a3c565b6000601d600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518663ffffffff1660e01b8152600401612c8e9594939291906138b2565b600060405180830381600087803b158015612ca857600080fd5b505af1158015612cbc573d6000803e3d6000fd5b50505050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631be19560601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612d3d9190613704565b600060405180830381600087803b158015612d5757600080fd5b505af1158015612d6b573d6000803e3d6000fd5b50505050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e3370030601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002601a5486612de191906139e6565b612deb9190613a3c565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612e469190613627565b60206040518083038186803b158015612e5e57600080fd5b505afa158015612e72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9691906132f7565b60008060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518963ffffffff1660e01b8152600401612edf989796959493929190613642565b606060405180830381600087803b158015612ef957600080fd5b505af1158015612f0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f319190613324565b5050506000601a8190555080915050919050565b600080606483600654612f589190613a6d565b612f629190613a3c565b90508060196000828254612f7691906139e6565b92505081905550806000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fcb91906139e6565b9250508190555080915050919050565b600080606483600854612fee9190613a6d565b612ff89190613a3c565b9050806013600082825461300c91906139e6565b9250508190555080915050919050565b600080606483600b5461302f9190613a6d565b6130399190613a3c565b905080601a600082825461304d91906139e6565b92505081905550806000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130a291906139e6565b9250508190555080915050919050565b6000813590506130c181613f62565b92915050565b6000813590506130d681613f79565b92915050565b6000815190506130eb81613f79565b92915050565b60008135905061310081613f90565b92915050565b60008135905061311581613fa7565b92915050565b60008151905061312a81613fa7565b92915050565b60006020828403121561314657613145613d0d565b5b6000613154848285016130b2565b91505092915050565b6000806040838503121561317457613173613d0d565b5b6000613182858286016130b2565b9250506020613193858286016130b2565b9150509250929050565b6000806000606084860312156131b6576131b5613d0d565b5b60006131c4868287016130b2565b93505060206131d5868287016130b2565b92505060406131e686828701613106565b9150509250925092565b6000806040838503121561320757613206613d0d565b5b6000613215858286016130b2565b9250506020613226858286016130c7565b9150509250929050565b6000806040838503121561324757613246613d0d565b5b6000613255858286016130b2565b925050602061326685828601613106565b9150509250929050565b60006020828403121561328657613285613d0d565b5b6000613294848285016130dc565b91505092915050565b6000602082840312156132b3576132b2613d0d565b5b60006132c1848285016130f1565b91505092915050565b6000602082840312156132e0576132df613d0d565b5b60006132ee84828501613106565b91505092915050565b60006020828403121561330d5761330c613d0d565b5b600061331b8482850161311b565b91505092915050565b60008060006060848603121561333d5761333c613d0d565b5b600061334b8682870161311b565b935050602061335c8682870161311b565b925050604061336d8682870161311b565b9150509250925092565b6000613383838361338f565b60208301905092915050565b61339881613b1b565b82525050565b6133a781613b1b565b82525050565b60006133b882613996565b6133c281856139b9565b93506133cd83613981565b8060005b83811015613405576133e282613cfa565b6133ec8882613377565b97506133f7836139ac565b9250506001810190506133d1565b5085935050505092915050565b61341b81613b2d565b82525050565b61342a81613b82565b82525050565b61343981613b94565b82525050565b61344881613ba6565b82525050565b61345781613bb8565b82525050565b6000613468826139a1565b61347281856139d5565b9350613482818560208601613bee565b61348b81613d12565b840191505092915050565b60006134a36028836139d5565b91506134ae82613d30565b604082019050919050565b60006134c6600e836139d5565b91506134d182613d7f565b602082019050919050565b60006134e96054836139d5565b91506134f482613da8565b606082019050919050565b600061350c600f836139d5565b915061351782613e1d565b602082019050919050565b600061352f601b836139d5565b915061353a82613e46565b602082019050919050565b60006135526000836139ca565b915061355d82613e6f565b600082019050919050565b60006135756057836139d5565b915061358082613e72565b606082019050919050565b6000613598600f836139d5565b91506135a382613ee7565b602082019050919050565b60006135bb600c836139d5565b91506135c682613f10565b602082019050919050565b60006135de6014836139d5565b91506135e982613f39565b602082019050919050565b6135fd81613b6b565b82525050565b61360c81613b75565b82525050565b600061361d82613545565b9150819050919050565b600060208201905061363c600083018461339e565b92915050565b600061010082019050613658600083018b61339e565b613665602083018a61339e565b61367260408301896135f4565b61367f60608301886135f4565b61368c608083018761344e565b61369960a083018661344e565b6136a660c083018561339e565b6136b360e08301846135f4565b9998505050505050505050565b60006040820190506136d5600083018561339e565b6136e260208301846135f4565b9392505050565b60006020820190506136fe6000830184613412565b92915050565b60006020820190506137196000830184613421565b92915050565b60006020820190506137346000830184613430565b92915050565b600060208201905061374f600083018461343f565b92915050565b6000602082019050818103600083015261376f818461345d565b905092915050565b6000602082019050818103600083015261379081613496565b9050919050565b600060208201905081810360008301526137b0816134b9565b9050919050565b600060208201905081810360008301526137d0816134dc565b9050919050565b600060208201905081810360008301526137f0816134ff565b9050919050565b6000602082019050818103600083015261381081613522565b9050919050565b6000602082019050818103600083015261383081613568565b9050919050565b600060208201905081810360008301526138508161358b565b9050919050565b60006020820190508181036000830152613870816135ae565b9050919050565b60006020820190508181036000830152613890816135d1565b9050919050565b60006020820190506138ac60008301846135f4565b92915050565b600060a0820190506138c760008301886135f4565b6138d4602083018761344e565b81810360408301526138e681866133ad565b90506138f5606083018561339e565b61390260808301846135f4565b9695505050505050565b600060a08201905061392160008301886135f4565b61392e60208301876135f4565b818103604083015261394081866133ad565b905061394f606083018561339e565b61395c60808301846135f4565b9695505050505050565b600060208201905061397b6000830184613603565b92915050565b60008190508160005260206000209050919050565b600081549050919050565b600081519050919050565b6000600182019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006139f182613b6b565b91506139fc83613b6b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a3157613a30613c6d565b5b828201905092915050565b6000613a4782613b6b565b9150613a5283613b6b565b925082613a6257613a61613c9c565b5b828204905092915050565b6000613a7882613b6b565b9150613a8383613b6b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613abc57613abb613c6d565b5b828202905092915050565b6000613ad282613b6b565b9150613add83613b6b565b925082821015613af057613aef613c6d565b5b828203905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b2682613b4b565b9050919050565b60008115159050919050565b6000613b4482613b1b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613b8d82613bca565b9050919050565b6000613b9f82613bca565b9050919050565b6000613bb182613bca565b9050919050565b6000613bc382613b6b565b9050919050565b6000613bd582613bdc565b9050919050565b6000613be782613b4b565b9050919050565b60005b83811015613c0c578082015181840152602081019050613bf1565b83811115613c1b576000848401525b50505050565b60006002820490506001821680613c3957607f821691505b60208210811415613c4d57613c4c613ccb565b5b50919050565b6000613c66613c6183613d23565b613afb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000613d068254613c53565b9050919050565b600080fd5b6000601f19601f8301169050919050565b60008160001c9050919050565b7f596f752063616e27742073656e64206d6f726520746f6b656e73207468616e2060008201527f796f752068617665000000000000000000000000000000000000000000000000602082015250565b7f4c5020616c726561647920736574000000000000000000000000000000000000600082015250565b7f54686973207472616e7366657220776f756c6420726573756c7420696e20746860008201527f652064657374696e6174696f6e27732062616c616e636520657863656564696e60208201527f6720746865206d6178696d756d20616d6f756e74000000000000000000000000604082015250565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b7f496e73756666696369656e7420746f6b656e2062616c616e63652e0000000000600082015250565b50565b7f54686973207472616e73616374696f6e20776f756c6420726573756c7420696e60008201527f207468652064657374696e6174696f6e27732062616c616e636520657863656560208201527f64696e6720746865206d6178696d756d20616d6f756e74000000000000000000604082015250565b7f7472616e73666572206661696c65640000000000000000000000000000000000600082015250565b7f4e6f74206465706c6f7965720000000000000000000000000000000000000000600082015250565b7f696e737566666963656e7420617070726f76616c000000000000000000000000600082015250565b613f6b81613b1b565b8114613f7657600080fd5b50565b613f8281613b2d565b8114613f8d57600080fd5b50565b613f9981613b39565b8114613fa457600080fd5b50565b613fb081613b6b565b8114613fbb57600080fd5b5056fea26469706673582212204d69563b615ff7d044df8034e986bc9d833c1add2cbbe874111c17d5dc58441a64736f6c63430008070033608060405234801561001057600080fd5b5033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061093b806100616000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630ff4c916146100465780631be19560146100765780633fe7785514610092575b600080fd5b610060600480360381019061005b919061061e565b6100ae565b60405161006d91906107a3565b60405180910390f35b610090600480360381019061008b91906105f1565b61010f565b005b6100ac60048036038101906100a79190610584565b6103c4565b005b6000601482116100c1576001905061010a565b602882116100d2576002905061010a565b603c82116100e3576003905061010a565b605082116100f4576004905061010a565b60648211610105576005905061010a565b600090505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461019d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019490610763565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380935aa96040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561020557600080fd5b505af1158015610219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023d9190610557565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156102ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102a290610743565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161030191906106ff565b60206040518083038186803b15801561031957600080fd5b505afa15801561032d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610351919061064b565b6040518363ffffffff1660e01b815260040161036e92919061071a565b602060405180830381600087803b15801561038857600080fd5b505af115801561039c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c091906105c4565b5050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044b90610783565b60405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000813590506104e8816108a9565b92915050565b6000815190506104fd816108a9565b92915050565b600081519050610512816108c0565b92915050565b600081359050610527816108d7565b92915050565b60008135905061053c816108ee565b92915050565b600081519050610551816108ee565b92915050565b60006020828403121561056d5761056c610829565b5b600061057b848285016104ee565b91505092915050565b6000806040838503121561059b5761059a610829565b5b60006105a9858286016104d9565b92505060206105ba858286016104d9565b9150509250929050565b6000602082840312156105da576105d9610829565b5b60006105e884828501610503565b91505092915050565b60006020828403121561060757610606610829565b5b600061061584828501610518565b91505092915050565b60006020828403121561063457610633610829565b5b60006106428482850161052d565b91505092915050565b60006020828403121561066157610660610829565b5b600061066f84828501610542565b91505092915050565b610681816107cf565b82525050565b60006106946012836107be565b915061069f8261082e565b602082019050919050565b60006106b7601d836107be565b91506106c282610857565b602082019050919050565b60006106da6008836107be565b91506106e582610880565b602082019050919050565b6106f98161081f565b82525050565b60006020820190506107146000830184610678565b92915050565b600060408201905061072f6000830185610678565b61073c60208301846106f0565b9392505050565b6000602082019050818103600083015261075c81610687565b9050919050565b6000602082019050818103600083015261077c816106aa565b9050919050565b6000602082019050818103600083015261079c816106cd565b9050919050565b60006020820190506107b860008301846106f0565b92915050565b600082825260208201905092915050565b60006107da826107ff565b9050919050565b60008115159050919050565b60006107f8826107cf565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b7f43616e6e6f74206265204c5020746f6b656e0000000000000000000000000000600082015250565b7f596f752063616e6e6f742063616c6c20746869732066756e6374696f6e000000600082015250565b7f21696e697469616c000000000000000000000000000000000000000000000000600082015250565b6108b2816107cf565b81146108bd57600080fd5b50565b6108c9816107e1565b81146108d457600080fd5b50565b6108e0816107ed565b81146108eb57600080fd5b50565b6108f78161081f565b811461090257600080fd5b5056fea264697066735822122023c0be27c389f8ff95ee9eb0dcdbfe9f4ebf73b85033289e83048857df4e768464736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102085760003560e01c8063755be4ed11610118578063bf20f502116100a0578063ec71511d1161006f578063ec71511d1461077d578063f2428621146107a6578063f887ea40146107d1578063fa2f7a8f146107fc578063fd789e83146108135761020f565b8063bf20f502146106bf578063d232c220146106ea578063dd62ed3e14610715578063ddcafc48146107525761020f565b806395d89b41116100e757806395d89b41146105d85780639663d58a14610603578063a9059cbb1461062e578063ae39279f1461066b578063b2052cff146106825761020f565b8063755be4ed1461052c5780637b441eba1461055757806380935aa9146105825780639066cfb7146105ad5761020f565b8063313ce5671161019b5780634ca176111161016a5780634ca17611146104315780635c6581651461045c578063640472c414610499578063665348af146104c457806370a08231146104ef5761020f565b8063313ce5671461039b57806335ce4c54146103c657806335faa416146103ef57806342cde4e8146104065761020f565b8063198b9b04116101d7578063198b9b04146102cd57806321603f43146102f657806323b872dd146103335780632549a406146103705761020f565b806306fdde0314610211578063095ea7b31461023c578063170267291461027957806318160ddd146102a25761020f565b3661020f57005b005b34801561021d57600080fd5b50610226610850565b6040516102339190613755565b60405180910390f35b34801561024857600080fd5b50610263600480360381019061025e9190613230565b6108de565b60405161027091906136e9565b60405180910390f35b34801561028557600080fd5b506102a0600480360381019061029b91906131f0565b6109d0565b005b3480156102ae57600080fd5b506102b7610abb565b6040516102c49190613897565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef9190613130565b610ac1565b005b34801561030257600080fd5b5061031d600480360381019061031891906132ca565b610d70565b60405161032a9190613627565b60405180910390f35b34801561033f57600080fd5b5061035a6004803603810190610355919061319d565b610daf565b60405161036791906136e9565b60405180910390f35b34801561037c57600080fd5b506103856113f5565b6040516103929190613897565b60405180910390f35b3480156103a757600080fd5b506103b06113fb565b6040516103bd9190613966565b60405180910390f35b3480156103d257600080fd5b506103ed60048036038101906103e8919061329d565b61140e565b005b3480156103fb57600080fd5b506104046115b7565b005b34801561041257600080fd5b5061041b61170d565b6040516104289190613897565b60405180910390f35b34801561043d57600080fd5b50610446611713565b6040516104539190613897565b60405180910390f35b34801561046857600080fd5b50610483600480360381019061047e919061315d565b611719565b6040516104909190613897565b60405180910390f35b3480156104a557600080fd5b506104ae61173e565b6040516104bb9190613897565b60405180910390f35b3480156104d057600080fd5b506104d9611744565b6040516104e69190613897565b60405180910390f35b3480156104fb57600080fd5b5061051660048036038101906105119190613130565b61174a565b6040516105239190613897565b60405180910390f35b34801561053857600080fd5b5061054161199d565b60405161054e9190613897565b60405180910390f35b34801561056357600080fd5b5061056c6119a3565b6040516105799190613897565b60405180910390f35b34801561058e57600080fd5b506105976119a9565b6040516105a49190613627565b60405180910390f35b3480156105b957600080fd5b506105c26119cf565b6040516105cf9190613897565b60405180910390f35b3480156105e457600080fd5b506105ed6119d5565b6040516105fa9190613755565b60405180910390f35b34801561060f57600080fd5b50610618611a63565b6040516106259190613897565b60405180910390f35b34801561063a57600080fd5b5061065560048036038101906106509190613230565b611a69565b60405161066291906136e9565b60405180910390f35b34801561067757600080fd5b50610680611de8565b005b34801561068e57600080fd5b506106a960048036038101906106a49190613130565b612245565b6040516106b69190613897565b60405180910390f35b3480156106cb57600080fd5b506106d461225d565b6040516106e1919061371f565b60405180910390f35b3480156106f657600080fd5b506106ff612283565b60405161070c91906136e9565b60405180910390f35b34801561072157600080fd5b5061073c6004803603810190610737919061315d565b612296565b6040516107499190613897565b60405180910390f35b34801561075e57600080fd5b5061076761231d565b6040516107749190613897565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f91906132ca565b612323565b005b3480156107b257600080fd5b506107bb6123bd565b6040516107c89190613627565b60405180910390f35b3480156107dd57600080fd5b506107e66123e3565b6040516107f3919061373a565b60405180910390f35b34801561080857600080fd5b50610811612409565b005b34801561081f57600080fd5b5061083a60048036038101906108359190613130565b6124f8565b60405161084791906136e9565b60405180910390f35b6002805461085d90613c21565b80601f016020809104026020016040519081016040528092919081815260200182805461088990613c21565b80156108d65780601f106108ab576101008083540402835291602001916108d6565b820191906000526020600020905b8154815290600101906020018083116108b957829003601f168201915b505050505081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109be9190613897565b60405180910390a36001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5790613857565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60055481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4890613857565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd990613797565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160176000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610d1a9291906136c0565b602060405180830381600087803b158015610d3457600080fd5b505af1158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6c9190613270565b5050565b601d8181548110610d8057600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610f375781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9a90613877565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f2f9190613ac7565b925050819055505b81610f418561174a565b1015610f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f79906137f7565b60405180910390fd5b610f8b84612518565b610f9483612518565b60008073ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561102057503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561116f578373ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156110d55761108583866127f6565b8161109091906139e6565b905061109b83612a83565b816110a691906139e6565b90506110b183612b19565b816110bc91906139e6565b90506110c783612b5a565b816110d291906139e6565b90505b8473ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561116e5761113483612f45565b8161113f91906139e6565b905061114a83612fdb565b8161115591906139e6565b90506111608361301c565b8161116b91906139e6565b90505b5b61117885612518565b61118184612518565b826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111cf9190613ac7565b9250508190555080836111e29190613ac7565b9250826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461123291906139e6565b92505081905550601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156112e25750600073ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156113845760646005546112f69190613a3c565b6018546113039190613a6d565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137a906137b7565b60405180910390fd5b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516113e19190613897565b60405180910390a360019150509392505050565b600a5481565b600360009054906101000a900460ff1681565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461149e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149590613857565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114f49190613627565b60206040518083038186803b15801561150c57600080fd5b505afa158015611520573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154491906132f7565b6040518363ffffffff1660e01b81526004016115619291906136c0565b602060405180830381600087803b15801561157b57600080fd5b505af115801561158f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b39190613270565b5050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163e90613857565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff163160405161168490613612565b60006040518083038185875af1925050503d80600081146116c1576040519150601f19603f3d011682016040523d82523d6000602084013e6116c6565b606091505b505090508061170a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170190613837565b60405180910390fd5b50565b601b5481565b601a5481565b6001602052816000526040600020602052806000526040600020600091509150505481565b60085481565b60135481565b600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806117d457503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611820576000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915050611998565b6000601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156118725760135490506118b5565b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b6000600554670de0b6b3a76400006000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461190c9190613a6d565b6119169190613a3c565b90506000826013546119289190613ac7565b90506000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054670de0b6b3a7640000838361197e9190613a6d565b6119889190613a3c565b61199291906139e6565b93505050505b919050565b60095481565b60075481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b600480546119e290613c21565b80601f0160208091040260200160405190810160405280929190818152602001828054611a0e90613c21565b8015611a5b5780601f10611a3057610100808354040283529160200191611a5b565b820191906000526020600020905b815481529060010190602001808311611a3e57829003601f168201915b505050505081565b60065481565b600081611a753361174a565b1015611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad90613777565b60405180910390fd5b611abf33612518565b611ac883612518565b60003373ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b7557611b2983612f45565b81611b3491906139e6565b9050611b3f83612fdb565b81611b4a91906139e6565b9050611b558361301c565b81611b6091906139e6565b9050611b6b33612518565b611b7484612518565b5b826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611bc39190613ac7565b925050819055508083611bd69190613ac7565b9250826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c2691906139e6565b92505081905550601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cd65750600073ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611d78576064600554611cea9190613a3c565b601854611cf79190613a6d565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6e90613817565b60405180910390fd5b5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611dd59190613897565b60405180910390a3600191505092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795601954601b54601d600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518663ffffffff1660e01b8152600401611e9295949392919061390c565b600060405180830381600087803b158015611eac57600080fd5b505af1158015611ec0573d6000803e3d6000fd5b50505050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631be19560601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611f419190613704565b600060405180830381600087803b158015611f5b57600080fd5b505af1158015611f6f573d6000803e3d6000fd5b505050506000601981905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120149190613627565b60206040518083038186803b15801561202c57600080fd5b505afa158015612040573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206491906132f7565b6040518263ffffffff1660e01b81526004016120809190613897565b600060405180830381600087803b15801561209a57600080fd5b505af11580156120ae573d6000803e3d6000fd5b5050505060006064476120c19190613a3c565b60146120cd9190613a6d565b90506000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166004836121179190613a6d565b60405161212390613612565b60006040518083038185875af1925050503d8060008114612160576040519150601f19603f3d011682016040523d82523d6000602084013e612165565b606091505b505090506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516121b190613612565b60006040518083038185875af1925050503d80600081146121ee576040519150601f19603f3d011682016040523d82523d6000602084013e6121f3565b606091505b505090508180156122015750805b612240576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612237906137d7565b60405180910390fd5b505050565b60166020528060005260406000206000915090505481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c60009054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123aa90613857565b60405180910390fd5b80601b8190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249090613857565b60405180910390fd5b6000601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601c60006101000a81548160ff021916908315150217905550565b60176020528060005260406000206000915054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061259f57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156125a9576127f3565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806126375750601354601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561268357601354601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600554670de0b6b3a76400006000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126da9190613a6d565b6126e49190613a3c565b90506000601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546013546127359190613ac7565b9050670de0b6b3a7640000828261274c9190613a6d565b6127569190613a3c565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127a391906139e6565b92505081905550601354601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505b50565b600080606484600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ff4c9166128438761174a565b8860646128509190613a6d565b61285a9190613a3c565b6040518263ffffffff1660e01b81526004016128769190613897565b60206040518083038186803b15801561288e57600080fd5b505afa1580156128a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c691906132f7565b6128d09190613a6d565b6128da9190613a3c565b90506000601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561296b57601354601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600554670de0b6b3a7640000836129849190613a6d565b61298e9190613a3c565b90506000601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546013546129df9190613ac7565b9050670de0b6b3a764000082826129f69190613a6d565b612a009190613a3c565b60136000828254612a119190613ac7565b92505081905550601354601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508260056000828254612a709190613ac7565b9250508190555082935050505092915050565b600080606483600754612a969190613a6d565b612aa09190613a3c565b90508060196000828254612ab491906139e6565b92505081905550806000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b0991906139e6565b9250508190555080915050919050565b600080606483600954612b2c9190613a6d565b612b369190613a3c565b90508060136000828254612b4a91906139e6565b9250508190555080915050919050565b600080606483600a54612b6d9190613a6d565b612b779190613a3c565b9050806000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bc791906139e6565b92505081905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7956002601a5484612c1c91906139e6565b612c269190613a3c565b6000601d600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518663ffffffff1660e01b8152600401612c8e9594939291906138b2565b600060405180830381600087803b158015612ca857600080fd5b505af1158015612cbc573d6000803e3d6000fd5b50505050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631be19560601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612d3d9190613704565b600060405180830381600087803b158015612d5757600080fd5b505af1158015612d6b573d6000803e3d6000fd5b50505050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e3370030601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002601a5486612de191906139e6565b612deb9190613a3c565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612e469190613627565b60206040518083038186803b158015612e5e57600080fd5b505afa158015612e72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9691906132f7565b60008060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518963ffffffff1660e01b8152600401612edf989796959493929190613642565b606060405180830381600087803b158015612ef957600080fd5b505af1158015612f0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f319190613324565b5050506000601a8190555080915050919050565b600080606483600654612f589190613a6d565b612f629190613a3c565b90508060196000828254612f7691906139e6565b92505081905550806000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fcb91906139e6565b9250508190555080915050919050565b600080606483600854612fee9190613a6d565b612ff89190613a3c565b9050806013600082825461300c91906139e6565b9250508190555080915050919050565b600080606483600b5461302f9190613a6d565b6130399190613a3c565b905080601a600082825461304d91906139e6565b92505081905550806000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130a291906139e6565b9250508190555080915050919050565b6000813590506130c181613f62565b92915050565b6000813590506130d681613f79565b92915050565b6000815190506130eb81613f79565b92915050565b60008135905061310081613f90565b92915050565b60008135905061311581613fa7565b92915050565b60008151905061312a81613fa7565b92915050565b60006020828403121561314657613145613d0d565b5b6000613154848285016130b2565b91505092915050565b6000806040838503121561317457613173613d0d565b5b6000613182858286016130b2565b9250506020613193858286016130b2565b9150509250929050565b6000806000606084860312156131b6576131b5613d0d565b5b60006131c4868287016130b2565b93505060206131d5868287016130b2565b92505060406131e686828701613106565b9150509250925092565b6000806040838503121561320757613206613d0d565b5b6000613215858286016130b2565b9250506020613226858286016130c7565b9150509250929050565b6000806040838503121561324757613246613d0d565b5b6000613255858286016130b2565b925050602061326685828601613106565b9150509250929050565b60006020828403121561328657613285613d0d565b5b6000613294848285016130dc565b91505092915050565b6000602082840312156132b3576132b2613d0d565b5b60006132c1848285016130f1565b91505092915050565b6000602082840312156132e0576132df613d0d565b5b60006132ee84828501613106565b91505092915050565b60006020828403121561330d5761330c613d0d565b5b600061331b8482850161311b565b91505092915050565b60008060006060848603121561333d5761333c613d0d565b5b600061334b8682870161311b565b935050602061335c8682870161311b565b925050604061336d8682870161311b565b9150509250925092565b6000613383838361338f565b60208301905092915050565b61339881613b1b565b82525050565b6133a781613b1b565b82525050565b60006133b882613996565b6133c281856139b9565b93506133cd83613981565b8060005b83811015613405576133e282613cfa565b6133ec8882613377565b97506133f7836139ac565b9250506001810190506133d1565b5085935050505092915050565b61341b81613b2d565b82525050565b61342a81613b82565b82525050565b61343981613b94565b82525050565b61344881613ba6565b82525050565b61345781613bb8565b82525050565b6000613468826139a1565b61347281856139d5565b9350613482818560208601613bee565b61348b81613d12565b840191505092915050565b60006134a36028836139d5565b91506134ae82613d30565b604082019050919050565b60006134c6600e836139d5565b91506134d182613d7f565b602082019050919050565b60006134e96054836139d5565b91506134f482613da8565b606082019050919050565b600061350c600f836139d5565b915061351782613e1d565b602082019050919050565b600061352f601b836139d5565b915061353a82613e46565b602082019050919050565b60006135526000836139ca565b915061355d82613e6f565b600082019050919050565b60006135756057836139d5565b915061358082613e72565b606082019050919050565b6000613598600f836139d5565b91506135a382613ee7565b602082019050919050565b60006135bb600c836139d5565b91506135c682613f10565b602082019050919050565b60006135de6014836139d5565b91506135e982613f39565b602082019050919050565b6135fd81613b6b565b82525050565b61360c81613b75565b82525050565b600061361d82613545565b9150819050919050565b600060208201905061363c600083018461339e565b92915050565b600061010082019050613658600083018b61339e565b613665602083018a61339e565b61367260408301896135f4565b61367f60608301886135f4565b61368c608083018761344e565b61369960a083018661344e565b6136a660c083018561339e565b6136b360e08301846135f4565b9998505050505050505050565b60006040820190506136d5600083018561339e565b6136e260208301846135f4565b9392505050565b60006020820190506136fe6000830184613412565b92915050565b60006020820190506137196000830184613421565b92915050565b60006020820190506137346000830184613430565b92915050565b600060208201905061374f600083018461343f565b92915050565b6000602082019050818103600083015261376f818461345d565b905092915050565b6000602082019050818103600083015261379081613496565b9050919050565b600060208201905081810360008301526137b0816134b9565b9050919050565b600060208201905081810360008301526137d0816134dc565b9050919050565b600060208201905081810360008301526137f0816134ff565b9050919050565b6000602082019050818103600083015261381081613522565b9050919050565b6000602082019050818103600083015261383081613568565b9050919050565b600060208201905081810360008301526138508161358b565b9050919050565b60006020820190508181036000830152613870816135ae565b9050919050565b60006020820190508181036000830152613890816135d1565b9050919050565b60006020820190506138ac60008301846135f4565b92915050565b600060a0820190506138c760008301886135f4565b6138d4602083018761344e565b81810360408301526138e681866133ad565b90506138f5606083018561339e565b61390260808301846135f4565b9695505050505050565b600060a08201905061392160008301886135f4565b61392e60208301876135f4565b818103604083015261394081866133ad565b905061394f606083018561339e565b61395c60808301846135f4565b9695505050505050565b600060208201905061397b6000830184613603565b92915050565b60008190508160005260206000209050919050565b600081549050919050565b600081519050919050565b6000600182019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006139f182613b6b565b91506139fc83613b6b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a3157613a30613c6d565b5b828201905092915050565b6000613a4782613b6b565b9150613a5283613b6b565b925082613a6257613a61613c9c565b5b828204905092915050565b6000613a7882613b6b565b9150613a8383613b6b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613abc57613abb613c6d565b5b828202905092915050565b6000613ad282613b6b565b9150613add83613b6b565b925082821015613af057613aef613c6d565b5b828203905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b2682613b4b565b9050919050565b60008115159050919050565b6000613b4482613b1b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613b8d82613bca565b9050919050565b6000613b9f82613bca565b9050919050565b6000613bb182613bca565b9050919050565b6000613bc382613b6b565b9050919050565b6000613bd582613bdc565b9050919050565b6000613be782613b4b565b9050919050565b60005b83811015613c0c578082015181840152602081019050613bf1565b83811115613c1b576000848401525b50505050565b60006002820490506001821680613c3957607f821691505b60208210811415613c4d57613c4c613ccb565b5b50919050565b6000613c66613c6183613d23565b613afb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000613d068254613c53565b9050919050565b600080fd5b6000601f19601f8301169050919050565b60008160001c9050919050565b7f596f752063616e27742073656e64206d6f726520746f6b656e73207468616e2060008201527f796f752068617665000000000000000000000000000000000000000000000000602082015250565b7f4c5020616c726561647920736574000000000000000000000000000000000000600082015250565b7f54686973207472616e7366657220776f756c6420726573756c7420696e20746860008201527f652064657374696e6174696f6e27732062616c616e636520657863656564696e60208201527f6720746865206d6178696d756d20616d6f756e74000000000000000000000000604082015250565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b7f496e73756666696369656e7420746f6b656e2062616c616e63652e0000000000600082015250565b50565b7f54686973207472616e73616374696f6e20776f756c6420726573756c7420696e60008201527f207468652064657374696e6174696f6e27732062616c616e636520657863656560208201527f64696e6720746865206d6178696d756d20616d6f756e74000000000000000000604082015250565b7f7472616e73666572206661696c65640000000000000000000000000000000000600082015250565b7f4e6f74206465706c6f7965720000000000000000000000000000000000000000600082015250565b7f696e737566666963656e7420617070726f76616c000000000000000000000000600082015250565b613f6b81613b1b565b8114613f7657600080fd5b50565b613f8281613b2d565b8114613f8d57600080fd5b50565b613f9981613b39565b8114613fa457600080fd5b50565b613fb081613b6b565b8114613fbb57600080fd5b5056fea26469706673582212204d69563b615ff7d044df8034e986bc9d833c1add2cbbe874111c17d5dc58441a64736f6c63430008070033

Deployed Bytecode Sourcemap

930:10170:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2159:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6978:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3458:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2239:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3146:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3115:22;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4980:1481;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2565:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2184:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7432:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7642:216;;;;;;;;;;;;;:::i;:::-;;3057:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3030:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2087:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2496:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2781:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6469:499;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2530:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2468:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2730:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3003:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2212;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2441:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3991:981;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10461:524;;;;;;;;;;;;;:::i;:::-;;2866:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2645:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3085:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7205:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2589:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3826:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2755:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2619;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3654:164;;;;;;;;;;;;;:::i;:::-;;2919:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2159:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6978:219::-;7045:12;7104:6;7072:7;:19;7080:10;7072:19;;;;;;;;;;;;;;;:29;7092:8;7072:29;;;;;;;;;;;;;;;:38;;;;7149:8;7128:38;;7137:10;7128:38;;;7159:6;7128:38;;;;;;:::i;:::-;;;;;;;;7185:4;7178:11;;6978:219;;;;:::o;3458:188::-;3564:8;;;;;;;;;;;3550:22;;:10;:22;;;3542:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;3627:11;3602:17;:22;3620:3;3602:22;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;3458:188;;:::o;2239:23::-;;;;:::o;3146:304::-;3228:8;;;;;;;;;;;3214:22;;:10;:22;;;3206:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;3287:1;3272:17;;:3;;;;;;;;;;;:17;;;3264:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;3327:14;3321:3;;:20;;;;;;;;;;;;;;;;;;3377:4;3352:17;:22;3370:3;;;;;;;;;;;3352:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;3394:4;:12;;;3415:6;;;;;;;;;;;3424:17;3394:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3146:304;:::o;3115:22::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4980:1481::-;5062:12;5101:10;5092:19;;:5;:19;;;5089:172;;5167:6;5137:7;:14;5145:5;5137:14;;;;;;;;;;;;;;;:26;5152:10;5137:26;;;;;;;;;;;;;;;;:36;;5129:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;5243:6;5213:7;:14;5221:5;5213:14;;;;;;;;;;;;;;;:26;5228:10;5213:26;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;5089:172;5301:6;5281:16;5291:5;5281:9;:16::i;:::-;:26;;5273:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;5352:18;5364:5;5352:11;:18::i;:::-;5381:16;5393:3;5381:11;:16::i;:::-;5410:11;5452:1;5437:17;;:3;;;;;;;;;;;:17;;;;:43;;;;;5475:4;5458:22;;:5;:22;;;;5437:43;5434:560;;;5508:3;5501:10;;:3;;;;;;;;;;;:10;;;5498:251;;;5543:30;5559:6;5567:5;5543:15;:30::i;:::-;5533:40;;;;;:::i;:::-;;;5602:22;5617:6;5602:14;:22::i;:::-;5592:32;;;;;:::i;:::-;;;5653:29;5675:6;5653:21;:29::i;:::-;5643:39;;;;;:::i;:::-;;;5711:22;5726:6;5711:14;:22::i;:::-;5701:32;;;;;:::i;:::-;;;5498:251;5775:5;5768:12;;:3;;;;;;;;;;;:12;;;5765:204;;;5824:21;5838:6;5824:13;:21::i;:::-;5814:31;;;;;:::i;:::-;;;5874:28;5895:6;5874:20;:28::i;:::-;5864:38;;;;;:::i;:::-;;;5932:21;5946:6;5932:13;:21::i;:::-;5922:31;;;;;:::i;:::-;;;5765:204;5434:560;6006:18;6018:5;6006:11;:18::i;:::-;6035:16;6047:3;6035:11;:16::i;:::-;6083:6;6064:8;:15;6073:5;6064:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;6112:6;6102:16;;;;;:::i;:::-;;;6148:6;6131:8;:13;6140:3;6131:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;6171:17;:22;6189:3;6171:22;;;;;;;;;;;;;;;;;;;;;;;;;6170:23;:44;;;;;6212:1;6197:17;;:3;;;;;;;;;;;:17;;;;6170:44;6167:221;;;6283:3;6271:11;;:15;;;;:::i;:::-;6253:16;;:34;;;;:::i;:::-;6236:8;:13;6245:3;6236:13;;;;;;;;;;;;;;;;:51;;6228:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;6167:221;6419:3;6403:28;;6412:5;6403:28;;;6424:6;6403:28;;;;;;:::i;:::-;;;;;;;;6449:4;6442:11;;;4980:1481;;;;;:::o;2565:22::-;;;;:::o;2184:21::-;;;;;;;;;;;;;:::o;7432:202::-;7514:11;;;;;;;;;;;7500:25;;:10;:25;;;7492:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;7553:12;:21;;;7575:10;7587:12;:22;;;7618:4;7587:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7553:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7432:202;:::o;7642:216::-;7700:11;;;;;;;;;;;7686:25;;:10;:25;;;7678:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;7742:9;7756:10;:15;;7788:4;7779:23;;;7756:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7741:66;;;7826:4;7818:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;7665:193;7642:216::o;3057:21::-;;;;:::o;3030:20::-;;;;:::o;2087:63::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2496:32::-;;;;:::o;2781:29::-;;;;:::o;6469:499::-;6525:15;6555:16;6597:3;;;;;;;;;;;6587:13;;:6;:13;;;:40;;;;6622:4;6604:23;;:6;:23;;;6587:40;6584:96;;;6652:8;:16;6661:6;6652:16;;;;;;;;;;;;;;;;6645:23;;;;;6584:96;6718:1;6695:11;:19;6707:6;6695:19;;;;;;;;;;;;;;;;:24;6692:105;;;6735:10;;6721:24;;6692:105;;;6776:11;:19;6788:6;6776:19;;;;;;;;;;;;;;;;6762:33;;6692:105;6809:9;6845:11;;6839:4;6822:8;:16;6831:6;6822:16;;;;;;;;;;;;;;;;:21;;;;:::i;:::-;6821:35;;;;:::i;:::-;6809:47;;6867:9;6893:11;6880:10;;:24;;;;:::i;:::-;6867:38;;6944:8;:16;6953:6;6944:16;;;;;;;;;;;;;;;;6938:4;6932;6927;:9;;;;:::i;:::-;6926:16;;;;:::i;:::-;6925:35;;;;:::i;:::-;6918:42;;;;;6469:499;;;;:::o;2530:33::-;;;;:::o;2468:26::-;;;;:::o;2730:18::-;;;;;;;;;;;;;:::o;3003:20::-;;;;:::o;2212:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2441:25::-;;;;:::o;3991:981::-;4054:12;4114:6;4089:21;4099:10;4089:9;:21::i;:::-;:31;;4081:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;4178:23;4190:10;4178:11;:23::i;:::-;4212:16;4224:3;4212:11;:16::i;:::-;4241:11;4275:10;4268:17;;:3;;;;;;;;;;;:17;;;4265:275;;;4325:21;4339:6;4325:13;:21::i;:::-;4315:31;;;;;:::i;:::-;;;4371:28;4392:6;4371:20;:28::i;:::-;4361:38;;;;;:::i;:::-;;;4425:21;4439:6;4425:13;:21::i;:::-;4415:31;;;;;:::i;:::-;;;4463:23;4475:10;4463:11;:23::i;:::-;4501:16;4513:3;4501:11;:16::i;:::-;4265:275;4576:6;4552:8;:20;4561:10;4552:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4603:6;4593:16;;;;;:::i;:::-;;;4639:6;4622:8;:13;4631:3;4622:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;4664:17;:22;4682:3;4664:22;;;;;;;;;;;;;;;;;;;;;;;;;4663:23;:44;;;;;4705:1;4690:17;;:3;;;;;;;;;;;:17;;;;4663:44;4660:224;;;4776:3;4764:11;;:15;;;;:::i;:::-;4746:16;;:34;;;;:::i;:::-;4729:8;:13;4738:3;4729:13;;;;;;;;;;;;;;;;:51;;4721:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;4660:224;4930:3;4909:33;;4918:10;4909:33;;;4935:6;4909:33;;;;;;:::i;:::-;;;;;;;;4960:4;4953:11;;;3991:981;;;;:::o;10461:524::-;10499:6;;;;;;;;;;;:60;;;10560:8;;10570:9;;10581:5;10596;;;;;;;;;;;10604:17;10499:123;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10633:5;;;;;;;;;;;:16;;;10656:4;;;;;;;;;;;10633:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10686:1;10675:8;:12;;;;10708:4;;;;;;;;;;;10700:22;;;10729:4;;;;;;;;;;;10723:21;;;10753:4;10723:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10700:60;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10773:8;10810:3;10788:21;:25;;;;:::i;:::-;10784:2;:30;;;;:::i;:::-;10773:41;;10828:10;10843:4;;;;;;;;;;;:9;;10864:1;10860:3;:5;;;;:::i;:::-;10843:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10827:43;;;10882:10;10897:4;;;;;;;;;;;:9;;10914:3;10897:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10881:41;;;10943:5;:14;;;;;10952:5;10943:14;10935:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;10486:499;;;10461:524::o;2866:46::-;;;;;;;;;;;;;;;;;:::o;2645:18::-;;;;;;;;;;;;;:::o;3085:21::-;;;;;;;;;;;;;:::o;7205:146::-;7279:17;7318:7;:15;7326:6;7318:15;;;;;;;;;;;;;;;:25;7334:8;7318:25;;;;;;;;;;;;;;;;7311:32;;7205:146;;;;:::o;2589:21::-;;;;:::o;3826:157::-;3910:11;;;;;;;;;;;3896:25;;:10;:25;;;3888:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;3963:12;3951:9;:24;;;;3826:157;:::o;2755:19::-;;;;;;;;;;;;;:::o;2619:::-;;;;;;;;;;;;;:::o;3654:164::-;3724:8;;;;;;;;;;;3710:22;;:10;:22;;;3702:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;3781:1;3762:8;;:21;;;;;;;;;;;;;;;;;;3806:4;3794:9;;:16;;;;;;;;;;;;;;;;;;3654:164::o;2919:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;9991:462::-;10056:3;;;;;;;;;;;10049:10;;:3;:10;;;:34;;;;10078:4;10063:20;;:3;:20;;;10049:34;10046:73;;;10101:7;;10046:73;10154:1;10134:11;:16;10146:3;10134:16;;;;;;;;;;;;;;;;:21;:54;;;;10178:10;;10159:11;:16;10171:3;10159:16;;;;;;;;;;;;;;;;:29;10134:54;10131:116;;;10225:10;;10206:11;:16;10218:3;10206:16;;;;;;;;;;;;;;;:29;;;;10131:116;10259:9;10292:11;;10286:4;10272:8;:13;10281:3;10272:13;;;;;;;;;;;;;;;;:18;;;;:::i;:::-;10271:32;;;;:::i;:::-;10259:44;;10316:9;10341:11;:16;10353:3;10341:16;;;;;;;;;;;;;;;;10328:10;;:29;;;;:::i;:::-;10316:41;;10398:4;10392;10387;:9;;;;:::i;:::-;10386:16;;;;:::i;:::-;10368:8;:13;10377:3;10368:13;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;10435:10;;10416:11;:16;10428:3;10416:16;;;;;;;;;;;;;;;:29;;;;10033:420;;9991:462;;:::o;9441:542::-;9512:4;9530:8;9597:3;9589:6;9542:5;;;;;;;;;;;:14;;;9570:17;9580:6;9570:9;:17::i;:::-;9562:6;9558:3;:10;;;;:::i;:::-;9557:30;;;;:::i;:::-;9542:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;;;:::i;:::-;9541:59;;;;:::i;:::-;9530:70;;9646:1;9616:11;:26;9636:4;9616:26;;;;;;;;;;;;;;;;:31;9613:103;;;9694:10;;9665:11;:26;9685:4;9665:26;;;;;;;;;;;;;;;:39;;;;9613:103;9728:9;9751:11;;9745:4;9741:3;:8;;;;:::i;:::-;9740:22;;;;:::i;:::-;9728:34;;9775:9;9800:11;:26;9820:4;9800:26;;;;;;;;;;;;;;;;9787:10;;:39;;;;:::i;:::-;9775:51;;9864:4;9858;9853;:9;;;;:::i;:::-;9852:16;;;;:::i;:::-;9837:10;;:32;;;;;;;:::i;:::-;;;;;;;;9911:10;;9882:11;:26;9902:4;9882:26;;;;;;;;;;;;;;;:39;;;;9949:3;9934:11;;:18;;;;;;;:::i;:::-;;;;;;;;9972:3;9965:10;;;;;9441:542;;;;:::o;7866:219::-;7921:4;7939:8;7974:3;7966:6;7951:14;;:21;;;;:::i;:::-;7950:27;;;;:::i;:::-;7939:38;;8000:3;7988:8;;:15;;;;;;;:::i;:::-;;;;;;;;8043:3;8016:8;:23;8033:4;8016:23;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8074:3;8067:10;;;7866:219;;;:::o;8501:185::-;8562:4;8580:8;8622:3;8614:6;8592:21;;:28;;;;:::i;:::-;8591:34;;;;:::i;:::-;8580:45;;8652:3;8638:10;;:17;;;;;;;:::i;:::-;;;;;;;;8675:3;8668:10;;;8501:185;;;:::o;8908:525::-;8962:4;8980:8;9011:3;9003:6;8992:10;;:17;;;;:::i;:::-;8991:23;;;;:::i;:::-;8980:34;;9052:3;9025:8;:23;9042:4;9025:23;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;9068:6;;;;;;;;;;;:60;;;9144:1;9134:8;;9130:3;:12;;;;:::i;:::-;9129:16;;;;:::i;:::-;9147:1;9150:5;9165;;;;;;;;;;;9173:17;9068:123;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9202:5;;;;;;;;;;;:16;;;9225:4;;;;;;;;;;;9202:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9244:6;;;;;;;;;;;:19;;;9272:4;9279;;;;;;;;;;;9300:1;9290:8;;9286:3;:12;;;;:::i;:::-;9285:16;;;;:::i;:::-;9309:4;;;;;;;;;;;9303:21;;;9333:4;9303:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9341:1;9344;9355;9359:17;9244:133;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9401:1;9390:8;:12;;;;9422:3;9415:10;;;8908:525;;;:::o;8093:209::-;8147:4;8165:8;8199:3;8191:6;8177:13;;:20;;;;:::i;:::-;8176:26;;;;:::i;:::-;8165:37;;8225:3;8213:8;;:15;;;;;;;:::i;:::-;;;;;;;;8268:3;8241:8;:23;8258:4;8241:23;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8291:3;8284:10;;;8093:209;;;:::o;8310:183::-;8370:4;8388:8;8429:3;8421:6;8400:20;;:27;;;;:::i;:::-;8399:33;;;;:::i;:::-;8388:44;;8459:3;8445:10;;:17;;;;;;;:::i;:::-;;;;;;;;8482:3;8475:10;;;8310:183;;;:::o;8694:206::-;8747:4;8765:8;8795:3;8787:6;8777:9;;:16;;;;:::i;:::-;8776:22;;;;:::i;:::-;8765:33;;8823:3;8811:8;;:15;;;;;;;:::i;:::-;;;;;;;;8864:3;8837:8;:23;8854:4;8837:23;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8887:3;8880:10;;;8694:206;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:133::-;195:5;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;152:133;;;;:::o;291:137::-;345:5;376:6;370:13;361:22;;392:30;416:5;392:30;:::i;:::-;291:137;;;;:::o;434:167::-;494:5;532:6;519:20;510:29;;548:47;589:5;548:47;:::i;:::-;434:167;;;;:::o;607:139::-;653:5;691:6;678:20;669:29;;707:33;734:5;707:33;:::i;:::-;607:139;;;;:::o;752:143::-;809:5;840:6;834:13;825:22;;856:33;883:5;856:33;:::i;:::-;752:143;;;;:::o;901:329::-;960:6;1009:2;997:9;988:7;984:23;980:32;977:119;;;1015:79;;:::i;:::-;977:119;1135:1;1160:53;1205:7;1196:6;1185:9;1181:22;1160:53;:::i;:::-;1150:63;;1106:117;901:329;;;;:::o;1236:474::-;1304:6;1312;1361:2;1349:9;1340:7;1336:23;1332:32;1329:119;;;1367:79;;:::i;:::-;1329:119;1487:1;1512:53;1557:7;1548:6;1537:9;1533:22;1512:53;:::i;:::-;1502:63;;1458:117;1614:2;1640:53;1685:7;1676:6;1665:9;1661:22;1640:53;:::i;:::-;1630:63;;1585:118;1236:474;;;;;:::o;1716:619::-;1793:6;1801;1809;1858:2;1846:9;1837:7;1833:23;1829:32;1826:119;;;1864:79;;:::i;:::-;1826:119;1984:1;2009:53;2054:7;2045:6;2034:9;2030:22;2009:53;:::i;:::-;1999:63;;1955:117;2111:2;2137:53;2182:7;2173:6;2162:9;2158:22;2137:53;:::i;:::-;2127:63;;2082:118;2239:2;2265:53;2310:7;2301:6;2290:9;2286:22;2265:53;:::i;:::-;2255:63;;2210:118;1716:619;;;;;:::o;2341:468::-;2406:6;2414;2463:2;2451:9;2442:7;2438:23;2434:32;2431:119;;;2469:79;;:::i;:::-;2431:119;2589:1;2614:53;2659:7;2650:6;2639:9;2635:22;2614:53;:::i;:::-;2604:63;;2560:117;2716:2;2742:50;2784:7;2775:6;2764:9;2760:22;2742:50;:::i;:::-;2732:60;;2687:115;2341:468;;;;;:::o;2815:474::-;2883:6;2891;2940:2;2928:9;2919:7;2915:23;2911:32;2908:119;;;2946:79;;:::i;:::-;2908:119;3066:1;3091:53;3136:7;3127:6;3116:9;3112:22;3091:53;:::i;:::-;3081:63;;3037:117;3193:2;3219:53;3264:7;3255:6;3244:9;3240:22;3219:53;:::i;:::-;3209:63;;3164:118;2815:474;;;;;:::o;3295:345::-;3362:6;3411:2;3399:9;3390:7;3386:23;3382:32;3379:119;;;3417:79;;:::i;:::-;3379:119;3537:1;3562:61;3615:7;3606:6;3595:9;3591:22;3562:61;:::i;:::-;3552:71;;3508:125;3295:345;;;;:::o;3646:357::-;3719:6;3768:2;3756:9;3747:7;3743:23;3739:32;3736:119;;;3774:79;;:::i;:::-;3736:119;3894:1;3919:67;3978:7;3969:6;3958:9;3954:22;3919:67;:::i;:::-;3909:77;;3865:131;3646:357;;;;:::o;4009:329::-;4068:6;4117:2;4105:9;4096:7;4092:23;4088:32;4085:119;;;4123:79;;:::i;:::-;4085:119;4243:1;4268:53;4313:7;4304:6;4293:9;4289:22;4268:53;:::i;:::-;4258:63;;4214:117;4009:329;;;;:::o;4344:351::-;4414:6;4463:2;4451:9;4442:7;4438:23;4434:32;4431:119;;;4469:79;;:::i;:::-;4431:119;4589:1;4614:64;4670:7;4661:6;4650:9;4646:22;4614:64;:::i;:::-;4604:74;;4560:128;4344:351;;;;:::o;4701:663::-;4789:6;4797;4805;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:64;5061:7;5052:6;5041:9;5037:22;5005:64;:::i;:::-;4995:74;;4951:128;5118:2;5144:64;5200:7;5191:6;5180:9;5176:22;5144:64;:::i;:::-;5134:74;;5089:129;5257:2;5283:64;5339:7;5330:6;5319:9;5315:22;5283:64;:::i;:::-;5273:74;;5228:129;4701:663;;;;;:::o;5370:179::-;5439:10;5460:46;5502:3;5494:6;5460:46;:::i;:::-;5538:4;5533:3;5529:14;5515:28;;5370:179;;;;:::o;5555:108::-;5632:24;5650:5;5632:24;:::i;:::-;5627:3;5620:37;5555:108;;:::o;5669:118::-;5756:24;5774:5;5756:24;:::i;:::-;5751:3;5744:37;5669:118;;:::o;5823:751::-;5939:3;5968:51;6013:5;5968:51;:::i;:::-;6035:86;6114:6;6109:3;6035:86;:::i;:::-;6028:93;;6145:53;6192:5;6145:53;:::i;:::-;6221:7;6252:1;6237:312;6262:6;6259:1;6256:13;6237:312;;;6332:44;6369:6;6332:44;:::i;:::-;6396:63;6455:3;6440:13;6396:63;:::i;:::-;6389:70;;6482:57;6532:6;6482:57;:::i;:::-;6472:67;;6297:252;6284:1;6281;6277:9;6272:14;;6237:312;;;6241:14;6565:3;6558:10;;5944:630;;;5823:751;;;;:::o;6580:109::-;6661:21;6676:5;6661:21;:::i;:::-;6656:3;6649:34;6580:109;;:::o;6695:159::-;6796:51;6841:5;6796:51;:::i;:::-;6791:3;6784:64;6695:159;;:::o;6860:::-;6961:51;7006:5;6961:51;:::i;:::-;6956:3;6949:64;6860:159;;:::o;7025:::-;7126:51;7171:5;7126:51;:::i;:::-;7121:3;7114:64;7025:159;;:::o;7190:147::-;7285:45;7324:5;7285:45;:::i;:::-;7280:3;7273:58;7190:147;;:::o;7343:364::-;7431:3;7459:39;7492:5;7459:39;:::i;:::-;7514:71;7578:6;7573:3;7514:71;:::i;:::-;7507:78;;7594:52;7639:6;7634:3;7627:4;7620:5;7616:16;7594:52;:::i;:::-;7671:29;7693:6;7671:29;:::i;:::-;7666:3;7662:39;7655:46;;7435:272;7343:364;;;;:::o;7713:366::-;7855:3;7876:67;7940:2;7935:3;7876:67;:::i;:::-;7869:74;;7952:93;8041:3;7952:93;:::i;:::-;8070:2;8065:3;8061:12;8054:19;;7713:366;;;:::o;8085:::-;8227:3;8248:67;8312:2;8307:3;8248:67;:::i;:::-;8241:74;;8324:93;8413:3;8324:93;:::i;:::-;8442:2;8437:3;8433:12;8426:19;;8085:366;;;:::o;8457:::-;8599:3;8620:67;8684:2;8679:3;8620:67;:::i;:::-;8613:74;;8696:93;8785:3;8696:93;:::i;:::-;8814:2;8809:3;8805:12;8798:19;;8457:366;;;:::o;8829:::-;8971:3;8992:67;9056:2;9051:3;8992:67;:::i;:::-;8985:74;;9068:93;9157:3;9068:93;:::i;:::-;9186:2;9181:3;9177:12;9170:19;;8829:366;;;:::o;9201:::-;9343:3;9364:67;9428:2;9423:3;9364:67;:::i;:::-;9357:74;;9440:93;9529:3;9440:93;:::i;:::-;9558:2;9553:3;9549:12;9542:19;;9201:366;;;:::o;9573:398::-;9732:3;9753:83;9834:1;9829:3;9753:83;:::i;:::-;9746:90;;9845:93;9934:3;9845:93;:::i;:::-;9963:1;9958:3;9954:11;9947:18;;9573:398;;;:::o;9977:366::-;10119:3;10140:67;10204:2;10199:3;10140:67;:::i;:::-;10133:74;;10216:93;10305:3;10216:93;:::i;:::-;10334:2;10329:3;10325:12;10318:19;;9977:366;;;:::o;10349:::-;10491:3;10512:67;10576:2;10571:3;10512:67;:::i;:::-;10505:74;;10588:93;10677:3;10588:93;:::i;:::-;10706:2;10701:3;10697:12;10690:19;;10349:366;;;:::o;10721:::-;10863:3;10884:67;10948:2;10943:3;10884:67;:::i;:::-;10877:74;;10960:93;11049:3;10960:93;:::i;:::-;11078:2;11073:3;11069:12;11062:19;;10721:366;;;:::o;11093:::-;11235:3;11256:67;11320:2;11315:3;11256:67;:::i;:::-;11249:74;;11332:93;11421:3;11332:93;:::i;:::-;11450:2;11445:3;11441:12;11434:19;;11093:366;;;:::o;11465:118::-;11552:24;11570:5;11552:24;:::i;:::-;11547:3;11540:37;11465:118;;:::o;11589:112::-;11672:22;11688:5;11672:22;:::i;:::-;11667:3;11660:35;11589:112;;:::o;11707:379::-;11891:3;11913:147;12056:3;11913:147;:::i;:::-;11906:154;;12077:3;12070:10;;11707:379;;;:::o;12092:222::-;12185:4;12223:2;12212:9;12208:18;12200:26;;12236:71;12304:1;12293:9;12289:17;12280:6;12236:71;:::i;:::-;12092:222;;;;:::o;12320:1029::-;12625:4;12663:3;12652:9;12648:19;12640:27;;12677:71;12745:1;12734:9;12730:17;12721:6;12677:71;:::i;:::-;12758:72;12826:2;12815:9;12811:18;12802:6;12758:72;:::i;:::-;12840;12908:2;12897:9;12893:18;12884:6;12840:72;:::i;:::-;12922;12990:2;12979:9;12975:18;12966:6;12922:72;:::i;:::-;13004:81;13080:3;13069:9;13065:19;13056:6;13004:81;:::i;:::-;13095;13171:3;13160:9;13156:19;13147:6;13095:81;:::i;:::-;13186:73;13254:3;13243:9;13239:19;13230:6;13186:73;:::i;:::-;13269;13337:3;13326:9;13322:19;13313:6;13269:73;:::i;:::-;12320:1029;;;;;;;;;;;:::o;13355:332::-;13476:4;13514:2;13503:9;13499:18;13491:26;;13527:71;13595:1;13584:9;13580:17;13571:6;13527:71;:::i;:::-;13608:72;13676:2;13665:9;13661:18;13652:6;13608:72;:::i;:::-;13355:332;;;;;:::o;13693:210::-;13780:4;13818:2;13807:9;13803:18;13795:26;;13831:65;13893:1;13882:9;13878:17;13869:6;13831:65;:::i;:::-;13693:210;;;;:::o;13909:250::-;14016:4;14054:2;14043:9;14039:18;14031:26;;14067:85;14149:1;14138:9;14134:17;14125:6;14067:85;:::i;:::-;13909:250;;;;:::o;14165:::-;14272:4;14310:2;14299:9;14295:18;14287:26;;14323:85;14405:1;14394:9;14390:17;14381:6;14323:85;:::i;:::-;14165:250;;;;:::o;14421:::-;14528:4;14566:2;14555:9;14551:18;14543:26;;14579:85;14661:1;14650:9;14646:17;14637:6;14579:85;:::i;:::-;14421:250;;;;:::o;14677:313::-;14790:4;14828:2;14817:9;14813:18;14805:26;;14877:9;14871:4;14867:20;14863:1;14852:9;14848:17;14841:47;14905:78;14978:4;14969:6;14905:78;:::i;:::-;14897:86;;14677:313;;;;:::o;14996:419::-;15162:4;15200:2;15189:9;15185:18;15177:26;;15249:9;15243:4;15239:20;15235:1;15224:9;15220:17;15213:47;15277:131;15403:4;15277:131;:::i;:::-;15269:139;;14996:419;;;:::o;15421:::-;15587:4;15625:2;15614:9;15610:18;15602:26;;15674:9;15668:4;15664:20;15660:1;15649:9;15645:17;15638:47;15702:131;15828:4;15702:131;:::i;:::-;15694:139;;15421:419;;;:::o;15846:::-;16012:4;16050:2;16039:9;16035:18;16027:26;;16099:9;16093:4;16089:20;16085:1;16074:9;16070:17;16063:47;16127:131;16253:4;16127:131;:::i;:::-;16119:139;;15846:419;;;:::o;16271:::-;16437:4;16475:2;16464:9;16460:18;16452:26;;16524:9;16518:4;16514:20;16510:1;16499:9;16495:17;16488:47;16552:131;16678:4;16552:131;:::i;:::-;16544:139;;16271:419;;;:::o;16696:::-;16862:4;16900:2;16889:9;16885:18;16877:26;;16949:9;16943:4;16939:20;16935:1;16924:9;16920:17;16913:47;16977:131;17103:4;16977:131;:::i;:::-;16969:139;;16696:419;;;:::o;17121:::-;17287:4;17325:2;17314:9;17310:18;17302:26;;17374:9;17368:4;17364:20;17360:1;17349:9;17345:17;17338:47;17402:131;17528:4;17402:131;:::i;:::-;17394:139;;17121:419;;;:::o;17546:::-;17712:4;17750:2;17739:9;17735:18;17727:26;;17799:9;17793:4;17789:20;17785:1;17774:9;17770:17;17763:47;17827:131;17953:4;17827:131;:::i;:::-;17819:139;;17546:419;;;:::o;17971:::-;18137:4;18175:2;18164:9;18160:18;18152:26;;18224:9;18218:4;18214:20;18210:1;18199:9;18195:17;18188:47;18252:131;18378:4;18252:131;:::i;:::-;18244:139;;17971:419;;;:::o;18396:::-;18562:4;18600:2;18589:9;18585:18;18577:26;;18649:9;18643:4;18639:20;18635:1;18624:9;18620:17;18613:47;18677:131;18803:4;18677:131;:::i;:::-;18669:139;;18396:419;;;:::o;18821:222::-;18914:4;18952:2;18941:9;18937:18;18929:26;;18965:71;19033:1;19022:9;19018:17;19009:6;18965:71;:::i;:::-;18821:222;;;;:::o;19049:825::-;19309:4;19347:3;19336:9;19332:19;19324:27;;19361:71;19429:1;19418:9;19414:17;19405:6;19361:71;:::i;:::-;19442:80;19518:2;19507:9;19503:18;19494:6;19442:80;:::i;:::-;19569:9;19563:4;19559:20;19554:2;19543:9;19539:18;19532:48;19597:105;19697:4;19688:6;19597:105;:::i;:::-;19589:113;;19712:72;19780:2;19769:9;19765:18;19756:6;19712:72;:::i;:::-;19794:73;19862:3;19851:9;19847:19;19838:6;19794:73;:::i;:::-;19049:825;;;;;;;;:::o;19880:809::-;20132:4;20170:3;20159:9;20155:19;20147:27;;20184:71;20252:1;20241:9;20237:17;20228:6;20184:71;:::i;:::-;20265:72;20333:2;20322:9;20318:18;20309:6;20265:72;:::i;:::-;20384:9;20378:4;20374:20;20369:2;20358:9;20354:18;20347:48;20412:105;20512:4;20503:6;20412:105;:::i;:::-;20404:113;;20527:72;20595:2;20584:9;20580:18;20571:6;20527:72;:::i;:::-;20609:73;20677:3;20666:9;20662:19;20653:6;20609:73;:::i;:::-;19880:809;;;;;;;;:::o;20695:214::-;20784:4;20822:2;20811:9;20807:18;20799:26;;20835:67;20899:1;20888:9;20884:17;20875:6;20835:67;:::i;:::-;20695:214;;;;:::o;20996:156::-;21060:4;21083:3;21075:11;;21106:3;21103:1;21096:14;21140:4;21137:1;21127:18;21119:26;;20996:156;;;:::o;21158:111::-;21222:6;21256:5;21250:12;21240:22;;21158:111;;;:::o;21275:99::-;21327:6;21361:5;21355:12;21345:22;;21275:99;;;:::o;21380:110::-;21447:4;21479;21474:3;21470:14;21462:22;;21380:110;;;:::o;21496:184::-;21595:11;21629:6;21624:3;21617:19;21669:4;21664:3;21660:14;21645:29;;21496:184;;;;:::o;21686:147::-;21787:11;21824:3;21809:18;;21686:147;;;;:::o;21839:169::-;21923:11;21957:6;21952:3;21945:19;21997:4;21992:3;21988:14;21973:29;;21839:169;;;;:::o;22014:305::-;22054:3;22073:20;22091:1;22073:20;:::i;:::-;22068:25;;22107:20;22125:1;22107:20;:::i;:::-;22102:25;;22261:1;22193:66;22189:74;22186:1;22183:81;22180:107;;;22267:18;;:::i;:::-;22180:107;22311:1;22308;22304:9;22297:16;;22014:305;;;;:::o;22325:185::-;22365:1;22382:20;22400:1;22382:20;:::i;:::-;22377:25;;22416:20;22434:1;22416:20;:::i;:::-;22411:25;;22455:1;22445:35;;22460:18;;:::i;:::-;22445:35;22502:1;22499;22495:9;22490:14;;22325:185;;;;:::o;22516:348::-;22556:7;22579:20;22597:1;22579:20;:::i;:::-;22574:25;;22613:20;22631:1;22613:20;:::i;:::-;22608:25;;22801:1;22733:66;22729:74;22726:1;22723:81;22718:1;22711:9;22704:17;22700:105;22697:131;;;22808:18;;:::i;:::-;22697:131;22856:1;22853;22849:9;22838:20;;22516:348;;;;:::o;22870:191::-;22910:4;22930:20;22948:1;22930:20;:::i;:::-;22925:25;;22964:20;22982:1;22964:20;:::i;:::-;22959:25;;23003:1;23000;22997:8;22994:34;;;23008:18;;:::i;:::-;22994:34;23053:1;23050;23046:9;23038:17;;22870:191;;;;:::o;23067:139::-;23117:7;23157:42;23150:5;23146:54;23135:65;;23067:139;;;:::o;23212:96::-;23249:7;23278:24;23296:5;23278:24;:::i;:::-;23267:35;;23212:96;;;:::o;23314:90::-;23348:7;23391:5;23384:13;23377:21;23366:32;;23314:90;;;:::o;23410:110::-;23461:7;23490:24;23508:5;23490:24;:::i;:::-;23479:35;;23410:110;;;:::o;23526:126::-;23563:7;23603:42;23596:5;23592:54;23581:65;;23526:126;;;:::o;23658:77::-;23695:7;23724:5;23713:16;;23658:77;;;:::o;23741:86::-;23776:7;23816:4;23809:5;23805:16;23794:27;;23741:86;;;:::o;23833:140::-;23897:9;23930:37;23961:5;23930:37;:::i;:::-;23917:50;;23833:140;;;:::o;23979:::-;24043:9;24076:37;24107:5;24076:37;:::i;:::-;24063:50;;23979:140;;;:::o;24125:::-;24189:9;24222:37;24253:5;24222:37;:::i;:::-;24209:50;;24125:140;;;:::o;24271:121::-;24329:9;24362:24;24380:5;24362:24;:::i;:::-;24349:37;;24271:121;;;:::o;24398:126::-;24448:9;24481:37;24512:5;24481:37;:::i;:::-;24468:50;;24398:126;;;:::o;24530:113::-;24580:9;24613:24;24631:5;24613:24;:::i;:::-;24600:37;;24530:113;;;:::o;24649:307::-;24717:1;24727:113;24741:6;24738:1;24735:13;24727:113;;;24826:1;24821:3;24817:11;24811:18;24807:1;24802:3;24798:11;24791:39;24763:2;24760:1;24756:10;24751:15;;24727:113;;;24858:6;24855:1;24852:13;24849:101;;;24938:1;24929:6;24924:3;24920:16;24913:27;24849:101;24698:258;24649:307;;;:::o;24962:320::-;25006:6;25043:1;25037:4;25033:12;25023:22;;25090:1;25084:4;25080:12;25111:18;25101:81;;25167:4;25159:6;25155:17;25145:27;;25101:81;25229:2;25221:6;25218:14;25198:18;25195:38;25192:84;;;25248:18;;:::i;:::-;25192:84;25013:269;24962:320;;;:::o;25288:166::-;25357:5;25382:66;25413:34;25436:10;25413:34;:::i;:::-;25382:66;:::i;:::-;25373:75;;25288:166;;;:::o;25460:180::-;25508:77;25505:1;25498:88;25605:4;25602:1;25595:15;25629:4;25626:1;25619:15;25646:180;25694:77;25691:1;25684:88;25791:4;25788:1;25781:15;25815:4;25812:1;25805:15;25832:180;25880:77;25877:1;25870:88;25977:4;25974:1;25967:15;26001:4;25998:1;25991:15;26018:144;26073:5;26098:57;26149:4;26143:11;26098:57;:::i;:::-;26089:66;;26018:144;;;:::o;26291:117::-;26400:1;26397;26390:12;26414:102;26455:6;26506:2;26502:7;26497:2;26490:5;26486:14;26482:28;26472:38;;26414:102;;;:::o;26522:::-;26564:8;26611:5;26608:1;26604:13;26583:34;;26522:102;;;:::o;26630:227::-;26770:34;26766:1;26758:6;26754:14;26747:58;26839:10;26834:2;26826:6;26822:15;26815:35;26630:227;:::o;26863:164::-;27003:16;26999:1;26991:6;26987:14;26980:40;26863:164;:::o;27033:308::-;27173:34;27169:1;27161:6;27157:14;27150:58;27242:34;27237:2;27229:6;27225:15;27218:59;27311:22;27306:2;27298:6;27294:15;27287:47;27033:308;:::o;27347:165::-;27487:17;27483:1;27475:6;27471:14;27464:41;27347:165;:::o;27518:177::-;27658:29;27654:1;27646:6;27642:14;27635:53;27518:177;:::o;27701:114::-;;:::o;27821:311::-;27961:34;27957:1;27949:6;27945:14;27938:58;28030:34;28025:2;28017:6;28013:15;28006:59;28099:25;28094:2;28086:6;28082:15;28075:50;27821:311;:::o;28138:165::-;28278:17;28274:1;28266:6;28262:14;28255:41;28138:165;:::o;28309:162::-;28449:14;28445:1;28437:6;28433:14;28426:38;28309:162;:::o;28477:170::-;28617:22;28613:1;28605:6;28601:14;28594:46;28477:170;:::o;28653:122::-;28726:24;28744:5;28726:24;:::i;:::-;28719:5;28716:35;28706:63;;28765:1;28762;28755:12;28706:63;28653:122;:::o;28781:116::-;28851:21;28866:5;28851:21;:::i;:::-;28844:5;28841:32;28831:60;;28887:1;28884;28877:12;28831:60;28781:116;:::o;28903:150::-;28990:38;29022:5;28990:38;:::i;:::-;28983:5;28980:49;28970:77;;29043:1;29040;29033:12;28970:77;28903:150;:::o;29059:122::-;29132:24;29150:5;29132:24;:::i;:::-;29125:5;29122:35;29112:63;;29171:1;29168;29161:12;29112:63;29059:122;:::o

Swarm Source

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