Contract 0x8816B2Fb982281c36E6c535B9e56B7a4417e68cF

 
 
Txn Hash
Method
Block
From
To
Value
0xf61c5afb61aff63f846a4bcbfca2fd3d59d8c502d37f40d4562e116690a56a18Set Controller107614372020-08-30 9:37:45886 days 2 hrs ago0x2d407ddb06311396fe14d4b49da5f0471447d45c IN  0x8816b2fb982281c36e6c535b9e56b7a4417e68cf0 Ether0.0062634220
0x4316b6bb4afc6f328d2bac6320d512c46f3c10036bcf3dad7e3b2fba3bf89264Set Controller107613992020-08-30 9:28:48886 days 3 hrs ago0x2d407ddb06311396fe14d4b49da5f0471447d45c IN  0x8816b2fb982281c36e6c535b9e56b7a4417e68cf0 Ether0.0062634220
0x85a1219d066f6a9821ffeac5a162259a961213ae1d701e12b4ebbb7fe8a08dfbHarvest105678312020-07-31 14:14:56915 days 22 hrs agoFantom: Fantom Foundation IN  0x8816b2fb982281c36e6c535b9e56b7a4417e68cf0 Ether0.0895938392
0x7425ef5506443e6c458e316820efc30630209121f75fa40ac8a73743aea23d27Harvest105665282020-07-31 9:25:26916 days 3 hrs agoFantom: Fantom Foundation IN  0x8816b2fb982281c36e6c535b9e56b7a4417e68cf0 Ether0.0876461490
0x1ec15af2dd4aa0b1024751623e2f2431bf4b4e06957faa59f6829caa741518aaHarvest105650592020-07-31 4:01:28916 days 8 hrs agoFantom: Fantom Foundation IN  0x8816b2fb982281c36e6c535b9e56b7a4417e68cf0 Ether0.0613522963
0xcbddb51023f9b51aeee60583871e22f02f91128142665a59fae5f6bfc92dafe4Harvest105635832020-07-30 22:26:43916 days 14 hrs ago0x166ed9f7a56053c7c4e77cb0c91a9e46bbc5e8b0 IN  0x8816b2fb982281c36e6c535b9e56b7a4417e68cf0 Ether0.0541555355
0x5e4e4ebab0d3c500f378ccf3cac2a708624d8fb4bad0845fe7a7231e08862087Harvest105621962020-07-30 17:19:58916 days 19 hrs ago0x2d407ddb06311396fe14d4b49da5f0471447d45c IN  0x8816b2fb982281c36e6c535b9e56b7a4417e68cf0 Ether0.0777870379
0xe1aad70d5f252fdf3a39fd3b98e94ef2e775342bdab9ce86dd63e77d97ae311bHarvest105612252020-07-30 13:34:16916 days 23 hrs ago0x2d407ddb06311396fe14d4b49da5f0471447d45c IN  0x8816b2fb982281c36e6c535b9e56b7a4417e68cf0 Ether0.0740122976
0x532d48c6126b927169db4ad2be820b3ff2ae31f8dd0335583900abc815c46469Harvest105607312020-07-30 11:43:53917 days 53 mins ago0x2d407ddb06311396fe14d4b49da5f0471447d45c IN  0x8816b2fb982281c36e6c535b9e56b7a4417e68cf0 Ether0.0738484575
0x59d2afdd1f2948f4173b9a2b9bb32a3ff628c6edc0bd3d7c3366f1cf84d9790aHarvest105601972020-07-30 9:40:09917 days 2 hrs ago0x2d407ddb06311396fe14d4b49da5f0471447d45c IN  0x8816b2fb982281c36e6c535b9e56b7a4417e68cf0 Ether0.0827769185
0x7d5d21a358e7cf7a7f7e1e7f1b481256d26cebf7c8733f5767f89d8a78296f14Harvest105595282020-07-30 7:06:45917 days 5 hrs ago0x2d407ddb06311396fe14d4b49da5f0471447d45c IN  0x8816b2fb982281c36e6c535b9e56b7a4417e68cf0 Ether0.0790080880
0x81854683d64b2744690f6d6d8b00902a1a2a86496ce04b656fcd7dc07f7eac220x60806040105594372020-07-30 6:48:29917 days 5 hrs ago0x2d407ddb06311396fe14d4b49da5f0471447d45c IN  Create: StrategyYfii0 Ether0.2193869680
[ Download CSV Export 
View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
StrategyYfii

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-07-30
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.5.17;

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 decimals() external view returns (uint);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // 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");
        }
    }
}

interface Controller {
    function vaults(address) external view returns (address);
    function rewards() external view returns (address);
}

/*

 A strategy must implement the following calls;
 
 - deposit()
 - withdraw(address) must exclude any tokens used in the yield - Controller role - withdraw should return to Controller
 - withdraw(uint) - Controller | Vault role - withdraw should always return to vault
 - withdrawAll() - Controller | Vault role - withdraw should always return to vault
 - balanceOf()
 
 Where possible, strategies must remain as immutable as possible, instead of updating variables, we update the contract by linking it in the controller
 
*/

interface Yfii {
    function withdraw(uint) external;
    function getReward() external;
    function stake(uint) external;
    function balanceOf(address) external view returns (uint);
    function exit() external;
}

contract Balancer {
    function joinPool(uint poolAmountOut, uint[] calldata maxAmountsIn) external;
    function exitPool(uint poolAmountIn, uint[] calldata minAmountsOut) external;
    function swapExactAmountIn(
        address tokenIn,
        uint tokenAmountIn,
        address tokenOut,
        uint minAmountOut,
        uint maxPrice
    ) external returns (uint tokenAmountOut, uint spotPriceAfter);
    function swapExactAmountOut(
        address tokenIn,
        uint maxAmountIn,
        address tokenOut,
        uint tokenAmountOut,
        uint maxPrice
    ) external returns (uint tokenAmountIn, uint spotPriceAfter);
    function joinswapExternAmountIn(address tokenIn, uint tokenAmountIn, uint minPoolAmountOut) external returns (uint poolAmountOut);
    function exitswapPoolAmountIn(address tokenOut, uint poolAmountIn, uint minAmountOut) external returns (uint tokenAmountOut);
}

interface yERC20 {
  function deposit(uint256 _amount) external;
  function withdraw(uint256 _amount) external;
}

interface ICurveFi {

  function get_virtual_price() external view returns (uint);
  function add_liquidity(
    uint256[4] calldata amounts,
    uint256 min_mint_amount
  ) external;
  function remove_liquidity_imbalance(
    uint256[4] calldata amounts,
    uint256 max_burn_amount
  ) external;
  function remove_liquidity(
    uint256 _amount,
    uint256[4] calldata amounts
  ) external;
  function exchange(
    int128 from, int128 to, uint256 _from_amount, uint256 _min_to_amount
  ) external;
}

contract StrategyYfii {
    using SafeERC20 for IERC20;
    using Address for address;
    using SafeMath for uint256;
    
    address constant public want = address(0xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8);
    address constant public pool = address(0xb81D3cB2708530ea990a287142b82D058725C092);
    address constant public yfii = address(0xa1d0E215a23d7030842FC67cE582a6aFa3CCaB83);
    address constant public balancer = address(0x16cAC1403377978644e78769Daa49d8f6B6CF565);
    address constant public curve = address(0x45F783CCE6B7FF23B2ab2D70e416cdb7D6055f51);
    
    address constant public dai = address(0x6B175474E89094C44Da98b954EedeAC495271d0F);
    address constant public ydai = address(0x16de59092dAE5CcF4A1E6439D611fd0653f0Bd01);
    
    uint constant public fee = 5000;
    uint constant public max = 10000;
    
    address public governance;
    address public controller;
    
    constructor(address _controller) public {
        governance = msg.sender;
        controller = _controller;
    }
    
    function deposit() external {
        IERC20(want).safeApprove(pool, 0);
        IERC20(want).safeApprove(pool, IERC20(want).balanceOf(address(this)));
        Yfii(pool).stake(IERC20(want).balanceOf(address(this)));
    }
    
    // Controller only function for creating additional rewards from dust
    function withdraw(IERC20 _asset) external returns (uint balance) {
        require(msg.sender == controller, "!controller");
        balance = _asset.balanceOf(address(this));
        _asset.safeTransfer(controller, balance);
    }
    
    // Withdraw partial funds, normally used with a vault withdrawal
    function withdraw(uint _amount) external {
        require(msg.sender == controller, "!controller");
        uint _balance = IERC20(want).balanceOf(address(this));
        if (_balance < _amount) {
            _amount = _withdrawSome(_amount.sub(_balance));
            _amount = _amount.add(_balance);
        }
        
        address _vault = Controller(controller).vaults(address(want));
        require(_vault != address(0), "!vault"); // additional protection so we don't burn the funds
        IERC20(want).safeTransfer(_vault, _amount);
    }
    
    // Withdraw all funds, normally used when migrating strategies
    function withdrawAll() external returns (uint balance) {
        require(msg.sender == controller, "!controller");
        _withdrawAll();
        balance = IERC20(want).balanceOf(address(this));
        
        address _vault = Controller(controller).vaults(address(want));
        require(_vault != address(0), "!vault"); // additional protection so we don't burn the funds
        IERC20(want).safeTransfer(_vault, balance);
        
    }
    
    function _withdrawAll() internal {
        harvest();
        Yfii(pool).exit();
    }
    
    function harvest() public {
        Yfii(pool).getReward();
        IERC20(yfii).safeApprove(balancer, 0);
        IERC20(yfii).safeApprove(balancer, IERC20(yfii).balanceOf(address(this)));
        Balancer(balancer).swapExactAmountIn(yfii, IERC20(yfii).balanceOf(address(this)), dai, 0, uint(-1));
        IERC20(dai).safeApprove(ydai, 0);
        IERC20(dai).safeApprove(ydai, IERC20(dai).balanceOf(address(this)));
        yERC20(ydai).deposit(IERC20(dai).balanceOf(address(this)));
        IERC20(ydai).safeApprove(curve, 0);
        IERC20(ydai).safeApprove(curve, IERC20(ydai).balanceOf(address(this)));
        uint _before = IERC20(want).balanceOf(address(this));
        ICurveFi(curve).add_liquidity([IERC20(ydai).balanceOf(address(this)),0,0,0],0);
        uint _after = IERC20(want).balanceOf(address(this));
        uint _fee = _after.sub(_before).mul(fee).div(max);
        IERC20(want).safeTransfer(Controller(controller).rewards(), _fee);
        IERC20(want).safeApprove(pool, 0);
        IERC20(want).safeApprove(pool, IERC20(want).balanceOf(address(this)));
        Yfii(pool).stake(IERC20(want).balanceOf(address(this)));
    }
    
    function _withdrawSome(uint256 _amount) internal returns (uint) {
        Yfii(pool).withdraw(_amount);
        return _amount;
    }
    
    function balanceOfCurve() public view returns (uint) {
        return IERC20(want).balanceOf(address(this));
    }
    
    function balanceOfYfii() public view returns (uint) {
        return Yfii(pool).balanceOf(address(this));
    }
    
    function balanceOf() public view returns (uint) {
        return balanceOfCurve()
               .add(balanceOfYfii());
    }
    
    function setGovernance(address _governance) external {
        require(msg.sender == governance, "!governance");
        governance = _governance;
    }
    
    function setController(address _controller) external {
        require(msg.sender == governance, "!governance");
        controller = _controller;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":true,"inputs":[],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceOfCurve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceOfYfii","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balancer","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"controller","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"curve","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dai","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"harvest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"max","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pool","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"setController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"want","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC20","name":"_asset","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAll","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ydai","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"yfii","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b506040516130c63803806130c68339818101604052602081101561003357600080fd5b8101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050612ff1806100d56000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063722713f7116100b8578063d2a9d8621161007c578063d2a9d86214610448578063ddca3f4314610492578063e563037e146104b0578063f4b9fa75146104fa578063f77c479114610544578063fd0afef71461058e57610137565b8063722713f71461037a578063853828b61461039857806392eefe9b146103b6578063ab033ea9146103fa578063d0e30db01461043e57610137565b80634e0212ab116100ff5780634e0212ab1461025257806351cff8d9146102705780635aa6e675146102c85780636ac5db19146103125780637165485d1461033057610137565b806316f0115b1461013c5780631f1fcd51146101865780632e1a7d4d146101d0578063366cd4f3146101fe5780634641257d14610248575b600080fd5b6101446105ac565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61018e6105c4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101fc600480360360208110156101e657600080fd5b81019080803590602001909291905050506105dc565b005b610206610983565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61025061099b565b005b61025a6118f3565b6040518082815260200191505060405180910390f35b6102b26004803603602081101561028657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119c6565b6040518082815260200191505060405180910390f35b6102d0611b97565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61031a611bbc565b6040518082815260200191505060405180910390f35b610338611bc2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610382611bda565b6040518082815260200191505060405180910390f35b6103a0611c02565b6040518082815260200191505060405180910390f35b6103f8600480360360208110156103cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f75565b005b61043c6004803603602081101561041057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061207b565b005b610446612180565b005b61045061243e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61049a612456565b6040518082815260200191505060405180910390f35b6104b861245c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610502612474565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61054c61248c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105966124b2565b6040518082815260200191505060405180910390f35b73b81d3cb2708530ea990a287142b82d058725c09281565b73df5e0e81dff6faf3a7e52ba697820c5e32d806a881565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461069f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561073257600080fd5b505afa158015610746573d6000803e3d6000fd5b505050506040513d602081101561075c57600080fd5b81019080805190602001909291905050509050818110156107aa5761079261078d828461258590919063ffffffff16565b6125cf565b91506107a7818361265890919063ffffffff16565b91505b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a622ee7c73df5e0e81dff6faf3a7e52ba697820c5e32d806a86040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561085f57600080fd5b505afa158015610873573d6000803e3d6000fd5b505050506040513d602081101561088957600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561093f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f217661756c74000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61097e818473df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166126e09092919063ffffffff16565b505050565b7316de59092dae5ccf4a1e6439d611fd0653f0bd0181565b73b81d3cb2708530ea990a287142b82d058725c09273ffffffffffffffffffffffffffffffffffffffff16633d18b9126040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156109f757600080fd5b505af1158015610a0b573d6000803e3d6000fd5b50505050610a637316cac1403377978644e78769daa49d8f6b6cf565600073a1d0e215a23d7030842fc67ce582a6afa3ccab8373ffffffffffffffffffffffffffffffffffffffff166127b19092919063ffffffff16565b610b817316cac1403377978644e78769daa49d8f6b6cf56573a1d0e215a23d7030842fc67ce582a6afa3ccab8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610b0c57600080fd5b505afa158015610b20573d6000803e3d6000fd5b505050506040513d6020811015610b3657600080fd5b810190808051906020019092919050505073a1d0e215a23d7030842fc67ce582a6afa3ccab8373ffffffffffffffffffffffffffffffffffffffff166127b19092919063ffffffff16565b7316cac1403377978644e78769daa49d8f6b6cf56573ffffffffffffffffffffffffffffffffffffffff16638201aa3f73a1d0e215a23d7030842fc67ce582a6afa3ccab838073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c4357600080fd5b505afa158015610c57573d6000803e3d6000fd5b505050506040513d6020811015610c6d57600080fd5b8101908080519060200190929190505050736b175474e89094c44da98b954eedeac495271d0f60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001955050505050506040805180830381600087803b158015610d5f57600080fd5b505af1158015610d73573d6000803e3d6000fd5b505050506040513d6040811015610d8957600080fd5b8101908080519060200190929190805190602001909291905050505050610dfa7316de59092dae5ccf4a1e6439d611fd0653f0bd016000736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166127b19092919063ffffffff16565b610f187316de59092dae5ccf4a1e6439d611fd0653f0bd01736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610ea357600080fd5b505afa158015610eb7573d6000803e3d6000fd5b505050506040513d6020811015610ecd57600080fd5b8101908080519060200190929190505050736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166127b19092919063ffffffff16565b7316de59092dae5ccf4a1e6439d611fd0653f0bd0173ffffffffffffffffffffffffffffffffffffffff1663b6b55f25736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610fd957600080fd5b505afa158015610fed573d6000803e3d6000fd5b505050506040513d602081101561100357600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561104a57600080fd5b505af115801561105e573d6000803e3d6000fd5b505050506110b67345f783cce6b7ff23b2ab2d70e416cdb7d6055f5160007316de59092dae5ccf4a1e6439d611fd0653f0bd0173ffffffffffffffffffffffffffffffffffffffff166127b19092919063ffffffff16565b6111d47345f783cce6b7ff23b2ab2d70e416cdb7d6055f517316de59092dae5ccf4a1e6439d611fd0653f0bd0173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561115f57600080fd5b505afa158015611173573d6000803e3d6000fd5b505050506040513d602081101561118957600080fd5b81019080805190602001909291905050507316de59092dae5ccf4a1e6439d611fd0653f0bd0173ffffffffffffffffffffffffffffffffffffffff166127b19092919063ffffffff16565b600073df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561126757600080fd5b505afa15801561127b573d6000803e3d6000fd5b505050506040513d602081101561129157600080fd5b810190808051906020019092919050505090507345f783cce6b7ff23b2ab2d70e416cdb7d6055f5173ffffffffffffffffffffffffffffffffffffffff1663029b2f3460405180608001604052807316de59092dae5ccf4a1e6439d611fd0653f0bd0173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561137057600080fd5b505afa158015611384573d6000803e3d6000fd5b505050506040513d602081101561139a57600080fd5b810190808051906020019092919050505081526020016000815260200160008152602001600081525060006040518363ffffffff1660e01b81526004018083600460200280838360005b838110156113ff5780820151818401526020810190506113e4565b5050505090500182815260200192505050600060405180830381600087803b15801561142a57600080fd5b505af115801561143e573d6000803e3d6000fd5b50505050600073df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156114d557600080fd5b505afa1580156114e9573d6000803e3d6000fd5b505050506040513d60208110156114ff57600080fd5b81019080805190602001909291905050509050600061154f612710611541611388611533878761258590919063ffffffff16565b6129d190919063ffffffff16565b612a5790919063ffffffff16565b9050611632600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639ec5a8946040518163ffffffff1660e01b815260040160206040518083038186803b1580156115bc57600080fd5b505afa1580156115d0573d6000803e3d6000fd5b505050506040513d60208110156115e657600080fd5b81019080805190602001909291905050508273df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166126e09092919063ffffffff16565b61168673b81d3cb2708530ea990a287142b82d058725c092600073df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166127b19092919063ffffffff16565b6117a473b81d3cb2708530ea990a287142b82d058725c09273df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561172f57600080fd5b505afa158015611743573d6000803e3d6000fd5b505050506040513d602081101561175957600080fd5b810190808051906020019092919050505073df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166127b19092919063ffffffff16565b73b81d3cb2708530ea990a287142b82d058725c09273ffffffffffffffffffffffffffffffffffffffff1663a694fc3a73df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561186557600080fd5b505afa158015611879573d6000803e3d6000fd5b505050506040513d602081101561188f57600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156118d657600080fd5b505af11580156118ea573d6000803e3d6000fd5b50505050505050565b600073df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561198657600080fd5b505afa15801561199a573d6000803e3d6000fd5b505050506040513d60208110156119b057600080fd5b8101908080519060200190929190505050905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611b0857600080fd5b505afa158015611b1c573d6000803e3d6000fd5b505050506040513d6020811015611b3257600080fd5b81019080805190602001909291905050509050611b92600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166126e09092919063ffffffff16565b919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61271081565b7345f783cce6b7ff23b2ab2d70e416cdb7d6055f5181565b6000611bfd611be76124b2565b611bef6118f3565b61265890919063ffffffff16565b905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b611ccf612aa1565b73df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d6057600080fd5b505afa158015611d74573d6000803e3d6000fd5b505050506040513d6020811015611d8a57600080fd5b810190808051906020019092919050505090506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a622ee7c73df5e0e81dff6faf3a7e52ba697820c5e32d806a86040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611e5257600080fd5b505afa158015611e66573d6000803e3d6000fd5b505050506040513d6020811015611e7c57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f32576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f217661756c74000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611f71818373df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166126e09092919063ffffffff16565b5090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461213d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6121d473b81d3cb2708530ea990a287142b82d058725c092600073df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166127b19092919063ffffffff16565b6122f273b81d3cb2708530ea990a287142b82d058725c09273df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561227d57600080fd5b505afa158015612291573d6000803e3d6000fd5b505050506040513d60208110156122a757600080fd5b810190808051906020019092919050505073df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166127b19092919063ffffffff16565b73b81d3cb2708530ea990a287142b82d058725c09273ffffffffffffffffffffffffffffffffffffffff1663a694fc3a73df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156123b357600080fd5b505afa1580156123c7573d6000803e3d6000fd5b505050506040513d60208110156123dd57600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561242457600080fd5b505af1158015612438573d6000803e3d6000fd5b50505050565b73a1d0e215a23d7030842fc67ce582a6afa3ccab8381565b61138881565b7316cac1403377978644e78769daa49d8f6b6cf56581565b736b175474e89094c44da98b954eedeac495271d0f81565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073b81d3cb2708530ea990a287142b82d058725c09273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561254557600080fd5b505afa158015612559573d6000803e3d6000fd5b505050506040513d602081101561256f57600080fd5b8101908080519060200190929190505050905090565b60006125c783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b1f565b905092915050565b600073b81d3cb2708530ea990a287142b82d058725c09273ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561263857600080fd5b505af115801561264c573d6000803e3d6000fd5b50505050819050919050565b6000808284019050838110156126d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6127ac838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612bdf565b505050565b60008114806128ab575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561286e57600080fd5b505afa158015612882573d6000803e3d6000fd5b505050506040513d602081101561289857600080fd5b8101908080519060200190929190505050145b612900576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180612f876036913960400191505060405180910390fd5b6129cc838473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612bdf565b505050565b6000808314156129e45760009050612a51565b60008284029050828482816129f557fe5b0414612a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612f3c6021913960400191505060405180910390fd5b809150505b92915050565b6000612a9983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e2a565b905092915050565b612aa961099b565b73b81d3cb2708530ea990a287142b82d058725c09273ffffffffffffffffffffffffffffffffffffffff1663e9fad8ee6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612b0557600080fd5b505af1158015612b19573d6000803e3d6000fd5b50505050565b6000838311158290612bcc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612b91578082015181840152602081019050612b76565b50505050905090810190601f168015612bbe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b612bfe8273ffffffffffffffffffffffffffffffffffffffff16612ef0565b612c70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310612cbf5780518252602082019150602081019050602083039250612c9c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612d21576040519150601f19603f3d011682016040523d82523d6000602084013e612d26565b606091505b509150915081612d9e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115612e2457808060200190516020811015612dbd57600080fd5b8101908080519060200190929190505050612e23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612f5d602a913960400191505060405180910390fd5b5b50505050565b60008083118290612ed6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e9b578082015181840152602081019050612e80565b50505050905090810190601f168015612ec85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612ee257fe5b049050809150509392505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b8214158015612f325750808214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158201d1660552b42fd81bdde610581c25c7bcbf8dc733a3d63d8c8b1bb33a6e2530364736f6c6343000511003200000000000000000000000031317f9a5e4cc1d231bdf07755c994015a96a37c

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000031317f9a5e4cc1d231bdf07755c994015a96a37c

-----Decoded View---------------
Arg [0] : _controller (address): 0x31317F9A5E4cC1d231bdf07755C994015A96A37c

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000031317f9a5e4cc1d231bdf07755c994015a96a37c


Deployed ByteCode Sourcemap

7167:4934:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7167:4934:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7389:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7300;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8851:562;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8851:562:0;;;;;;;;;;;;;;;;;:::i;:::-;;7844:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10058:1165;;;:::i;:::-;;11383:116;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8534:235;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8534:235:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8022:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7977:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7660:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11636:128;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9493:452;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11943:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11943:155:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;11776;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11776:155:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;8221:226;;;:::i;:::-;;7478:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7939:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7567:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7756:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8054:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11511:113;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7389:82;7428:42;7389:82;:::o;7300:::-;7339:42;7300:82;:::o;8851:562::-;8925:10;;;;;;;;;;;8911:24;;:10;:24;;;8903:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8962:13;7339:42;8978:22;;;9009:4;8978:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8978:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8978:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8978:37:0;;;;;;;;;;;;;;;;8962:53;;9041:7;9030:8;:18;9026:143;;;9075:36;9089:21;9101:8;9089:7;:11;;:21;;;;:::i;:::-;9075:13;:36::i;:::-;9065:46;;9136:21;9148:8;9136:7;:11;;:21;;;;:::i;:::-;9126:31;;9026:143;9189:14;9217:10;;;;;;;;;;;9206:29;;;7339:42;9206:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9206:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9206:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9206:44:0;;;;;;;;;;;;;;;;9189:61;;9287:1;9269:20;;:6;:20;;;;9261:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9363:42;9389:6;9397:7;7339:42;9363:25;;;;:42;;;;;:::i;:::-;8851:562;;;:::o;7844:82::-;7883:42;7844:82;:::o;10058:1165::-;7428:42;10095:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10095:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10095:22:0;;;;10128:37;7610:42;10163:1;7517:42;10128:24;;;;:37;;;;;:::i;:::-;10176:73;7610:42;7517;10211:22;;;10242:4;10211:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10211:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10211:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10211:37:0;;;;;;;;;;;;;;;;7517:42;10176:24;;;;:73;;;;;:::i;:::-;7610:42;10260:36;;;7517:42;;10303:22;;;10334:4;10303:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10303:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10303:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10303:37:0;;;;;;;;;;;;;;;;7794:42;10347:1;10355:2;10260:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10260:99:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10260:99:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10260:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;10370:32;7883:42;10400:1;7794:42;10370:23;;;;:32;;;;;:::i;:::-;10413:67;7883:42;7794;10443:21;;;10473:4;10443:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10443:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10443:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10443:36:0;;;;;;;;;;;;;;;;7794:42;10413:23;;;;:67;;;;;:::i;:::-;7883:42;10491:20;;;7794:42;10512:21;;;10542:4;10512:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10512:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10512:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10512:36:0;;;;;;;;;;;;;;;;10491:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10491:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10491:58:0;;;;10560:34;7700:42;10592:1;7883:42;10560:24;;;;:34;;;;;:::i;:::-;10605:70;7700:42;7883;10637:22;;;10668:4;10637:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10637:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10637:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10637:37:0;;;;;;;;;;;;;;;;7883:42;10605:24;;;;:70;;;;;:::i;:::-;10686:12;7339:42;10701:22;;;10732:4;10701:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10701:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10701:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10701:37:0;;;;;;;;;;;;;;;;10686:52;;7700:42;10749:29;;;:78;;;;;;;;7883:42;10780:22;;;10811:4;10780:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10780:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10780:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10780:37:0;;;;;;;;;;;;;;;;10749:78;;;;10818:1;10749:78;;;;10820:1;10749:78;;;;10822:1;10749:78;;;10825:1;10749:78;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10749:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10749:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10749:78:0;;;;10838:11;7339:42;10852:22;;;10883:4;10852:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10852:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10852:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10852:37:0;;;;;;;;;;;;;;;;10838:51;;10900:9;10912:37;8004:5;10912:28;7966:4;10912:19;10923:7;10912:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;:32;;:37;;;;:::i;:::-;10900:49;;10960:65;10997:10;;;;;;;;;;;10986:30;;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10986:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10986:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10986:32:0;;;;;;;;;;;;;;;;11020:4;7339:42;10960:25;;;;:65;;;;;:::i;:::-;11036:33;7428:42;11067:1;7339:42;11036:24;;;;:33;;;;;:::i;:::-;11080:69;7428:42;7339;11111:22;;;11142:4;11111:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11111:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11111:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11111:37:0;;;;;;;;;;;;;;;;7339:42;11080:24;;;;:69;;;;;:::i;:::-;7428:42;11160:16;;;7339:42;11177:22;;;11208:4;11177:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11177:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11177:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11177:37:0;;;;;;;;;;;;;;;;11160:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11160:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11160:55:0;;;;10058:1165;;;:::o;11383:116::-;11430:4;7339:42;11454:22;;;11485:4;11454:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11454:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11454:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11454:37:0;;;;;;;;;;;;;;;;11447:44;;11383:116;:::o;8534:235::-;8585:12;8632:10;;;;;;;;;;;8618:24;;:10;:24;;;8610:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8679:6;:16;;;8704:4;8679:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8679:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8679:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8679:31:0;;;;;;;;;;;;;;;;8669:41;;8721:40;8741:10;;;;;;;;;;;8753:7;8721:6;:19;;;;:40;;;;;:::i;:::-;8534:235;;;:::o;8022:25::-;;;;;;;;;;;;;:::o;7977:32::-;8004:5;7977:32;:::o;7660:83::-;7700:42;7660:83;:::o;11636:128::-;11678:4;11702:54;11740:15;:13;:15::i;:::-;11702:16;:14;:16::i;:::-;:37;;:54;;;;:::i;:::-;11695:61;;11636:128;:::o;9493:452::-;9534:12;9581:10;;;;;;;;;;;9567:24;;:10;:24;;;9559:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9618:14;:12;:14::i;:::-;7339:42;9653:22;;;9684:4;9653:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9653:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9653:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9653:37:0;;;;;;;;;;;;;;;;9643:47;;9711:14;9739:10;;;;;;;;;;;9728:29;;;7339:42;9728:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9728:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9728:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9728:44:0;;;;;;;;;;;;;;;;9711:61;;9809:1;9791:20;;:6;:20;;;;9783:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9885:42;9911:6;9919:7;7339:42;9885:25;;;;:42;;;;;:::i;:::-;9493:452;;:::o;11943:155::-;12029:10;;;;;;;;;;;12015:24;;:10;:24;;;12007:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12079:11;12066:10;;:24;;;;;;;;;;;;;;;;;;11943:155;:::o;11776:::-;11862:10;;;;;;;;;;;11848:24;;:10;:24;;;11840:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11912:11;11899:10;;:24;;;;;;;;;;;;;;;;;;11776:155;:::o;8221:226::-;8260:33;7428:42;8291:1;7339:42;8260:24;;;;:33;;;;;:::i;:::-;8304:69;7428:42;7339;8335:22;;;8366:4;8335:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8335:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8335:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8335:37:0;;;;;;;;;;;;;;;;7339:42;8304:24;;;;:69;;;;;:::i;:::-;7428:42;8384:16;;;7339:42;8401:22;;;8432:4;8401:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8401:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8401:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8401:37:0;;;;;;;;;;;;;;;;8384:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8384:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8384:55:0;;;;8221:226::o;7478:82::-;7517:42;7478:82;:::o;7939:31::-;7966:4;7939:31;:::o;7567:86::-;7610:42;7567:86;:::o;7756:81::-;7794:42;7756:81;:::o;8054:25::-;;;;;;;;;;;;;:::o;11511:113::-;11557:4;7428:42;11581:20;;;11610:4;11581:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11581:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11581:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11581:35:0;;;;;;;;;;;;;;;;11574:42;;11511:113;:::o;1006:136::-;1064:7;1091:43;1095:1;1098;1091:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1084:50;;1006:136;;;;:::o;11235:::-;11293:4;7428:42;11310:19;;;11330:7;11310:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11310:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11310:28:0;;;;11356:7;11349:14;;11235:136;;;:::o;819:181::-;877:7;897:9;913:1;909;:5;897:17;;938:1;933;:6;;925:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:1;984:8;;;819:181;;;;:::o;3319:176::-;3402:85;3421:5;3451;:14;;;:23;;;;3476:2;3480:5;3428:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3428: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;;;3428:58:0;3402:18;:85::i;:::-;3319:176;;;:::o;3715:347::-;3820:1;3811:5;:10;3810:62;;;;3870:1;3827:5;:15;;;3851:4;3858:7;3827:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3827:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3827:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3827:39:0;;;;;;;;;;;;;;;;:44;3810:62;3802:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3965:89;3984:5;4014;:13;;;:22;;;;4038:7;4047:5;3991:62;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3991:62: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;;;3991:62:0;3965:18;:89::i;:::-;3715:347;;;:::o;1346:250::-;1404:7;1433:1;1428;:6;1424:47;;;1458:1;1451:8;;;;1424:47;1483:9;1499:1;1495;:5;1483:17;;1528:1;1523;1519;:5;;;;;;:10;1511:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1587:1;1580:8;;;1346:250;;;;;:::o;1602:132::-;1660:7;1687:39;1691:1;1694;1687:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1680:46;;1602:132;;;;:::o;9957:89::-;10001:9;:7;:9::i;:::-;7428:42;10021:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10021:17:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10021:17:0;;;;9957:89::o;1148:192::-;1234:7;1267:1;1262;:6;;1270:12;1254:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1254:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1294:9;1310:1;1306;:5;1294:17;;1331:1;1324:8;;;1148:192;;;;;:::o;4068:598::-;4156:27;4164:5;4156:25;;;:27::i;:::-;4148:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4293:12;4307:23;4342:5;4334:19;;4354:4;4334:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4334:25:0;;;;;;;;;;;;;;;;;;;;;;;;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;;4292:67:0;;;;4378:7;4370:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4459:1;4439:10;:17;:21;4435:224;;;4581:10;4570:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4570:30:0;;;;;;;;;;;;;;;;4562:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4435:224;4068:598;;;;:::o;1740:258::-;1826:7;1925:1;1921;:5;1928:12;1913:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1913:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1952:9;1968:1;1964;:5;;;;;;1952:17;;1989:1;1982:8;;;1740:258;;;;;:::o;2336:374::-;2396:4;2413:16;2440:19;2462:66;2440:88;;;;2631:7;2619:20;2607:32;;2671:3;2659:15;;:8;:15;;:42;;;;;2690:11;2678:8;:23;;2659:42;2651:51;;;;2336:374;;;:::o

Swarm Source

bzzr://1d1660552b42fd81bdde610581c25c7bcbf8dc733a3d63d8c8b1bb33a6e25303
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

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.