ETH Price: $2,310.11 (+2.07%)

Contract

0x5171e86eaeD4a7cA9E2BB3c8ac155ABA43f025bF
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim104000802020-07-05 14:58:252080 days ago1593961105IN
0x5171e86e...A43f025bF
0.0000001 ETH0.0054022230

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
-104000802020-07-05 14:58:252080 days ago1593961105
0x5171e86e...A43f025bF
0.0000001 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
COMPfarming

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2020-07-05
*/

//cDAI-COMP-cUSDT COMPfarming//

pragma solidity ^0.5.0;
pragma experimental ABIEncoderV2;

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

contract Context {
    constructor () internal { }
    // solhint-disable-previous-line no-empty-blocks

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

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

contract ReentrancyGuard {
    uint256 private _guardCounter;

    constructor () internal {
        _guardCounter = 1;
    }

    modifier nonReentrant() {
        _guardCounter += 1;
        uint256 localCounter = _guardCounter;
        _;
        require(localCounter == _guardCounter, "ReentrancyGuard: reentrant call");
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () internal {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }
    function isOwner() public view returns (bool) {
        return _msgSender() == _owner;
    }
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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

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

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;

        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
    function toPayable(address account) internal pure returns (address payable) {
        return address(uint160(account));
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

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

library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }
    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }
    function safeApprove(IERC20 token, address spender, uint256 value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

contract Structs {
    struct Val {
        uint256 value;
    }

    enum ActionType {
      Deposit,   // supply tokens
      Withdraw,  // borrow tokens
      Transfer,  // transfer balance between accounts
      Buy,       // buy an amount of some token (externally)
      Sell,      // sell an amount of some token (externally)
      Trade,     // trade tokens against another account
      Liquidate, // liquidate an undercollateralized or expiring account
      Vaporize,  // use excess tokens to zero-out a completely negative account
      Call       // send arbitrary data to an address
    }

    enum AssetDenomination {
        Wei // the amount is denominated in wei
    }

    enum AssetReference {
        Delta // the amount is given as a delta from the current value
    }

    struct AssetAmount {
        bool sign; // true if positive
        AssetDenomination denomination;
        AssetReference ref;
        uint256 value;
    }

    struct ActionArgs {
        ActionType actionType;
        uint256 accountId;
        AssetAmount amount;
        uint256 primaryMarketId;
        uint256 secondaryMarketId;
        address otherAddress;
        uint256 otherAccountId;
        bytes data;
    }

    struct Info {
        address owner;  // The address that owns the account
        uint256 number; // A nonce that allows a single address to control many accounts
    }

    struct Wei {
        bool sign; // true if positive
        uint256 value;
    }
}

interface Compound {
  function mint(uint mintAmount) external returns (uint);
  function redeem(uint redeemTokens) external returns (uint);
  function borrow(uint borrowAmount) external returns (uint);
  function repayBorrow(uint repayAmount) external returns (uint);
}

interface Ceth {
  function mint() payable external;
  function redeem(uint redeemTokens) external returns (uint);
  function borrow(uint borrowAmount) external returns (uint);
  function repayBorrow(uint repayAmount) external returns (uint);
}

interface Comptroller {
    function enterMarkets(address[] calldata cTokens) external returns (uint[] memory);
    function checkMembership(address account, address cToken) external view returns (bool);
}

interface Wrapped {
  function withdraw(uint wad) external;
  function deposit() payable external;
}

interface Uniswap {
  function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
}

interface UniswapRouter {
  function swapExactTokensForTokens(
      uint amountIn,
      uint amountOutMin,
      address[] calldata path,
      address to,
      uint deadline
    ) external returns (uint[] memory amounts);
}

contract DyDx is Structs {
    function operate(Info[] memory, ActionArgs[] memory) public;
}

interface Balancer {
    function gulp(address token) external;
    function joinPool(uint poolAmountOut, uint[] calldata maxAmountsIn) external;
    function exitPool(uint poolAmountIn, uint[] calldata minAmountsOut) external;
}

contract COMPfarming is Structs, Ownable  {
  using SafeERC20 for IERC20;
  using Address for address;
  using SafeMath for uint256;

  constructor () public {

  }

  function claim() payable public {
    Wrapped(weth).deposit.value(address(this).balance)();
    IERC20(weth).approve(unirouter, uint(-1));

    address[] memory path3 = new address[](2);
        path3[0] = address(weth);
        path3[1] = address(dai);

    UniswapRouter(unirouter).swapExactTokensForTokens(1e6, 0, path3, address(this), now.add(1800));

    Uniswap(unirouter).swap(400e18, 0, address(this), abi.encode(msg.sender));
    IERC20(comp).transfer(msg.sender, IERC20(comp).balanceOf(address(this)));
  }

  address constant weth = address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
    address constant dai = address(0x6B175474E89094C44Da98b954EedeAC495271d0F);
    address constant usdc = address(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48);
    //address constant dai = address(0x6B175474E89094C44Da98b954EedeAC495271d0F);

    address constant unicomp = address(0xCFfDdeD873554F362Ac02f8Fb1f02E5ada10516f);
    address constant comp = address(0xc00e94Cb662C3520282E6f5717214004A7f26888);

    address constant cusdt = address(0xf650C3d88D12dB855b8bf7D11Be6C55A4e07dCC9);
    address constant usdt = address(0xdAC17F958D2ee523a2206206994597C13D831ec7);
    address constant dydx = address(0x1E0447b19BB6EcFdAe1e4AE1694b0C3659614e4e);
    address constant unirouter = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address constant cdai = address(0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643);

    // Uniswap flash loan callback, triggered to get the COMP, starter function
    function uniswapV2Call(address sender, uint amount0, uint amount1, bytes calldata data) external {
        // Got COMP, get rest of flash loans
        setup();
        uint256 _repay = amount0.add(amount0.mul(4).div(1320));
        IERC20(comp).transfer(address(unicomp), _repay);
    }

        // Flash loans all available amounts from dydx to make sure we have no limitations
    function setup() public {
        // Grab max dydx positions to fix what we can borrow (also used for repayment later)
        IERC20(weth).approve(dydx, uint(-1));

        uint256 _weth = IERC20(weth).balanceOf(dydx);

        ActionArgs[] memory args = new ActionArgs[](3);

        Info[] memory infos = new Info[](1);
        infos[0] = Info(address(this), 0);

        // Withdraw WETH
        ActionArgs memory _wweth;
        _wweth.actionType = ActionType.Withdraw;
        _wweth.accountId = 0;
        _wweth.amount = AssetAmount(false, AssetDenomination.Wei, AssetReference.Delta, _weth);
        _wweth.primaryMarketId = 0;
        _wweth.otherAddress = address(this);

        args[0] = _wweth;

        // Callback for this contract to deposit into compound, balancer, and withdraw COMP
        ActionArgs memory call;
        call.actionType = ActionType.Call;
        call.accountId = 0;
        call.otherAddress = address(this);

        args[1] = call;

        // Deposit wETH with 1 smallest denominination added
        ActionArgs memory _dweth;
        _dweth.actionType = ActionType.Deposit;
        _dweth.accountId = 0;
        _dweth.amount = AssetAmount(true, AssetDenomination.Wei, AssetReference.Delta, _weth.add(1));
        _dweth.primaryMarketId = 0;
        _dweth.otherAddress = address(this);

        args[2] = _dweth;

        // With the array populated of what we want to do (borrow DAI, USDC, wETH), callback function, repay, we can call dydx
        DyDx(dydx).operate(infos, args);
    }

    address constant ceth = address(0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5);
    address constant comptroller = address(0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B);

    uint256 usdtBorrow = 5000000;
    uint256 daiBorrow = 5000000;

    function () external payable {}

    // This function is called after we receive all the funds and before we repay all the funds, here we do
    // all the compound work and settle the funds to return
    function callFunction(
      address sender,
      Info memory accountInfo,
      bytes memory data
    ) public {

        uint256 _weth = IERC20(weth).balanceOf(address(this));
        // Convert WETH to ETH
        Wrapped(weth).withdraw(_weth);

        IERC20(usdt).approve(cusdt, uint256(-1));
        IERC20(dai).approve(cdai, uint256(-1));

        Ceth(ceth).mint.value(address(this).balance)();


        address[] memory markets = new address[](1);
        markets[0] = address(ceth);
        Comptroller(comptroller).enterMarkets(markets);

        Compound(cdai).borrow(daiBorrow.mul(1e18));
        Compound(cusdt).borrow(usdtBorrow.mul(1e8));

        Compound(cdai).mint(IERC20(dai).balanceOf(address(this)));

        redeemAll();

        Compound(cdai).redeem(IERC20(cdai).balanceOf(address(this)));

        Compound(cusdt).repayBorrow(uint256(-1));
        Compound(cdai).repayBorrow(uint256(-1));

        Compound(ceth).redeem(IERC20(ceth).balanceOf(address(this)));
        Wrapped(weth).deposit.value(address(this).balance)();
    }

    function redeemAll() internal {
        redeem(0xCBdc3BDf78C1dF509F94F1F52cc5c5C093d4322b);
    }

    function redeem(address pool) internal {

        IERC20(cdai).approve(pool, uint256(-1));
        IERC20(comp).approve(pool, uint256(-1));
        IERC20(usdt).approve(pool, uint256(-1));

        uint256 _bal = IERC20(comp).balanceOf(address(this));
        uint256 _pbal = IERC20(comp).balanceOf(pool);
        uint256 _total = IERC20(pool).totalSupply();
        uint256 _ratio = (((_total.mul(_bal)).div(_pbal)).mul(999)).div(1000);

        uint[] memory maxAmounts = new uint[](3);
            maxAmounts[0] = uint(-1);
            maxAmounts[1] = uint(-1);
            maxAmounts[2] = uint(-1);
        Balancer(pool).joinPool(_ratio, maxAmounts);

        Balancer(pool).gulp(comp);

        uint[] memory minAmounts = new uint[](3);
            minAmounts[0] = uint(0);
            minAmounts[1] = uint(0);
            minAmounts[2] = uint(0);
        Balancer(pool).exitPool(IERC20(pool).balanceOf(address(this)), minAmounts);
    }

    // incase of half-way error
  function inCaseTokenGetsStuck(IERC20 _TokenAddress) onlyOwner public {
      uint qty = _TokenAddress.balanceOf(address(this));
      _TokenAddress.safeTransfer(msg.sender, qty);
  }

  // incase of half-way error
  function inCaseETHGetsStuck() onlyOwner public{
      (bool result, ) = msg.sender.call.value(address(this).balance)("");
      require(result, "transfer of ETH failed");
  }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"number","type":"uint256"}],"internalType":"struct Structs.Info","name":"accountInfo","type":"tuple"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"callFunction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"inCaseETHGetsStuck","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC20","name":"_TokenAddress","type":"address"}],"name":"inCaseTokenGetsStuck","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"setup","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"uniswapV2Call","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

6080604052624c4b40600155624c4b406002553480156200001f57600080fd5b5062000030620000f160201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3620000f9565b600033905090565b613cef80620001096000396000f3fe6080604052600436106100915760003560e01c80638da5cb5b116100595780638da5cb5b1461012f5780638f32d59b1461015a578063ba0bba4014610185578063f2fde38b1461019c578063f60a15ed146101c557610091565b806310d1e85c146100935780632e8d6e18146100bc5780634e71d92d146100e5578063715018a6146100ef5780638b41871314610106575b005b34801561009f57600080fd5b506100ba60048036036100b59190810190612cdd565b6101dc565b005b3480156100c857600080fd5b506100e360048036036100de9190810190612dc7565b6102e0565b005b6100ed6103e3565b005b3480156100fb57600080fd5b506101046108cf565b005b34801561011257600080fd5b5061012d60048036036101289190810190612c76565b6109d5565b005b34801561013b57600080fd5b50610144611578565b60405161015191906135a1565b60405180910390f35b34801561016657600080fd5b5061016f6115a1565b60405161017c919061369d565b60405180910390f35b34801561019157600080fd5b5061019a6115ff565b005b3480156101a857600080fd5b506101c360048036036101be9190810190612c4d565b611b19565b005b3480156101d157600080fd5b506101da611b6c565b005b6101e46115ff565b6000610220610211610528610203600489611c6290919063ffffffff16565b611cd290919063ffffffff16565b86611d1c90919063ffffffff16565b905073c00e94cb662c3520282e6f5717214004a7f2688873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73cffdded873554f362ac02f8fb1f02e5ada10516f836040518363ffffffff1660e01b815260040161028592919061361b565b602060405180830381600087803b15801561029f57600080fd5b505af11580156102b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102d79190810190612d9e565b50505050505050565b6102e86115a1565b610327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031e90613820565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161036291906135bc565b60206040518083038186803b15801561037a57600080fd5b505afa15801561038e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103b29190810190612df0565b90506103df33828473ffffffffffffffffffffffffffffffffffffffff16611d719092919063ffffffff16565b5050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0476040518263ffffffff1660e01b81526004016000604051808303818588803b15801561043f57600080fd5b505af1158015610453573d6000803e3d6000fd5b505050505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016104db92919061361b565b602060405180830381600087803b1580156104f557600080fd5b505af1158015610509573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061052d9190810190612d9e565b50606060026040519080825280602002602001820160405280156105605781602001602082028038833980820191505090505b50905073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160008151811061058557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050736b175474e89094c44da98b954eedeac495271d0f816001815181106105e157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff166338ed1739620f42406000843061066861070842611d1c90919063ffffffff16565b6040518663ffffffff1660e01b81526004016106889594939291906136b8565b600060405180830381600087803b1580156106a257600080fd5b505af11580156106b6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506106df9190810190612d5d565b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f6815af1d78b58c4000006000303360405160200161072e91906135d7565b6040516020818303038152906040526040518563ffffffff1660e01b815260040161075c9493929190613712565b600060405180830381600087803b15801561077657600080fd5b505af115801561078a573d6000803e3d6000fd5b5050505073c00e94cb662c3520282e6f5717214004a7f2688873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3373c00e94cb662c3520282e6f5717214004a7f2688873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161080c91906135bc565b60206040518083038186803b15801561082457600080fd5b505afa158015610838573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061085c9190810190612df0565b6040518363ffffffff1660e01b81526004016108799291906135f2565b602060405180830381600087803b15801561089357600080fd5b505af11580156108a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108cb9190810190612d9e565b5050565b6108d76115a1565b610916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090d90613820565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a2491906135bc565b60206040518083038186803b158015610a3c57600080fd5b505afa158015610a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a749190810190612df0565b905073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610ac39190613880565b600060405180830381600087803b158015610add57600080fd5b505af1158015610af1573d6000803e3d6000fd5b5050505073dac17f958d2ee523a2206206994597c13d831ec773ffffffffffffffffffffffffffffffffffffffff1663095ea7b373f650c3d88d12db855b8bf7d11be6c55a4e07dcc97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610b7892919061361b565b602060405180830381600087803b158015610b9257600080fd5b505af1158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bca9190810190612d9e565b50736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3735d3a536e4d6dbd6114cc1ead35777bab948e36437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610c4e92919061361b565b602060405180830381600087803b158015610c6857600080fd5b505af1158015610c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ca09190810190612d9e565b50734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b476040518263ffffffff1660e01b81526004016000604051808303818588803b158015610cfd57600080fd5b505af1158015610d11573d6000803e3d6000fd5b505050505060606001604051908082528060200260200182016040528015610d485781602001602082028038833980820191505090505b509050734ddc2d193948926d02f9b1fe9e1daa0718270ed581600081518110610d6d57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050733d9819210a31b4961b30ef54be2aed79b9c9cd3b73ffffffffffffffffffffffffffffffffffffffff1663c2998238826040518263ffffffff1660e01b8152600401610df49190613644565b600060405180830381600087803b158015610e0e57600080fd5b505af1158015610e22573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610e4b9190810190612d5d565b50735d3a536e4d6dbd6114cc1ead35777bab948e364373ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec610e99670de0b6b3a7640000600254611c6290919063ffffffff16565b6040518263ffffffff1660e01b8152600401610eb59190613880565b602060405180830381600087803b158015610ecf57600080fd5b505af1158015610ee3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f079190810190612df0565b5073f650c3d88d12db855b8bf7d11be6c55a4e07dcc973ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec610f516305f5e100600154611c6290919063ffffffff16565b6040518263ffffffff1660e01b8152600401610f6d9190613880565b602060405180830381600087803b158015610f8757600080fd5b505af1158015610f9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fbf9190810190612df0565b50735d3a536e4d6dbd6114cc1ead35777bab948e364373ffffffffffffffffffffffffffffffffffffffff1663a0712d68736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161103d91906135bc565b60206040518083038186803b15801561105557600080fd5b505afa158015611069573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061108d9190810190612df0565b6040518263ffffffff1660e01b81526004016110a99190613880565b602060405180830381600087803b1580156110c357600080fd5b505af11580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110fb9190810190612df0565b50611104611e10565b735d3a536e4d6dbd6114cc1ead35777bab948e364373ffffffffffffffffffffffffffffffffffffffff1663db006a75735d3a536e4d6dbd6114cc1ead35777bab948e364373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161118191906135bc565b60206040518083038186803b15801561119957600080fd5b505afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111d19190810190612df0565b6040518263ffffffff1660e01b81526004016111ed9190613880565b602060405180830381600087803b15801561120757600080fd5b505af115801561121b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061123f9190810190612df0565b5073f650c3d88d12db855b8bf7d11be6c55a4e07dcc973ffffffffffffffffffffffffffffffffffffffff16630e7527027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518263ffffffff1660e01b81526004016112ad9190613880565b602060405180830381600087803b1580156112c757600080fd5b505af11580156112db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112ff9190810190612df0565b50735d3a536e4d6dbd6114cc1ead35777bab948e364373ffffffffffffffffffffffffffffffffffffffff16630e7527027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518263ffffffff1660e01b815260040161136d9190613880565b602060405180830381600087803b15801561138757600080fd5b505af115801561139b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113bf9190810190612df0565b50734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff1663db006a75734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161143d91906135bc565b60206040518083038186803b15801561145557600080fd5b505afa158015611469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061148d9190810190612df0565b6040518263ffffffff1660e01b81526004016114a99190613880565b602060405180830381600087803b1580156114c357600080fd5b505af11580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114fb9190810190612df0565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0476040518263ffffffff1660e01b81526004016000604051808303818588803b15801561155857600080fd5b505af115801561156c573d6000803e3d6000fd5b50505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115e3611e2f565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161168292919061361b565b602060405180830381600087803b15801561169c57600080fd5b505af11580156116b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116d49190810190612d9e565b50600073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a08231731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e6040518263ffffffff1660e01b815260040161173891906135a1565b60206040518083038186803b15801561175057600080fd5b505afa158015611764573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117889190810190612df0565b9050606060036040519080825280602002602001820160405280156117c757816020015b6117b4612931565b8152602001906001900390816117ac5790505b5090506060600160405190808252806020026020018201604052801561180757816020015b6117f461299d565b8152602001906001900390816117ec5790505b50905060405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200160008152508160008151811061184357fe5b60200260200101819052506118566129cd565b60018160000190600881111561186857fe5b9081600881111561187557fe5b81525050600081602001818152505060405180608001604052806000151581526020016000808111156118a457fe5b81526020016000808111156118b557fe5b81526020018581525081604001819052506000816060018181525050308160a0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808360008151811061191757fe5b602002602001018190525061192a6129cd565b60088160000190600881111561193c57fe5b9081600881111561194957fe5b815250506000816020018181525050308160a0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808460018151811061199e57fe5b60200260200101819052506119b16129cd565b6000816000019060088111156119c357fe5b908160088111156119d057fe5b81525050600081602001818152505060405180608001604052806001151581526020016000808111156119ff57fe5b8152602001600080811115611a1057fe5b8152602001611a29600189611d1c90919063ffffffff16565b81525081604001819052506000816060018181525050308160a0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508085600281518110611a8557fe5b6020026020010181905250731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e73ffffffffffffffffffffffffffffffffffffffff1663a67a6a4585876040518363ffffffff1660e01b8152600401611adf929190613666565b600060405180830381600087803b158015611af957600080fd5b505af1158015611b0d573d6000803e3d6000fd5b50505050505050505050565b611b216115a1565b611b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5790613820565b60405180910390fd5b611b6981611e37565b50565b611b746115a1565b611bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baa90613820565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611bd99061358c565b60006040518083038185875af1925050503d8060008114611c16576040519150601f19603f3d011682016040523d82523d6000602084013e611c1b565b606091505b5050905080611c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c56906137e0565b60405180910390fd5b50565b600080831415611c755760009050611ccc565b6000828402905082848281611c8657fe5b0414611cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbe90613800565b60405180910390fd5b809150505b92915050565b6000611d1483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f65565b905092915050565b600080828401905083811015611d67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5e906137a0565b60405180910390fd5b8091505092915050565b611e0b838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401611da992919061361b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611fc6565b505050565b611e2d73cbdc3bdf78c1df509f94f1f52cc5c5c093d4322b612138565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9e90613780565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083118290611fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa3919061375e565b60405180910390fd5b506000838581611fb857fe5b049050809150509392505050565b611fe58273ffffffffffffffffffffffffffffffffffffffff166128e6565b612024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201b90613860565b60405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161204d9190613575565b6000604051808303816000865af19150503d806000811461208a576040519150601f19603f3d011682016040523d82523d6000602084013e61208f565b606091505b5091509150816120d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cb906137c0565b60405180910390fd5b60008151111561213257808060200190516120f29190810190612d9e565b612131576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212890613840565b60405180910390fd5b5b50505050565b735d3a536e4d6dbd6114cc1ead35777bab948e364373ffffffffffffffffffffffffffffffffffffffff1663095ea7b3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016121a792919061361b565b602060405180830381600087803b1580156121c157600080fd5b505af11580156121d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121f99190810190612d9e565b5073c00e94cb662c3520282e6f5717214004a7f2688873ffffffffffffffffffffffffffffffffffffffff1663095ea7b3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161226992919061361b565b602060405180830381600087803b15801561228357600080fd5b505af1158015612297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122bb9190810190612d9e565b5073dac17f958d2ee523a2206206994597c13d831ec773ffffffffffffffffffffffffffffffffffffffff1663095ea7b3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161232b92919061361b565b602060405180830381600087803b15801561234557600080fd5b505af1158015612359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061237d9190810190612d9e565b50600073c00e94cb662c3520282e6f5717214004a7f2688873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016123cd91906135bc565b60206040518083038186803b1580156123e557600080fd5b505afa1580156123f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061241d9190810190612df0565b9050600073c00e94cb662c3520282e6f5717214004a7f2688873ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b815260040161246e91906135a1565b60206040518083038186803b15801561248657600080fd5b505afa15801561249a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124be9190810190612df0565b905060008373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561250857600080fd5b505afa15801561251c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125409190810190612df0565b905060006125916103e86125836103e7612575876125678a89611c6290919063ffffffff16565b611cd290919063ffffffff16565b611c6290919063ffffffff16565b611cd290919063ffffffff16565b9050606060036040519080825280602002602001820160405280156125c55781602001602082028038833980820191505090505b5090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff816000815181106125f657fe5b6020026020010181815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160018151811061263057fe5b6020026020010181815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160028151811061266a57fe5b6020026020010181815250508573ffffffffffffffffffffffffffffffffffffffff16634f69c0d483836040518363ffffffff1660e01b81526004016126b192919061389b565b600060405180830381600087803b1580156126cb57600080fd5b505af11580156126df573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff16638c28cbe873c00e94cb662c3520282e6f5717214004a7f268886040518263ffffffff1660e01b815260040161273091906135a1565b600060405180830381600087803b15801561274a57600080fd5b505af115801561275e573d6000803e3d6000fd5b50505050606060036040519080825280602002602001820160405280156127945781602001602082028038833980820191505090505b5090506000816000815181106127a657fe5b6020026020010181815250506000816001815181106127c157fe5b6020026020010181815250506000816002815181106127dc57fe5b6020026020010181815250508673ffffffffffffffffffffffffffffffffffffffff1663b02f0b738873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161283d91906135bc565b60206040518083038186803b15801561285557600080fd5b505afa158015612869573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061288d9190810190612df0565b836040518363ffffffff1660e01b81526004016128ab92919061389b565b600060405180830381600087803b1580156128c557600080fd5b505af11580156128d9573d6000803e3d6000fd5b5050505050505050505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156129285750808214155b92505050919050565b6040518061010001604052806000600881111561294a57fe5b81526020016000815260200161295e612a39565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b604051806101000160405280600060088111156129e657fe5b8152602001600081526020016129fa612a39565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b6040518060800160405280600015158152602001600080811115612a5957fe5b8152602001600080811115612a6a57fe5b8152602001600081525090565b600081359050612a8681613c50565b92915050565b600082601f830112612a9d57600080fd5b8151612ab0612aab826138f8565b6138cb565b91508181835260208401935060208101905083856020840282011115612ad557600080fd5b60005b83811015612b055781612aeb8882612c38565b845260208401935060208301925050600181019050612ad8565b5050505092915050565b600081519050612b1e81613c67565b92915050565b60008083601f840112612b3657600080fd5b8235905067ffffffffffffffff811115612b4f57600080fd5b602083019150836001820283011115612b6757600080fd5b9250929050565b600082601f830112612b7f57600080fd5b8135612b92612b8d82613920565b6138cb565b91508082526020830160208301858383011115612bae57600080fd5b612bb9838284613bd6565b50505092915050565b600081359050612bd181613c7e565b92915050565b600060408284031215612be957600080fd5b612bf360406138cb565b90506000612c0384828501612a77565b6000830152506020612c1784828501612c23565b60208301525092915050565b600081359050612c3281613c95565b92915050565b600081519050612c4781613c95565b92915050565b600060208284031215612c5f57600080fd5b6000612c6d84828501612a77565b91505092915050565b600080600060808486031215612c8b57600080fd5b6000612c9986828701612a77565b9350506020612caa86828701612bd7565b925050606084013567ffffffffffffffff811115612cc757600080fd5b612cd386828701612b6e565b9150509250925092565b600080600080600060808688031215612cf557600080fd5b6000612d0388828901612a77565b9550506020612d1488828901612c23565b9450506040612d2588828901612c23565b935050606086013567ffffffffffffffff811115612d4257600080fd5b612d4e88828901612b24565b92509250509295509295909350565b600060208284031215612d6f57600080fd5b600082015167ffffffffffffffff811115612d8957600080fd5b612d9584828501612a8c565b91505092915050565b600060208284031215612db057600080fd5b6000612dbe84828501612b0f565b91505092915050565b600060208284031215612dd957600080fd5b6000612de784828501612bc2565b91505092915050565b600060208284031215612e0257600080fd5b6000612e1084828501612c38565b91505092915050565b6000612e258383612e93565b60208301905092915050565b6000612e3d8383613420565b905092915050565b6000612e518383613528565b60408301905092915050565b6000612e698383613557565b60208301905092915050565b612e7e81613b34565b82525050565b612e8d81613aa1565b82525050565b612e9c81613a8f565b82525050565b612eab81613a8f565b82525050565b6000612ebc8261398c565b612ec68185613a0d565b9350612ed18361394c565b8060005b83811015612f02578151612ee98882612e19565b9750612ef4836139d9565b925050600181019050612ed5565b5085935050505092915050565b6000612f1a82613997565b612f248185613a1e565b935083602082028501612f368561395c565b8060005b85811015612f725784840389528151612f538582612e31565b9450612f5e836139e6565b925060208a01995050600181019050612f3a565b50829750879550505050505092915050565b6000612f8f826139a2565b612f998185613a2f565b9350612fa48361396c565b8060005b83811015612fd5578151612fbc8882612e45565b9750612fc7836139f3565b925050600181019050612fa8565b5085935050505092915050565b6000612fed826139ad565b612ff78185613a40565b93506130028361397c565b8060005b8381101561303357815161301a8882612e5d565b975061302583613a00565b925050600181019050613006565b5085935050505092915050565b61304981613ab3565b82525050565b61305881613ab3565b82525050565b6000613069826139c3565b6130738185613a62565b9350613083818560208601613be5565b61308c81613c18565b840191505092915050565b60006130a2826139c3565b6130ac8185613a73565b93506130bc818560208601613be5565b80840191505092915050565b60006130d3826139b8565b6130dd8185613a51565b93506130ed818560208601613be5565b6130f681613c18565b840191505092915050565b61310a81613b46565b82525050565b61311981613b58565b82525050565b61312881613b6a565b82525050565b61313781613b7c565b82525050565b61314681613b8e565b82525050565b61315581613ba0565b82525050565b6000613166826139ce565b6131708185613a7e565b9350613180818560208601613be5565b61318981613c18565b840191505092915050565b60006131a1602683613a7e565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613207601b83613a7e565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613247602083613a7e565b91507f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646000830152602082019050919050565b6000613287601683613a7e565b91507f7472616e73666572206f6620455448206661696c6564000000000000000000006000830152602082019050919050565b60006132c7602183613a7e565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061332d602083613a7e565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061336d600083613a73565b9150600082019050919050565b6000613387602a83613a7e565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b60006133ed601f83613a7e565b91507f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374006000830152602082019050919050565b6000610160830160008301516134396000860182613101565b50602083015161344c6020860182613557565b50604083015161345f60408601826134d3565b50606083015161347260c0860182613557565b50608083015161348560e0860182613557565b5060a0830151613499610100860182612e93565b5060c08301516134ad610120860182613557565b5060e08301518482036101408601526134c682826130c8565b9150508091505092915050565b6080820160008201516134e96000850182613040565b5060208201516134fc6020850182613110565b50604082015161350f604085018261311f565b5060608201516135226060850182613557565b50505050565b60408201600082015161353e6000850182612e93565b5060208201516135516020850182613557565b50505050565b61356081613b2a565b82525050565b61356f81613b2a565b82525050565b60006135818284613097565b915081905092915050565b600061359782613360565b9150819050919050565b60006020820190506135b66000830184612ea2565b92915050565b60006020820190506135d16000830184612e75565b92915050565b60006020820190506135ec6000830184612e84565b92915050565b60006040820190506136076000830185612e75565b6136146020830184613566565b9392505050565b60006040820190506136306000830185612ea2565b61363d6020830184613566565b9392505050565b6000602082019050818103600083015261365e8184612eb1565b905092915050565b600060408201905081810360008301526136808185612f84565b905081810360208301526136948184612f0f565b90509392505050565b60006020820190506136b2600083018461304f565b92915050565b600060a0820190506136cd600083018861313d565b6136da602083018761312e565b81810360408301526136ec8186612eb1565b90506136fb6060830185612e75565b6137086080830184613566565b9695505050505050565b6000608082019050613727600083018761314c565b613734602083018661312e565b6137416040830185612e75565b8181036060830152613753818461305e565b905095945050505050565b60006020820190508181036000830152613778818461315b565b905092915050565b6000602082019050818103600083015261379981613194565b9050919050565b600060208201905081810360008301526137b9816131fa565b9050919050565b600060208201905081810360008301526137d98161323a565b9050919050565b600060208201905081810360008301526137f98161327a565b9050919050565b60006020820190508181036000830152613819816132ba565b9050919050565b6000602082019050818103600083015261383981613320565b9050919050565b600060208201905081810360008301526138598161337a565b9050919050565b60006020820190508181036000830152613879816133e0565b9050919050565b60006020820190506138956000830184613566565b92915050565b60006040820190506138b06000830185613566565b81810360208301526138c28184612fe2565b90509392505050565b6000604051905081810181811067ffffffffffffffff821117156138ee57600080fd5b8060405250919050565b600067ffffffffffffffff82111561390f57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561393757600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613a9a82613b0a565b9050919050565b6000613aac82613b0a565b9050919050565b60008115159050919050565b6000613aca82613a8f565b9050919050565b6000819050613adf82613c29565b919050565b6000819050613af282613c36565b919050565b6000819050613b0582613c43565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613b3f82613bb2565b9050919050565b6000613b5182613ad1565b9050919050565b6000613b6382613ae4565b9050919050565b6000613b7582613af7565b9050919050565b6000613b8782613b2a565b9050919050565b6000613b9982613b2a565b9050919050565b6000613bab82613b2a565b9050919050565b6000613bbd82613bc4565b9050919050565b6000613bcf82613b0a565b9050919050565b82818337600083830152505050565b60005b83811015613c03578082015181840152602081019050613be8565b83811115613c12576000848401525b50505050565b6000601f19601f8301169050919050565b60098110613c3357fe5b50565b60018110613c4057fe5b50565b60018110613c4d57fe5b50565b613c5981613a8f565b8114613c6457600080fd5b50565b613c7081613ab3565b8114613c7b57600080fd5b50565b613c8781613abf565b8114613c9257600080fd5b50565b613c9e81613b2a565b8114613ca957600080fd5b5056fea365627a7a72315820f42d1f7381f5d13765a59afb35775476f9e517117c6ac0c2b99afabfeb5554006c6578706572696d656e74616cf564736f6c63430005110040

Deployed Bytecode

0x6080604052600436106100915760003560e01c80638da5cb5b116100595780638da5cb5b1461012f5780638f32d59b1461015a578063ba0bba4014610185578063f2fde38b1461019c578063f60a15ed146101c557610091565b806310d1e85c146100935780632e8d6e18146100bc5780634e71d92d146100e5578063715018a6146100ef5780638b41871314610106575b005b34801561009f57600080fd5b506100ba60048036036100b59190810190612cdd565b6101dc565b005b3480156100c857600080fd5b506100e360048036036100de9190810190612dc7565b6102e0565b005b6100ed6103e3565b005b3480156100fb57600080fd5b506101046108cf565b005b34801561011257600080fd5b5061012d60048036036101289190810190612c76565b6109d5565b005b34801561013b57600080fd5b50610144611578565b60405161015191906135a1565b60405180910390f35b34801561016657600080fd5b5061016f6115a1565b60405161017c919061369d565b60405180910390f35b34801561019157600080fd5b5061019a6115ff565b005b3480156101a857600080fd5b506101c360048036036101be9190810190612c4d565b611b19565b005b3480156101d157600080fd5b506101da611b6c565b005b6101e46115ff565b6000610220610211610528610203600489611c6290919063ffffffff16565b611cd290919063ffffffff16565b86611d1c90919063ffffffff16565b905073c00e94cb662c3520282e6f5717214004a7f2688873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73cffdded873554f362ac02f8fb1f02e5ada10516f836040518363ffffffff1660e01b815260040161028592919061361b565b602060405180830381600087803b15801561029f57600080fd5b505af11580156102b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102d79190810190612d9e565b50505050505050565b6102e86115a1565b610327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031e90613820565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161036291906135bc565b60206040518083038186803b15801561037a57600080fd5b505afa15801561038e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103b29190810190612df0565b90506103df33828473ffffffffffffffffffffffffffffffffffffffff16611d719092919063ffffffff16565b5050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0476040518263ffffffff1660e01b81526004016000604051808303818588803b15801561043f57600080fd5b505af1158015610453573d6000803e3d6000fd5b505050505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016104db92919061361b565b602060405180830381600087803b1580156104f557600080fd5b505af1158015610509573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061052d9190810190612d9e565b50606060026040519080825280602002602001820160405280156105605781602001602082028038833980820191505090505b50905073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160008151811061058557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050736b175474e89094c44da98b954eedeac495271d0f816001815181106105e157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff166338ed1739620f42406000843061066861070842611d1c90919063ffffffff16565b6040518663ffffffff1660e01b81526004016106889594939291906136b8565b600060405180830381600087803b1580156106a257600080fd5b505af11580156106b6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506106df9190810190612d5d565b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f6815af1d78b58c4000006000303360405160200161072e91906135d7565b6040516020818303038152906040526040518563ffffffff1660e01b815260040161075c9493929190613712565b600060405180830381600087803b15801561077657600080fd5b505af115801561078a573d6000803e3d6000fd5b5050505073c00e94cb662c3520282e6f5717214004a7f2688873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3373c00e94cb662c3520282e6f5717214004a7f2688873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161080c91906135bc565b60206040518083038186803b15801561082457600080fd5b505afa158015610838573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061085c9190810190612df0565b6040518363ffffffff1660e01b81526004016108799291906135f2565b602060405180830381600087803b15801561089357600080fd5b505af11580156108a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108cb9190810190612d9e565b5050565b6108d76115a1565b610916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090d90613820565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a2491906135bc565b60206040518083038186803b158015610a3c57600080fd5b505afa158015610a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a749190810190612df0565b905073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610ac39190613880565b600060405180830381600087803b158015610add57600080fd5b505af1158015610af1573d6000803e3d6000fd5b5050505073dac17f958d2ee523a2206206994597c13d831ec773ffffffffffffffffffffffffffffffffffffffff1663095ea7b373f650c3d88d12db855b8bf7d11be6c55a4e07dcc97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610b7892919061361b565b602060405180830381600087803b158015610b9257600080fd5b505af1158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bca9190810190612d9e565b50736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3735d3a536e4d6dbd6114cc1ead35777bab948e36437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610c4e92919061361b565b602060405180830381600087803b158015610c6857600080fd5b505af1158015610c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ca09190810190612d9e565b50734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b476040518263ffffffff1660e01b81526004016000604051808303818588803b158015610cfd57600080fd5b505af1158015610d11573d6000803e3d6000fd5b505050505060606001604051908082528060200260200182016040528015610d485781602001602082028038833980820191505090505b509050734ddc2d193948926d02f9b1fe9e1daa0718270ed581600081518110610d6d57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050733d9819210a31b4961b30ef54be2aed79b9c9cd3b73ffffffffffffffffffffffffffffffffffffffff1663c2998238826040518263ffffffff1660e01b8152600401610df49190613644565b600060405180830381600087803b158015610e0e57600080fd5b505af1158015610e22573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610e4b9190810190612d5d565b50735d3a536e4d6dbd6114cc1ead35777bab948e364373ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec610e99670de0b6b3a7640000600254611c6290919063ffffffff16565b6040518263ffffffff1660e01b8152600401610eb59190613880565b602060405180830381600087803b158015610ecf57600080fd5b505af1158015610ee3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f079190810190612df0565b5073f650c3d88d12db855b8bf7d11be6c55a4e07dcc973ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec610f516305f5e100600154611c6290919063ffffffff16565b6040518263ffffffff1660e01b8152600401610f6d9190613880565b602060405180830381600087803b158015610f8757600080fd5b505af1158015610f9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fbf9190810190612df0565b50735d3a536e4d6dbd6114cc1ead35777bab948e364373ffffffffffffffffffffffffffffffffffffffff1663a0712d68736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161103d91906135bc565b60206040518083038186803b15801561105557600080fd5b505afa158015611069573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061108d9190810190612df0565b6040518263ffffffff1660e01b81526004016110a99190613880565b602060405180830381600087803b1580156110c357600080fd5b505af11580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110fb9190810190612df0565b50611104611e10565b735d3a536e4d6dbd6114cc1ead35777bab948e364373ffffffffffffffffffffffffffffffffffffffff1663db006a75735d3a536e4d6dbd6114cc1ead35777bab948e364373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161118191906135bc565b60206040518083038186803b15801561119957600080fd5b505afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111d19190810190612df0565b6040518263ffffffff1660e01b81526004016111ed9190613880565b602060405180830381600087803b15801561120757600080fd5b505af115801561121b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061123f9190810190612df0565b5073f650c3d88d12db855b8bf7d11be6c55a4e07dcc973ffffffffffffffffffffffffffffffffffffffff16630e7527027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518263ffffffff1660e01b81526004016112ad9190613880565b602060405180830381600087803b1580156112c757600080fd5b505af11580156112db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112ff9190810190612df0565b50735d3a536e4d6dbd6114cc1ead35777bab948e364373ffffffffffffffffffffffffffffffffffffffff16630e7527027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518263ffffffff1660e01b815260040161136d9190613880565b602060405180830381600087803b15801561138757600080fd5b505af115801561139b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113bf9190810190612df0565b50734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff1663db006a75734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161143d91906135bc565b60206040518083038186803b15801561145557600080fd5b505afa158015611469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061148d9190810190612df0565b6040518263ffffffff1660e01b81526004016114a99190613880565b602060405180830381600087803b1580156114c357600080fd5b505af11580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114fb9190810190612df0565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0476040518263ffffffff1660e01b81526004016000604051808303818588803b15801561155857600080fd5b505af115801561156c573d6000803e3d6000fd5b50505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115e3611e2f565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161168292919061361b565b602060405180830381600087803b15801561169c57600080fd5b505af11580156116b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116d49190810190612d9e565b50600073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a08231731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e6040518263ffffffff1660e01b815260040161173891906135a1565b60206040518083038186803b15801561175057600080fd5b505afa158015611764573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117889190810190612df0565b9050606060036040519080825280602002602001820160405280156117c757816020015b6117b4612931565b8152602001906001900390816117ac5790505b5090506060600160405190808252806020026020018201604052801561180757816020015b6117f461299d565b8152602001906001900390816117ec5790505b50905060405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200160008152508160008151811061184357fe5b60200260200101819052506118566129cd565b60018160000190600881111561186857fe5b9081600881111561187557fe5b81525050600081602001818152505060405180608001604052806000151581526020016000808111156118a457fe5b81526020016000808111156118b557fe5b81526020018581525081604001819052506000816060018181525050308160a0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808360008151811061191757fe5b602002602001018190525061192a6129cd565b60088160000190600881111561193c57fe5b9081600881111561194957fe5b815250506000816020018181525050308160a0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808460018151811061199e57fe5b60200260200101819052506119b16129cd565b6000816000019060088111156119c357fe5b908160088111156119d057fe5b81525050600081602001818152505060405180608001604052806001151581526020016000808111156119ff57fe5b8152602001600080811115611a1057fe5b8152602001611a29600189611d1c90919063ffffffff16565b81525081604001819052506000816060018181525050308160a0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508085600281518110611a8557fe5b6020026020010181905250731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e73ffffffffffffffffffffffffffffffffffffffff1663a67a6a4585876040518363ffffffff1660e01b8152600401611adf929190613666565b600060405180830381600087803b158015611af957600080fd5b505af1158015611b0d573d6000803e3d6000fd5b50505050505050505050565b611b216115a1565b611b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5790613820565b60405180910390fd5b611b6981611e37565b50565b611b746115a1565b611bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baa90613820565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611bd99061358c565b60006040518083038185875af1925050503d8060008114611c16576040519150601f19603f3d011682016040523d82523d6000602084013e611c1b565b606091505b5050905080611c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c56906137e0565b60405180910390fd5b50565b600080831415611c755760009050611ccc565b6000828402905082848281611c8657fe5b0414611cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbe90613800565b60405180910390fd5b809150505b92915050565b6000611d1483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f65565b905092915050565b600080828401905083811015611d67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5e906137a0565b60405180910390fd5b8091505092915050565b611e0b838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401611da992919061361b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611fc6565b505050565b611e2d73cbdc3bdf78c1df509f94f1f52cc5c5c093d4322b612138565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9e90613780565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083118290611fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa3919061375e565b60405180910390fd5b506000838581611fb857fe5b049050809150509392505050565b611fe58273ffffffffffffffffffffffffffffffffffffffff166128e6565b612024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201b90613860565b60405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161204d9190613575565b6000604051808303816000865af19150503d806000811461208a576040519150601f19603f3d011682016040523d82523d6000602084013e61208f565b606091505b5091509150816120d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cb906137c0565b60405180910390fd5b60008151111561213257808060200190516120f29190810190612d9e565b612131576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212890613840565b60405180910390fd5b5b50505050565b735d3a536e4d6dbd6114cc1ead35777bab948e364373ffffffffffffffffffffffffffffffffffffffff1663095ea7b3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016121a792919061361b565b602060405180830381600087803b1580156121c157600080fd5b505af11580156121d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121f99190810190612d9e565b5073c00e94cb662c3520282e6f5717214004a7f2688873ffffffffffffffffffffffffffffffffffffffff1663095ea7b3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161226992919061361b565b602060405180830381600087803b15801561228357600080fd5b505af1158015612297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122bb9190810190612d9e565b5073dac17f958d2ee523a2206206994597c13d831ec773ffffffffffffffffffffffffffffffffffffffff1663095ea7b3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161232b92919061361b565b602060405180830381600087803b15801561234557600080fd5b505af1158015612359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061237d9190810190612d9e565b50600073c00e94cb662c3520282e6f5717214004a7f2688873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016123cd91906135bc565b60206040518083038186803b1580156123e557600080fd5b505afa1580156123f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061241d9190810190612df0565b9050600073c00e94cb662c3520282e6f5717214004a7f2688873ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b815260040161246e91906135a1565b60206040518083038186803b15801561248657600080fd5b505afa15801561249a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124be9190810190612df0565b905060008373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561250857600080fd5b505afa15801561251c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125409190810190612df0565b905060006125916103e86125836103e7612575876125678a89611c6290919063ffffffff16565b611cd290919063ffffffff16565b611c6290919063ffffffff16565b611cd290919063ffffffff16565b9050606060036040519080825280602002602001820160405280156125c55781602001602082028038833980820191505090505b5090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff816000815181106125f657fe5b6020026020010181815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160018151811061263057fe5b6020026020010181815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160028151811061266a57fe5b6020026020010181815250508573ffffffffffffffffffffffffffffffffffffffff16634f69c0d483836040518363ffffffff1660e01b81526004016126b192919061389b565b600060405180830381600087803b1580156126cb57600080fd5b505af11580156126df573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff16638c28cbe873c00e94cb662c3520282e6f5717214004a7f268886040518263ffffffff1660e01b815260040161273091906135a1565b600060405180830381600087803b15801561274a57600080fd5b505af115801561275e573d6000803e3d6000fd5b50505050606060036040519080825280602002602001820160405280156127945781602001602082028038833980820191505090505b5090506000816000815181106127a657fe5b6020026020010181815250506000816001815181106127c157fe5b6020026020010181815250506000816002815181106127dc57fe5b6020026020010181815250508673ffffffffffffffffffffffffffffffffffffffff1663b02f0b738873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161283d91906135bc565b60206040518083038186803b15801561285557600080fd5b505afa158015612869573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061288d9190810190612df0565b836040518363ffffffff1660e01b81526004016128ab92919061389b565b600060405180830381600087803b1580156128c557600080fd5b505af11580156128d9573d6000803e3d6000fd5b5050505050505050505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156129285750808214155b92505050919050565b6040518061010001604052806000600881111561294a57fe5b81526020016000815260200161295e612a39565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b604051806101000160405280600060088111156129e657fe5b8152602001600081526020016129fa612a39565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b6040518060800160405280600015158152602001600080811115612a5957fe5b8152602001600080811115612a6a57fe5b8152602001600081525090565b600081359050612a8681613c50565b92915050565b600082601f830112612a9d57600080fd5b8151612ab0612aab826138f8565b6138cb565b91508181835260208401935060208101905083856020840282011115612ad557600080fd5b60005b83811015612b055781612aeb8882612c38565b845260208401935060208301925050600181019050612ad8565b5050505092915050565b600081519050612b1e81613c67565b92915050565b60008083601f840112612b3657600080fd5b8235905067ffffffffffffffff811115612b4f57600080fd5b602083019150836001820283011115612b6757600080fd5b9250929050565b600082601f830112612b7f57600080fd5b8135612b92612b8d82613920565b6138cb565b91508082526020830160208301858383011115612bae57600080fd5b612bb9838284613bd6565b50505092915050565b600081359050612bd181613c7e565b92915050565b600060408284031215612be957600080fd5b612bf360406138cb565b90506000612c0384828501612a77565b6000830152506020612c1784828501612c23565b60208301525092915050565b600081359050612c3281613c95565b92915050565b600081519050612c4781613c95565b92915050565b600060208284031215612c5f57600080fd5b6000612c6d84828501612a77565b91505092915050565b600080600060808486031215612c8b57600080fd5b6000612c9986828701612a77565b9350506020612caa86828701612bd7565b925050606084013567ffffffffffffffff811115612cc757600080fd5b612cd386828701612b6e565b9150509250925092565b600080600080600060808688031215612cf557600080fd5b6000612d0388828901612a77565b9550506020612d1488828901612c23565b9450506040612d2588828901612c23565b935050606086013567ffffffffffffffff811115612d4257600080fd5b612d4e88828901612b24565b92509250509295509295909350565b600060208284031215612d6f57600080fd5b600082015167ffffffffffffffff811115612d8957600080fd5b612d9584828501612a8c565b91505092915050565b600060208284031215612db057600080fd5b6000612dbe84828501612b0f565b91505092915050565b600060208284031215612dd957600080fd5b6000612de784828501612bc2565b91505092915050565b600060208284031215612e0257600080fd5b6000612e1084828501612c38565b91505092915050565b6000612e258383612e93565b60208301905092915050565b6000612e3d8383613420565b905092915050565b6000612e518383613528565b60408301905092915050565b6000612e698383613557565b60208301905092915050565b612e7e81613b34565b82525050565b612e8d81613aa1565b82525050565b612e9c81613a8f565b82525050565b612eab81613a8f565b82525050565b6000612ebc8261398c565b612ec68185613a0d565b9350612ed18361394c565b8060005b83811015612f02578151612ee98882612e19565b9750612ef4836139d9565b925050600181019050612ed5565b5085935050505092915050565b6000612f1a82613997565b612f248185613a1e565b935083602082028501612f368561395c565b8060005b85811015612f725784840389528151612f538582612e31565b9450612f5e836139e6565b925060208a01995050600181019050612f3a565b50829750879550505050505092915050565b6000612f8f826139a2565b612f998185613a2f565b9350612fa48361396c565b8060005b83811015612fd5578151612fbc8882612e45565b9750612fc7836139f3565b925050600181019050612fa8565b5085935050505092915050565b6000612fed826139ad565b612ff78185613a40565b93506130028361397c565b8060005b8381101561303357815161301a8882612e5d565b975061302583613a00565b925050600181019050613006565b5085935050505092915050565b61304981613ab3565b82525050565b61305881613ab3565b82525050565b6000613069826139c3565b6130738185613a62565b9350613083818560208601613be5565b61308c81613c18565b840191505092915050565b60006130a2826139c3565b6130ac8185613a73565b93506130bc818560208601613be5565b80840191505092915050565b60006130d3826139b8565b6130dd8185613a51565b93506130ed818560208601613be5565b6130f681613c18565b840191505092915050565b61310a81613b46565b82525050565b61311981613b58565b82525050565b61312881613b6a565b82525050565b61313781613b7c565b82525050565b61314681613b8e565b82525050565b61315581613ba0565b82525050565b6000613166826139ce565b6131708185613a7e565b9350613180818560208601613be5565b61318981613c18565b840191505092915050565b60006131a1602683613a7e565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613207601b83613a7e565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613247602083613a7e565b91507f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646000830152602082019050919050565b6000613287601683613a7e565b91507f7472616e73666572206f6620455448206661696c6564000000000000000000006000830152602082019050919050565b60006132c7602183613a7e565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061332d602083613a7e565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061336d600083613a73565b9150600082019050919050565b6000613387602a83613a7e565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b60006133ed601f83613a7e565b91507f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374006000830152602082019050919050565b6000610160830160008301516134396000860182613101565b50602083015161344c6020860182613557565b50604083015161345f60408601826134d3565b50606083015161347260c0860182613557565b50608083015161348560e0860182613557565b5060a0830151613499610100860182612e93565b5060c08301516134ad610120860182613557565b5060e08301518482036101408601526134c682826130c8565b9150508091505092915050565b6080820160008201516134e96000850182613040565b5060208201516134fc6020850182613110565b50604082015161350f604085018261311f565b5060608201516135226060850182613557565b50505050565b60408201600082015161353e6000850182612e93565b5060208201516135516020850182613557565b50505050565b61356081613b2a565b82525050565b61356f81613b2a565b82525050565b60006135818284613097565b915081905092915050565b600061359782613360565b9150819050919050565b60006020820190506135b66000830184612ea2565b92915050565b60006020820190506135d16000830184612e75565b92915050565b60006020820190506135ec6000830184612e84565b92915050565b60006040820190506136076000830185612e75565b6136146020830184613566565b9392505050565b60006040820190506136306000830185612ea2565b61363d6020830184613566565b9392505050565b6000602082019050818103600083015261365e8184612eb1565b905092915050565b600060408201905081810360008301526136808185612f84565b905081810360208301526136948184612f0f565b90509392505050565b60006020820190506136b2600083018461304f565b92915050565b600060a0820190506136cd600083018861313d565b6136da602083018761312e565b81810360408301526136ec8186612eb1565b90506136fb6060830185612e75565b6137086080830184613566565b9695505050505050565b6000608082019050613727600083018761314c565b613734602083018661312e565b6137416040830185612e75565b8181036060830152613753818461305e565b905095945050505050565b60006020820190508181036000830152613778818461315b565b905092915050565b6000602082019050818103600083015261379981613194565b9050919050565b600060208201905081810360008301526137b9816131fa565b9050919050565b600060208201905081810360008301526137d98161323a565b9050919050565b600060208201905081810360008301526137f98161327a565b9050919050565b60006020820190508181036000830152613819816132ba565b9050919050565b6000602082019050818103600083015261383981613320565b9050919050565b600060208201905081810360008301526138598161337a565b9050919050565b60006020820190508181036000830152613879816133e0565b9050919050565b60006020820190506138956000830184613566565b92915050565b60006040820190506138b06000830185613566565b81810360208301526138c28184612fe2565b90509392505050565b6000604051905081810181811067ffffffffffffffff821117156138ee57600080fd5b8060405250919050565b600067ffffffffffffffff82111561390f57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561393757600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613a9a82613b0a565b9050919050565b6000613aac82613b0a565b9050919050565b60008115159050919050565b6000613aca82613a8f565b9050919050565b6000819050613adf82613c29565b919050565b6000819050613af282613c36565b919050565b6000819050613b0582613c43565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613b3f82613bb2565b9050919050565b6000613b5182613ad1565b9050919050565b6000613b6382613ae4565b9050919050565b6000613b7582613af7565b9050919050565b6000613b8782613b2a565b9050919050565b6000613b9982613b2a565b9050919050565b6000613bab82613b2a565b9050919050565b6000613bbd82613bc4565b9050919050565b6000613bcf82613b0a565b9050919050565b82818337600083830152505050565b60005b83811015613c03578082015181840152602081019050613be8565b83811115613c12576000848401525b50505050565b6000601f19601f8301169050919050565b60098110613c3357fe5b50565b60018110613c4057fe5b50565b60018110613c4d57fe5b50565b613c5981613a8f565b8114613c6457600080fd5b50565b613c7081613ab3565b8114613c7b57600080fd5b50565b613c8781613abf565b8114613c9257600080fd5b50565b613c9e81613b2a565b8114613ca957600080fd5b5056fea365627a7a72315820f42d1f7381f5d13765a59afb35775476f9e517117c6ac0c2b99afabfeb5554006c6578706572696d656e74616cf564736f6c63430005110040

Deployed Bytecode Sourcemap

9608:6748:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11317:292;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11317:292:0;;;;;;;;;;;;;;;;:::i;:::-;;15954:185;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15954:185:0;;;;;;;;;;;;;;;;:::i;:::-;;9785:528;;;:::i;:::-;;2153:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2153:140:0;;;:::i;:::-;;13742:1091;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13742:1091:0;;;;;;;;;;;;;;;;:::i;:::-;;1856:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1856:79:0;;;:::i;:::-;;;;;;;;;;;;;;;;2053:94;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2053:94:0;;;:::i;:::-;;;;;;;;;;;;;;;;11709:1572;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11709:1572:0;;;:::i;:::-;;2299:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2299:109:0;;;;;;;;;;;;;;;;:::i;:::-;;16176:177;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16176:177:0;;;:::i;:::-;;11317:292;11471:7;:5;:7::i;:::-;11489:14;11506:37;11518:24;11537:4;11518:14;11530:1;11518:7;:11;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;11506:7;:11;;:37;;;;:::i;:::-;11489:54;;10766:42;11554:21;;;10684:42;11594:6;11554:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11554:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11554:47:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11554:47:0;;;;;;;;;;11317:292;;;;;;:::o;15954:185::-;1981:9;:7;:9::i;:::-;1973:54;;;;;;;;;;;;;;;;;;;;;;16032:8;16043:13;:23;;;16075:4;16043:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16043:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16043:38:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16043:38:0;;;;;;;;;16032:49;;16090:43;16117:10;16129:3;16090:13;:26;;;;:43;;;;;:::i;:::-;2038:1;15954:185;:::o;9785:528::-;10351:42;9824:21;;;9852;9824:52;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9824:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9824:52:0;;;;;10351:42;9883:20;;;11102:42;9920:2;9883:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9883:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9883:41:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9883:41:0;;;;;;;;;;9933:22;9972:1;9958:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;9958:16:0;;;;9933:41;;10351:42;9985:5;9991:1;9985:8;;;;;;;;;;;;;:24;;;;;;;;;;;10432:42;10020:5;10026:1;10020:8;;;;;;;;;;;;;:23;;;;;;;;;;;11102:42;10052:49;;;10102:3;10107:1;10110:5;10125:4;10132:13;10140:4;10132:3;:7;;:13;;;;:::i;:::-;10052:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10052:94:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10052:94:0;;;;;;39:16:-1;36:1;17:17;2:54;10052:94:0;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10052:94:0;;;;;;;;;;11102:42;10155:23;;;10179:6;10187:1;10198:4;10216:10;10205:22;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10205:22:0;;;10155:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10155:73:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10155:73:0;;;;10766:42;10235:21;;;10257:10;10766:42;10269:22;;;10300:4;10269:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10269:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10269:37:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10269:37:0;;;;;;;;;10235:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10235:72:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10235:72:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10235:72:0;;;;;;;;;;9785:528;:::o;2153:140::-;1981:9;:7;:9::i;:::-;1973:54;;;;;;;;;;;;;;;;;;;;;;2252:1;2215:40;;2236:6;;;;;;;;;;;2215:40;;;;;;;;;;;;2283:1;2266:6;;:19;;;;;;;;;;;;;;;;;;2153:140::o;13742:1091::-;13872:13;10351:42;13888:22;;;13919:4;13888:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13888:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13888:37:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13888:37:0;;;;;;;;;13872:53;;10351:42;13968:22;;;13991:5;13968:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13968:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13968:29:0;;;;10933:42;14010:20;;;10851:42;14046:2;14010:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14010:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14010:40:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14010:40:0;;;;;;;;;;10432:42;14061:19;;;11184:42;14095:2;14061:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14061:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14061:38:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14061:38:0;;;;;;;;;;13321:42;14112:15;;;14134:21;14112:46;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14112:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14112:46:0;;;;;14173:24;14214:1;14200:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;14200:16:0;;;;14173:43;;13321:42;14227:7;14235:1;14227:10;;;;;;;;;;;;;:26;;;;;;;;;;;13410:42;14264:37;;;14302:7;14264:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14264:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14264:46:0;;;;;;39:16:-1;36:1;17:17;2:54;14264:46:0;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14264:46:0;;;;;;;;;;11184:42;14323:21;;;14345:19;14359:4;14345:9;;:13;;:19;;;;:::i;:::-;14323:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14323:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14323:42:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14323:42:0;;;;;;;;;;10851;14376:22;;;14399:19;14414:3;14399:10;;:14;;:19;;;;:::i;:::-;14376:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14376:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14376:43:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14376:43:0;;;;;;;;;;11184:42;14432:19;;;10432:42;14452:21;;;14482:4;14452:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14452:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14452:36:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14452:36:0;;;;;;;;;14432:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14432:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14432:57:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14432:57:0;;;;;;;;;;14502:11;:9;:11::i;:::-;11184:42;14526:21;;;11184:42;14548:22;;;14579:4;14548:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14548:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14548:37:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14548:37:0;;;;;;;;;14526:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14526:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14526:60:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14526:60:0;;;;;;;;;;10851:42;14599:27;;;14635:2;14599:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14599:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14599:40:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14599:40:0;;;;;;;;;;11184:42;14650:26;;;14685:2;14650:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14650:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14650:39:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14650:39:0;;;;;;;;;;13321:42;14702:21;;;13321:42;14724:22;;;14755:4;14724:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14724:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14724:37:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14724:37:0;;;;;;;;;14702:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14702:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14702:60:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14702:60:0;;;;;;;;;;10351:42;14773:21;;;14801;14773:52;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14773:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14773:52:0;;;;;13742:1091;;;;;:::o;1856:79::-;1894:7;1921:6;;;;;;;;;;;1914:13;;1856:79;:::o;2053:94::-;2093:4;2133:6;;;;;;;;;;;2117:22;;:12;:10;:12::i;:::-;:22;;;2110:29;;2053:94;:::o;11709:1572::-;10351:42;11838:20;;;11015:42;11870:2;11838:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11838:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11838:36:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11838:36:0;;;;;;;;;;11887:13;10351:42;11903:22;;;11015:42;11903:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11903:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11903:28:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11903:28:0;;;;;;;;;11887:44;;11944:24;11988:1;11971:19;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;11944:46;;12003:19;12036:1;12025:13;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;12003:35;;12060:22;;;;;;;;12073:4;12060:22;;;;;;12080:1;12060:22;;;12049:5;12055:1;12049:8;;;;;;;;;;;;;:33;;;;12121:24;;:::i;:::-;12176:19;12156:6;:17;;:39;;;;;;;;;;;;;;;;;;;;;;;12225:1;12206:6;:16;;:20;;;;;12253:70;;;;;;;;12265:5;12253:70;;;;;;12272:21;12253:70;;;;;;;;;;;;12295:20;12253:70;;;;;;;;;;;;12317:5;12253:70;;;12237:6;:13;;:86;;;;12359:1;12334:6;:22;;:26;;;;;12401:4;12371:6;:19;;:35;;;;;;;;;;;12429:6;12419:4;12424:1;12419:7;;;;;;;;;;;;;:16;;;;12541:22;;:::i;:::-;12592:15;12574:4;:15;;:33;;;;;;;;;;;;;;;;;;;;;;;12635:1;12618:4;:14;;:18;;;;;12675:4;12647;:17;;:33;;;;;;;;;;;12703:4;12693;12698:1;12693:7;;;;;;;;;;;;;:14;;;;12782:24;;:::i;:::-;12837:18;12817:6;:17;;:38;;;;;;;;;;;;;;;;;;;;;;;12885:1;12866:6;:16;;:20;;;;;12913:76;;;;;;;;12925:4;12913:76;;;;;;12931:21;12913:76;;;;;;;;;;;;12954:20;12913:76;;;;;;;;;;;;12976:12;12986:1;12976:5;:9;;:12;;;;:::i;:::-;12913:76;;;12897:6;:13;;:92;;;;13025:1;13000:6;:22;;:26;;;;;13067:4;13037:6;:19;;:35;;;;;;;;;;;13095:6;13085:4;13090:1;13085:7;;;;;;;;;;;;;:16;;;;11015:42;13242:18;;;13261:5;13268:4;13242:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13242:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13242:31:0;;;;11709:1572;;;;;;:::o;2299:109::-;1981:9;:7;:9::i;:::-;1973:54;;;;;;;;;;;;;;;;;;;;;;2372:28;2391:8;2372:18;:28::i;:::-;2299:109;:::o;16176:177::-;1981:9;:7;:9::i;:::-;1973:54;;;;;;;;;;;;;;;;;;;;;;16232:11;16249:10;:15;;16271:21;16249:48;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;16231:66:0;;;16314:6;16306:41;;;;;;;;;;;;;;;;;;;;;;2038:1;16176:177::o;3201:250::-;3259:7;3288:1;3283;:6;3279:47;;;3313:1;3306:8;;;;3279:47;3338:9;3354:1;3350;:5;3338:17;;3383:1;3378;3374;:5;;;;;;:10;3366:56;;;;;;;;;;;;;;;;;;;;;;3442:1;3435:8;;;3201:250;;;;;:::o;3457:132::-;3515:7;3542:39;3546:1;3549;3542:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3535:46;;3457:132;;;;:::o;2674:181::-;2732:7;2752:9;2768:1;2764;:5;2752:17;;2793:1;2788;:6;;2780:46;;;;;;;;;;;;;;;;;;;;;;2846:1;2839:8;;;2674:181;;;;:::o;5174:176::-;5257:85;5276:5;5306;:14;;;:23;;;;5331:2;5335:5;5283:58;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5283:58:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;5283:58:0;5257:18;:85::i;:::-;5174:176;;;:::o;14841:99::-;14882:50;14889:42;14882:6;:50::i;:::-;14841:99::o;887:98::-;932:15;967:10;960:17;;887:98;:::o;2414:229::-;2508:1;2488:22;;:8;:22;;;;2480:73;;;;;;;;;;;;;;;;;;;;;;2598:8;2569:38;;2590:6;;;;;;;;;;;2569:38;;;;;;;;;;;;2627:8;2618:6;;:17;;;;;;;;;;;;;;;;;;2414:229;:::o;3595:258::-;3681:7;3780:1;3776;:5;3783:12;3768:28;;;;;;;;;;;;;;;;;;;;;;;;;3807:9;3823:1;3819;:5;;;;;;3807:17;;3844:1;3837:8;;;3595:258;;;;;:::o;5919:598::-;6007:27;6015:5;6007:25;;;:27::i;:::-;5999:71;;;;;;;;;;;;;;;;;;;;;;6144:12;6158:23;6193:5;6185:19;;6205:4;6185:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;6143:67:0;;;;6229:7;6221:52;;;;;;;;;;;;;;;;;;;;;;6310:1;6290:10;:17;:21;6286:224;;;6432:10;6421:30;;;;;;;;;;;;;;6413:85;;;;;;;;;;;;;;;;;;;;;;6286:224;5919:598;;;;:::o;14948:967::-;11184:42;15000:20;;;15021:4;15035:2;15000:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15000:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15000:39:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15000:39:0;;;;;;;;;;10766:42;15050:20;;;15071:4;15085:2;15050:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15050:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15050:39:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15050:39:0;;;;;;;;;;10933:42;15100:20;;;15121:4;15135:2;15100:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15100:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15100:39:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15100:39:0;;;;;;;;;;15152:12;10766:42;15167:22;;;15198:4;15167:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15167:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15167:37:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15167:37:0;;;;;;;;;15152:52;;15215:13;10766:42;15231:22;;;15254:4;15231:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15231:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15231:28:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15231:28:0;;;;;;;;;15215:44;;15270:14;15294:4;15287:24;;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15287:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15287:26:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15287:26:0;;;;;;;;;15270:43;;15324:14;15341:52;15388:4;15342:40;15378:3;15343:29;15366:5;15344:16;15355:4;15344:6;:10;;:16;;;;:::i;:::-;15343:22;;:29;;;;:::i;:::-;15342:35;;:40;;;;:::i;:::-;15341:46;;:52;;;;:::i;:::-;15324:69;;15406:24;15444:1;15433:13;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;15433:13:0;;;;15406:40;;15482:2;15461:10;15472:1;15461:13;;;;;;;;;;;;;:24;;;;;15521:2;15500:10;15511:1;15500:13;;;;;;;;;;;;;:24;;;;;15560:2;15539:10;15550:1;15539:13;;;;;;;;;;;;;:24;;;;;15583:4;15574:23;;;15598:6;15606:10;15574:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15574:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15574:43:0;;;;15639:4;15630:19;;;10766:42;15630:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15630:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15630:25:0;;;;15668:24;15706:1;15695:13;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;15695:13:0;;;;15668:40;;15744:1;15723:10;15734:1;15723:13;;;;;;;;;;;;;:23;;;;;15782:1;15761:10;15772:1;15761:13;;;;;;;;;;;;;:23;;;;;15820:1;15799:10;15810:1;15799:13;;;;;;;;;;;;;:23;;;;;15842:4;15833:23;;;15864:4;15857:22;;;15888:4;15857:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15857:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15857:37:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15857:37:0;;;;;;;;;15896:10;15833:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15833:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15833:74:0;;;;14948:967;;;;;;;:::o;4191:374::-;4251:4;4268:16;4295:19;4317:66;4295:88;;;;4486:7;4474:20;4462:32;;4526:3;4514:15;;:8;:15;;:42;;;;;4545:11;4533:8;:23;;4514:42;4506:51;;;;4191:374;;;:::o;9608:6748::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;160:722;;288:3;281:4;273:6;269:17;265:27;255:2;;306:1;303;296:12;255:2;336:6;330:13;358:80;373:64;430:6;373:64;;;358:80;;;349:89;;455:5;480:6;473:5;466:21;510:4;502:6;498:17;488:27;;532:4;527:3;523:14;516:21;;585:6;632:3;624:4;616:6;612:17;607:3;603:27;600:36;597:2;;;649:1;646;639:12;597:2;674:1;659:217;684:6;681:1;678:13;659:217;;;742:3;764:48;808:3;796:10;764:48;;;759:3;752:61;836:4;831:3;827:14;820:21;;864:4;859:3;855:14;848:21;;716:160;706:1;703;699:9;694:14;;659:217;;;663:14;248:634;;;;;;;;890:128;;971:6;965:13;956:22;;983:30;1007:5;983:30;;;950:68;;;;;1039:336;;;1153:3;1146:4;1138:6;1134:17;1130:27;1120:2;;1171:1;1168;1161:12;1120:2;1204:6;1191:20;1181:30;;1231:18;1223:6;1220:30;1217:2;;;1263:1;1260;1253:12;1217:2;1297:4;1289:6;1285:17;1273:29;;1348:3;1340:4;1332:6;1328:17;1318:8;1314:32;1311:41;1308:2;;;1365:1;1362;1355:12;1308:2;1113:262;;;;;;1384:440;;1485:3;1478:4;1470:6;1466:17;1462:27;1452:2;;1503:1;1500;1493:12;1452:2;1540:6;1527:20;1562:64;1577:48;1618:6;1577:48;;;1562:64;;;1553:73;;1646:6;1639:5;1632:21;1682:4;1674:6;1670:17;1715:4;1708:5;1704:16;1750:3;1741:6;1736:3;1732:16;1729:25;1726:2;;;1767:1;1764;1757:12;1726:2;1777:41;1811:6;1806:3;1801;1777:41;;;1445:379;;;;;;;;1832:156;;1925:6;1912:20;1903:29;;1937:46;1977:5;1937:46;;;1897:91;;;;;2021:466;;2131:4;2119:9;2114:3;2110:19;2106:30;2103:2;;;2149:1;2146;2139:12;2103:2;2167:20;2182:4;2167:20;;;2158:29;;2238:1;2270:49;2315:3;2306:6;2295:9;2291:22;2270:49;;;2263:4;2256:5;2252:16;2245:75;2197:134;2383:2;2416:49;2461:3;2452:6;2441:9;2437:22;2416:49;;;2409:4;2402:5;2398:16;2391:75;2341:136;2097:390;;;;;2494:130;;2574:6;2561:20;2552:29;;2586:33;2613:5;2586:33;;;2546:78;;;;;2631:134;;2715:6;2709:13;2700:22;;2727:33;2754:5;2727:33;;;2694:71;;;;;2772:241;;2876:2;2864:9;2855:7;2851:23;2847:32;2844:2;;;2892:1;2889;2882:12;2844:2;2927:1;2944:53;2989:7;2980:6;2969:9;2965:22;2944:53;;;2934:63;;2906:97;2838:175;;;;;3020:638;;;;3188:3;3176:9;3167:7;3163:23;3159:33;3156:2;;;3205:1;3202;3195:12;3156:2;3240:1;3257:53;3302:7;3293:6;3282:9;3278:22;3257:53;;;3247:63;;3219:97;3347:2;3365:74;3431:7;3422:6;3411:9;3407:22;3365:74;;;3355:84;;3326:119;3504:2;3493:9;3489:18;3476:32;3528:18;3520:6;3517:30;3514:2;;;3560:1;3557;3550:12;3514:2;3580:62;3634:7;3625:6;3614:9;3610:22;3580:62;;;3570:72;;3455:193;3150:508;;;;;;3665:741;;;;;;3839:3;3827:9;3818:7;3814:23;3810:33;3807:2;;;3856:1;3853;3846:12;3807:2;3891:1;3908:53;3953:7;3944:6;3933:9;3929:22;3908:53;;;3898:63;;3870:97;3998:2;4016:53;4061:7;4052:6;4041:9;4037:22;4016:53;;;4006:63;;3977:98;4106:2;4124:53;4169:7;4160:6;4149:9;4145:22;4124:53;;;4114:63;;4085:98;4242:2;4231:9;4227:18;4214:32;4266:18;4258:6;4255:30;4252:2;;;4298:1;4295;4288:12;4252:2;4326:64;4382:7;4373:6;4362:9;4358:22;4326:64;;;4316:74;;;;4193:203;3801:605;;;;;;;;;4413:392;;4553:2;4541:9;4532:7;4528:23;4524:32;4521:2;;;4569:1;4566;4559:12;4521:2;4625:1;4614:9;4610:17;4604:24;4648:18;4640:6;4637:30;4634:2;;;4680:1;4677;4670:12;4634:2;4700:89;4781:7;4772:6;4761:9;4757:22;4700:89;;;4690:99;;4583:212;4515:290;;;;;4812:257;;4924:2;4912:9;4903:7;4899:23;4895:32;4892:2;;;4940:1;4937;4930:12;4892:2;4975:1;4992:61;5045:7;5036:6;5025:9;5021:22;4992:61;;;4982:71;;4954:105;4886:183;;;;;5076:267;;5193:2;5181:9;5172:7;5168:23;5164:32;5161:2;;;5209:1;5206;5199:12;5161:2;5244:1;5261:66;5319:7;5310:6;5299:9;5295:22;5261:66;;;5251:76;;5223:110;5155:188;;;;;5350:263;;5465:2;5453:9;5444:7;5440:23;5436:32;5433:2;;;5481:1;5478;5471:12;5433:2;5516:1;5533:64;5589:7;5580:6;5569:9;5565:22;5533:64;;;5523:74;;5495:108;5427:186;;;;;5621:173;;5708:46;5750:3;5742:6;5708:46;;;5783:4;5778:3;5774:14;5760:28;;5701:93;;;;;5803:249;;5950:96;6042:3;6034:6;5950:96;;;5936:110;;5929:123;;;;;6061:245;;6182:84;6262:3;6254:6;6182:84;;;6295:4;6290:3;6286:14;6272:28;;6175:131;;;;;6315:173;;6402:46;6444:3;6436:6;6402:46;;;6477:4;6472:3;6468:14;6454:28;;6395:93;;;;;6496:142;6587:45;6626:5;6587:45;;;6582:3;6575:58;6569:69;;;6645:137;6744:32;6770:5;6744:32;;;6739:3;6732:45;6726:56;;;6789:103;6862:24;6880:5;6862:24;;;6857:3;6850:37;6844:48;;;6899:113;6982:24;7000:5;6982:24;;;6977:3;6970:37;6964:48;;;7050:690;;7195:54;7243:5;7195:54;;;7262:86;7341:6;7336:3;7262:86;;;7255:93;;7369:56;7419:5;7369:56;;;7445:7;7473:1;7458:260;7483:6;7480:1;7477:13;7458:260;;;7550:6;7544:13;7571:63;7630:3;7615:13;7571:63;;;7564:70;;7651:60;7704:6;7651:60;;;7641:70;;7515:203;7505:1;7502;7498:9;7493:14;;7458:260;;;7462:14;7731:3;7724:10;;7174:566;;;;;;;;7815:1032;;8006:77;8077:5;8006:77;;;8096:109;8198:6;8193:3;8096:109;;;8089:116;;8228:3;8270:4;8262:6;8258:17;8253:3;8249:27;8297:79;8370:5;8297:79;;;8396:7;8424:1;8409:399;8434:6;8431:1;8428:13;8409:399;;;8496:9;8490:4;8486:20;8481:3;8474:33;8541:6;8535:13;8563:110;8668:4;8653:13;8563:110;;;8555:118;;8690:83;8766:6;8690:83;;;8680:93;;8796:4;8791:3;8787:14;8780:21;;8466:342;8456:1;8453;8449:9;8444:14;;8409:399;;;8413:14;8821:4;8814:11;;8838:3;8831:10;;7985:862;;;;;;;;;;8910:826;;9089:71;9154:5;9089:71;;;9173:103;9269:6;9264:3;9173:103;;;9166:110;;9297:73;9364:5;9297:73;;;9390:7;9418:1;9403:311;9428:6;9425:1;9422:13;9403:311;;;9495:6;9489:13;9516:97;9609:3;9594:13;9516:97;;;9509:104;;9630:77;9700:6;9630:77;;;9620:87;;9460:254;9450:1;9447;9443:9;9438:14;;9403:311;;;9407:14;9727:3;9720:10;;9068:668;;;;;;;;9775:690;;9920:54;9968:5;9920:54;;;9987:86;10066:6;10061:3;9987:86;;;9980:93;;10094:56;10144:5;10094:56;;;10170:7;10198:1;10183:260;10208:6;10205:1;10202:13;10183:260;;;10275:6;10269:13;10296:63;10355:3;10340:13;10296:63;;;10289:70;;10376:60;10429:6;10376:60;;;10366:70;;10240:203;10230:1;10227;10223:9;10218:14;;10183:260;;;10187:14;10456:3;10449:10;;9899:566;;;;;;;;10473:94;10540:21;10555:5;10540:21;;;10535:3;10528:34;10522:45;;;10574:104;10651:21;10666:5;10651:21;;;10646:3;10639:34;10633:45;;;10685:343;;10795:38;10827:5;10795:38;;;10845:70;10908:6;10903:3;10845:70;;;10838:77;;10920:52;10965:6;10960:3;10953:4;10946:5;10942:16;10920:52;;;10993:29;11015:6;10993:29;;;10988:3;10984:39;10977:46;;10775:253;;;;;;11035:356;;11163:38;11195:5;11163:38;;;11213:88;11294:6;11289:3;11213:88;;;11206:95;;11306:52;11351:6;11346:3;11339:4;11332:5;11328:16;11306:52;;;11379:6;11374:3;11370:16;11363:23;;11143:248;;;;;;11398:315;;11494:34;11522:5;11494:34;;;11540:60;11593:6;11588:3;11540:60;;;11533:67;;11605:52;11650:6;11645:3;11638:4;11631:5;11627:16;11605:52;;;11678:29;11700:6;11678:29;;;11673:3;11669:39;11662:46;;11474:239;;;;;;11720:140;11805:49;11848:5;11805:49;;;11800:3;11793:62;11787:73;;;11867:154;11959:56;12009:5;11959:56;;;11954:3;11947:69;11941:80;;;12028:148;12117:53;12164:5;12117:53;;;12112:3;12105:66;12099:77;;;12183:142;12274:45;12313:5;12274:45;;;12269:3;12262:58;12256:69;;;12332:154;12429:51;12474:5;12429:51;;;12424:3;12417:64;12411:75;;;12493:182;12604:65;12663:5;12604:65;;;12599:3;12592:78;12586:89;;;12682:347;;12794:39;12827:5;12794:39;;;12845:71;12909:6;12904:3;12845:71;;;12838:78;;12921:52;12966:6;12961:3;12954:4;12947:5;12943:16;12921:52;;;12994:29;13016:6;12994:29;;;12989:3;12985:39;12978:46;;12774:255;;;;;;13037:375;;13197:67;13261:2;13256:3;13197:67;;;13190:74;;13297:34;13293:1;13288:3;13284:11;13277:55;13366:8;13361:2;13356:3;13352:12;13345:30;13403:2;13398:3;13394:12;13387:19;;13183:229;;;;13421:327;;13581:67;13645:2;13640:3;13581:67;;;13574:74;;13681:29;13677:1;13672:3;13668:11;13661:50;13739:2;13734:3;13730:12;13723:19;;13567:181;;;;13757:332;;13917:67;13981:2;13976:3;13917:67;;;13910:74;;14017:34;14013:1;14008:3;14004:11;13997:55;14080:2;14075:3;14071:12;14064:19;;13903:186;;;;14098:322;;14258:67;14322:2;14317:3;14258:67;;;14251:74;;14358:24;14354:1;14349:3;14345:11;14338:45;14411:2;14406:3;14402:12;14395:19;;14244:176;;;;14429:370;;14589:67;14653:2;14648:3;14589:67;;;14582:74;;14689:34;14685:1;14680:3;14676:11;14669:55;14758:3;14753:2;14748:3;14744:12;14737:25;14790:2;14785:3;14781:12;14774:19;;14575:224;;;;14808:332;;14968:67;15032:2;15027:3;14968:67;;;14961:74;;15068:34;15064:1;15059:3;15055:11;15048:55;15131:2;15126:3;15122:12;15115:19;;14954:186;;;;15149:296;;15326:83;15407:1;15402:3;15326:83;;;15319:90;;15437:1;15432:3;15428:11;15421:18;;15312:133;;;;15454:379;;15614:67;15678:2;15673:3;15614:67;;;15607:74;;15714:34;15710:1;15705:3;15701:11;15694:55;15783:12;15778:2;15773:3;15769:12;15762:34;15824:2;15819:3;15815:12;15808:19;;15600:233;;;;15842:331;;16002:67;16066:2;16061:3;16002:67;;;15995:74;;16102:33;16098:1;16093:3;16089:11;16082:54;16164:2;16159:3;16155:12;16148:19;;15988:185;;;;16242:1606;;16383:6;16378:3;16374:16;16474:4;16467:5;16463:16;16457:23;16486:75;16555:4;16550:3;16546:14;16532:12;16486:75;;;16405:162;16645:4;16638:5;16634:16;16628:23;16657:63;16714:4;16709:3;16705:14;16691:12;16657:63;;;16577:149;16801:4;16794:5;16790:16;16784:23;16813:115;16922:4;16917:3;16913:14;16899:12;16813:115;;;16736:198;17018:4;17011:5;17007:16;17001:23;17030:63;17087:4;17082:3;17078:14;17064:12;17030:63;;;16944:155;17185:4;17178:5;17174:16;17168:23;17197:63;17254:4;17249:3;17245:14;17231:12;17197:63;;;17109:157;17347:4;17340:5;17336:16;17330:23;17359:65;17416:6;17411:3;17407:16;17393:12;17359:65;;;17276:154;17513:4;17506:5;17502:16;17496:23;17525:65;17582:6;17577:3;17573:16;17559:12;17525:65;;;17440:156;17669:4;17662:5;17658:16;17652:23;17723:3;17717:4;17713:14;17704:6;17699:3;17695:16;17688:40;17743:67;17805:4;17791:12;17743:67;;;17735:75;;17606:216;17839:4;17832:11;;16356:1492;;;;;;17918:813;18053:4;18048:3;18044:14;18136:4;18129:5;18125:16;18119:23;18148:57;18199:4;18194:3;18190:14;18176:12;18148:57;;;18073:138;18292:4;18285:5;18281:16;18275:23;18304:82;18380:4;18375:3;18371:14;18357:12;18304:82;;;18221:171;18464:4;18457:5;18453:16;18447:23;18476:79;18549:4;18544:3;18540:14;18526:12;18476:79;;;18402:159;18635:4;18628:5;18624:16;18618:23;18647:63;18704:4;18699:3;18695:14;18681:12;18647:63;;;18571:145;18026:705;;;;18787:457;18908:4;18903:3;18899:14;18992:4;18985:5;18981:16;18975:23;19004:63;19061:4;19056:3;19052:14;19038:12;19004:63;;;18928:145;19148:4;19141:5;19137:16;19131:23;19160:63;19217:4;19212:3;19208:14;19194:12;19160:63;;;19083:146;18881:363;;;;19251:103;19324:24;19342:5;19324:24;;;19319:3;19312:37;19306:48;;;19361:113;19444:24;19462:5;19444:24;;;19439:3;19432:37;19426:48;;;19481:262;;19625:93;19714:3;19705:6;19625:93;;;19618:100;;19735:3;19728:10;;19606:137;;;;;19750:370;;19948:147;20091:3;19948:147;;;19941:154;;20112:3;20105:10;;19929:191;;;;20127:213;;20245:2;20234:9;20230:18;20222:26;;20259:71;20327:1;20316:9;20312:17;20303:6;20259:71;;;20216:124;;;;;20347:229;;20473:2;20462:9;20458:18;20450:26;;20487:79;20563:1;20552:9;20548:17;20539:6;20487:79;;;20444:132;;;;;20583:245;;20717:2;20706:9;20702:18;20694:26;;20731:87;20815:1;20804:9;20800:17;20791:6;20731:87;;;20688:140;;;;;20835:340;;20989:2;20978:9;20974:18;20966:26;;21003:79;21079:1;21068:9;21064:17;21055:6;21003:79;;;21093:72;21161:2;21150:9;21146:18;21137:6;21093:72;;;20960:215;;;;;;21182:324;;21328:2;21317:9;21313:18;21305:26;;21342:71;21410:1;21399:9;21395:17;21386:6;21342:71;;;21424:72;21492:2;21481:9;21477:18;21468:6;21424:72;;;21299:207;;;;;;21513:361;;21681:2;21670:9;21666:18;21658:26;;21731:9;21725:4;21721:20;21717:1;21706:9;21702:17;21695:47;21756:108;21859:4;21850:6;21756:108;;;21748:116;;21652:222;;;;;21881:780;;22207:2;22196:9;22192:18;22184:26;;22257:9;22251:4;22247:20;22243:1;22232:9;22228:17;22221:47;22282:142;22419:4;22410:6;22282:142;;;22274:150;;22472:9;22466:4;22462:20;22457:2;22446:9;22442:18;22435:48;22497:154;22646:4;22637:6;22497:154;;;22489:162;;22178:483;;;;;;22668:201;;22780:2;22769:9;22765:18;22757:26;;22794:65;22856:1;22845:9;22841:17;22832:6;22794:65;;;22751:118;;;;;22876:867;;23186:3;23175:9;23171:19;23163:27;;23201:85;23283:1;23272:9;23268:17;23259:6;23201:85;;;23297:80;23373:2;23362:9;23358:18;23349:6;23297:80;;;23425:9;23419:4;23415:20;23410:2;23399:9;23395:18;23388:48;23450:108;23553:4;23544:6;23450:108;;;23442:116;;23569:80;23645:2;23634:9;23630:18;23621:6;23569:80;;;23660:73;23728:3;23717:9;23713:19;23704:6;23660:73;;;23157:586;;;;;;;;;23750:719;;24014:3;24003:9;23999:19;23991:27;;24029:99;24125:1;24114:9;24110:17;24101:6;24029:99;;;24139:80;24215:2;24204:9;24200:18;24191:6;24139:80;;;24230;24306:2;24295:9;24291:18;24282:6;24230:80;;;24358:9;24352:4;24348:20;24343:2;24332:9;24328:18;24321:48;24383:76;24454:4;24445:6;24383:76;;;24375:84;;23985:484;;;;;;;;24476:301;;24614:2;24603:9;24599:18;24591:26;;24664:9;24658:4;24654:20;24650:1;24639:9;24635:17;24628:47;24689:78;24762:4;24753:6;24689:78;;;24681:86;;24585:192;;;;;24784:407;;24975:2;24964:9;24960:18;24952:26;;25025:9;25019:4;25015:20;25011:1;25000:9;24996:17;24989:47;25050:131;25176:4;25050:131;;;25042:139;;24946:245;;;;25198:407;;25389:2;25378:9;25374:18;25366:26;;25439:9;25433:4;25429:20;25425:1;25414:9;25410:17;25403:47;25464:131;25590:4;25464:131;;;25456:139;;25360:245;;;;25612:407;;25803:2;25792:9;25788:18;25780:26;;25853:9;25847:4;25843:20;25839:1;25828:9;25824:17;25817:47;25878:131;26004:4;25878:131;;;25870:139;;25774:245;;;;26026:407;;26217:2;26206:9;26202:18;26194:26;;26267:9;26261:4;26257:20;26253:1;26242:9;26238:17;26231:47;26292:131;26418:4;26292:131;;;26284:139;;26188:245;;;;26440:407;;26631:2;26620:9;26616:18;26608:26;;26681:9;26675:4;26671:20;26667:1;26656:9;26652:17;26645:47;26706:131;26832:4;26706:131;;;26698:139;;26602:245;;;;26854:407;;27045:2;27034:9;27030:18;27022:26;;27095:9;27089:4;27085:20;27081:1;27070:9;27066:17;27059:47;27120:131;27246:4;27120:131;;;27112:139;;27016:245;;;;27268:407;;27459:2;27448:9;27444:18;27436:26;;27509:9;27503:4;27499:20;27495:1;27484:9;27480:17;27473:47;27534:131;27660:4;27534:131;;;27526:139;;27430:245;;;;27682:407;;27873:2;27862:9;27858:18;27850:26;;27923:9;27917:4;27913:20;27909:1;27898:9;27894:17;27887:47;27948:131;28074:4;27948:131;;;27940:139;;27844:245;;;;28096:213;;28214:2;28203:9;28199:18;28191:26;;28228:71;28296:1;28285:9;28281:17;28272:6;28228:71;;;28185:124;;;;;28316:472;;28512:2;28501:9;28497:18;28489:26;;28526:71;28594:1;28583:9;28579:17;28570:6;28526:71;;;28645:9;28639:4;28635:20;28630:2;28619:9;28615:18;28608:48;28670:108;28773:4;28764:6;28670:108;;;28662:116;;28483:305;;;;;;28795:256;;28857:2;28851:9;28841:19;;28895:4;28887:6;28883:17;28994:6;28982:10;28979:22;28958:18;28946:10;28943:34;28940:62;28937:2;;;29015:1;29012;29005:12;28937:2;29035:10;29031:2;29024:22;28835:216;;;;;29058:304;;29217:18;29209:6;29206:30;29203:2;;;29249:1;29246;29239:12;29203:2;29284:4;29276:6;29272:17;29264:25;;29347:4;29341;29337:15;29329:23;;29140:222;;;;29369:321;;29512:18;29504:6;29501:30;29498:2;;;29544:1;29541;29534:12;29498:2;29611:4;29607:9;29600:4;29592:6;29588:17;29584:33;29576:41;;29675:4;29669;29665:15;29657:23;;29435:255;;;;29697:151;;29783:3;29775:11;;29821:4;29816:3;29812:14;29804:22;;29769:79;;;;29855:174;;29964:3;29956:11;;30002:4;29997:3;29993:14;29985:22;;29950:79;;;;30036:168;;30139:3;30131:11;;30177:4;30172:3;30168:14;30160:22;;30125:79;;;;30211:151;;30297:3;30289:11;;30335:4;30330:3;30326:14;30318:22;;30283:79;;;;30369:137;;30478:5;30472:12;30462:22;;30443:63;;;;30513:160;;30645:5;30639:12;30629:22;;30610:63;;;;30680:154;;30806:5;30800:12;30790:22;;30771:63;;;;30841:137;;30950:5;30944:12;30934:22;;30915:63;;;;30985:117;;31074:5;31068:12;31058:22;;31039:63;;;;31109:121;;31202:5;31196:12;31186:22;;31167:63;;;;31237:122;;31331:5;31325:12;31315:22;;31296:63;;;;31366:108;;31464:4;31459:3;31455:14;31447:22;;31441:33;;;;31481:131;;31602:4;31597:3;31593:14;31585:22;;31579:33;;;;31619:125;;31734:4;31729:3;31725:14;31717:22;;31711:33;;;;31751:108;;31849:4;31844:3;31840:14;31832:22;;31826:33;;;;31867:178;;31997:6;31992:3;31985:19;32034:4;32029:3;32025:14;32010:29;;31978:67;;;;;32054:201;;32207:6;32202:3;32195:19;32244:4;32239:3;32235:14;32220:29;;32188:67;;;;;32264:195;;32411:6;32406:3;32399:19;32448:4;32443:3;32439:14;32424:29;;32392:67;;;;;32468:178;;32598:6;32593:3;32586:19;32635:4;32630:3;32626:14;32611:29;;32579:67;;;;;32655:152;;32759:6;32754:3;32747:19;32796:4;32791:3;32787:14;32772:29;;32740:67;;;;;32816:162;;32930:6;32925:3;32918:19;32967:4;32962:3;32958:14;32943:29;;32911:67;;;;;32987:144;;33122:3;33107:18;;33100:31;;;;;33140:163;;33255:6;33250:3;33243:19;33292:4;33287:3;33283:14;33268:29;;33236:67;;;;;33311:91;;33373:24;33391:5;33373:24;;;33362:35;;33356:46;;;;33409:99;;33479:24;33497:5;33479:24;;;33468:35;;33462:46;;;;33515:85;;33588:5;33581:13;33574:21;33563:32;;33557:43;;;;33607:104;;33682:24;33700:5;33682:24;;;33671:35;;33665:46;;;;33718:134;;33794:5;33783:16;;33800:47;33841:5;33800:47;;;33777:75;;;;33859:148;;33942:5;33931:16;;33948:54;33996:5;33948:54;;;33925:82;;;;34014:142;;34094:5;34083:16;;34100:51;34145:5;34100:51;;;34077:79;;;;34163:121;;34236:42;34229:5;34225:54;34214:65;;34208:76;;;;34291:72;;34353:5;34342:16;;34336:27;;;;34370:129;;34457:37;34488:5;34457:37;;;34444:50;;34438:61;;;;34506:134;;34597:38;34629:5;34597:38;;;34584:51;;34578:62;;;;34647:148;;34745:45;34784:5;34745:45;;;34732:58;;34726:69;;;;34802:142;;34897:42;34933:5;34897:42;;;34884:55;;34878:66;;;;34951:116;;35038:24;35056:5;35038:24;;;35025:37;;35019:48;;;;35074:122;;35167:24;35185:5;35167:24;;;35154:37;;35148:48;;;;35203:136;;35310:24;35328:5;35310:24;;;35297:37;;35291:48;;;;35346:121;;35425:37;35456:5;35425:37;;;35412:50;;35406:61;;;;35474:108;;35553:24;35571:5;35553:24;;;35540:37;;35534:48;;;;35590:145;35671:6;35666:3;35661;35648:30;35727:1;35718:6;35713:3;35709:16;35702:27;35641:94;;;;35744:268;35809:1;35816:101;35830:6;35827:1;35824:13;35816:101;;;35906:1;35901:3;35897:11;35891:18;35887:1;35882:3;35878:11;35871:39;35852:2;35849:1;35845:10;35840:15;;35816:101;;;35932:6;35929:1;35926:13;35923:2;;;35997:1;35988:6;35983:3;35979:16;35972:27;35923:2;35793:219;;;;;36020:97;;36108:2;36104:7;36099:2;36092:5;36088:14;36084:28;36074:38;;36068:49;;;;36125:105;36208:1;36201:5;36198:12;36188:2;;36214:9;36188:2;36182:48;;36237:112;36327:1;36320:5;36317:12;36307:2;;36333:9;36307:2;36301:48;;36356:109;36443:1;36436:5;36433:12;36423:2;;36449:9;36423:2;36417:48;;36472:117;36541:24;36559:5;36541:24;;;36534:5;36531:35;36521:2;;36580:1;36577;36570:12;36521:2;36515:74;;36596:111;36662:21;36677:5;36662:21;;;36655:5;36652:32;36642:2;;36698:1;36695;36688:12;36642:2;36636:71;;36714:143;36796:37;36827:5;36796:37;;;36789:5;36786:48;36776:2;;36848:1;36845;36838:12;36776:2;36770:87;;36864:117;36933:24;36951:5;36933:24;;;36926:5;36923:35;36913:2;;36972:1;36969;36962:12;36913:2;36907:74;

Swarm Source

bzzr://f42d1f7381f5d13765a59afb35775476f9e517117c6ac0c2b99afabfeb555400

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.