ETH Price: $3,348.90 (-1.18%)

Token

GearAutomatic (AUTO)
 

Overview

Max Total Supply

7,609.108881604080282793 AUTO

Holders

51 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 AUTO

Value
$0.00
0x8958aa993cd456dd4e7f62f4a05df44b92c9f103
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Gear Protocol is a decentralized finance (DeFi) platform, mainly developed to provide digital solutions to the traditional system of farming.

IEO Information

IEO Address : 0xE77eA4D4C65Fa692CCcac1295f6C27C7B43E23C8
IEO Start Date : Oct 13, 2020
IEO End Date : Oct 17, 2020
IEO Price : $6
Public Sale Allocation : 300
Public Sale Vesting Period : 2 hours
Country : South Africa
Soft Cap : 19 ETH
Hard Cap : 69 ETH
Raised : 19 ETH
Token Distribution Date : Oct 17, 2020

 

Private Sale Information

Private Sale Token Price : $5
Private Sale Allocation : 980
Private Sale Vesting Period : 2 hours

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
GearAutomatic

Compiler Version
v0.4.26+commit.4563c3fc

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-10-17
*/

/*
 * A highly limited supply utility token of Gear Protocol
 * 
 *  Official Website: 
 *  https://www.GearProtocol.com
 */



pragma solidity ^0.4.25;

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

interface ApproveAndCallFallBack 
{
    function receiveApproval(address from, uint256 tokens, address token, bytes data) external;
}


library SafeMath 
{
    function mul(uint256 a, uint256 b) internal pure returns (uint256) 
    {
        if (a == 0) 
        {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }
    
    function div(uint256 a, uint256 b) internal pure returns (uint256) 
    {
        uint256 c = a / b;
        return c;
    }
    
    function sub(uint256 a, uint256 b) internal pure returns (uint256) 
    {
        assert(b <= a);
        return a - b;
    }
    
    function add(uint256 a, uint256 b) internal pure returns (uint256) 
    {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
    
    function ceil(uint256 a, uint256 m) internal pure returns (uint256) 
    {
        uint256 c = add(a,m);
        uint256 d = sub(c,1);
        return mul(div(d,m),m);
    }
}

contract ERC20Detailed is IERC20 
{
    string private _name;
    string private _symbol;
    uint8 private _decimals;
    
    constructor(string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }
    
    function name() public view returns(string memory) {
        return _name;
    }
    
    function symbol() public view returns(string memory) {
        return _symbol;
    }
    
    function decimals() public view returns(uint8) {
        return _decimals;
    }
}

contract GearAutomatic is ERC20Detailed 
{
    using SafeMath for uint256;
    
    mapping (address => uint256) private balances;
    mapping (address => mapping (address => uint256)) private allowed;
    
    string constant tokenName = "GearAutomatic";
    string constant tokenSymbol = "AUTO"; 
    uint8  constant tokenDecimals = 18;
    uint256 _totalSupply = 0;
  
    address public contractOwner;

    uint256 public fullUnitsFarmed_total = 0;
    uint256 public totalFarmers = 0;
    mapping (address => bool) public isFarming;

    uint256 _totalRewardsPerUnit = 0;
    mapping (address => uint256) private _totalRewardsPerUnit_positions;
    mapping (address => uint256) private _savedRewards;
    
    //these addresses won't be affected by network fee,ie liquidity pools
    mapping(address => bool) public whitelistFrom;
    mapping(address => bool) public whitelistTo;
    event WhitelistFrom(address _addr, bool _whitelisted);
    event WhitelistTo(address _addr, bool _whitelisted);
    
    constructor() public payable ERC20Detailed(tokenName, tokenSymbol, tokenDecimals) 
    {
        contractOwner = msg.sender;
        _supply(msg.sender, 10000*(10**uint256(tokenDecimals)));
    }
    
    modifier onlyOwner() {
        require(msg.sender == contractOwner, "only owner");
        _;
    }
    
    function totalSupply() public view returns (uint256) 
    {
        return _totalSupply;
    }
    
    function balanceOf(address owner) public view returns (uint256) 
    {
        return balances[owner];
    }
    
    function fullUnitsFarmed(address owner) external view returns (uint256) 
    {
        return isFarming[owner] ? toFullUnits(balances[owner]) : 0;
    }
    
    function toFullUnits(uint256 valueWithDecimals) public pure returns (uint256) 
    {
        return valueWithDecimals.div(10**uint256(tokenDecimals));
    }
    
    function allowance(address owner, address spender) public view returns (uint256) 
    {
        return allowed[owner][spender];
    }
    
    function transfer(address to, uint256 value) public returns (bool) 
    {
        _executeTransfer(msg.sender, to, value);
        return true;
    }
    
    function multiTransfer(address[] memory receivers, uint256[] memory values) public
    {
        require(receivers.length == values.length);
        for(uint256 i = 0; i < receivers.length; i++)
            _executeTransfer(msg.sender, receivers[i], values[i]);
    }
    
    function transferFrom(address from, address to, uint256 value) public returns (bool) 
    {
        require(value <= allowed[from][msg.sender]);
        allowed[from][msg.sender] = allowed[from][msg.sender].sub(value);
        _executeTransfer(from, to, value);
        return true;
    }
    
    function approve(address spender, uint256 value) public returns (bool) 
    {
        require(spender != address(0));
        allowed[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }
    
    
    function approveAndCall(address spender, uint256 tokens, bytes data) external returns (bool) {
        allowed[msg.sender][spender] = tokens;
        emit Approval(msg.sender, spender, tokens);
        ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, address(this), data);
        return true;
    }
    
    
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) 
    {
        require(spender != address(0));
        allowed[msg.sender][spender] = (allowed[msg.sender][spender].add(addedValue));
        emit Approval(msg.sender, spender, allowed[msg.sender][spender]);
        return true;
    }
    
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) 
    {
        require(spender != address(0));
        allowed[msg.sender][spender] = (allowed[msg.sender][spender].sub(subtractedValue));
        emit Approval(msg.sender, spender, allowed[msg.sender][spender]);
        return true;
    }
    
    function _supply(address account, uint256 value) internal onlyOwner
    {
        require(value != 0);
        
        uint256 initalBalance = balances[account];
        uint256 newBalance = initalBalance.add(value);
        
        balances[account] = newBalance;
        _totalSupply = _totalSupply.add(value);
        
        emit Transfer(address(0), account, value);
    }
    
    function burn(uint256 value) external 
    {
        _burn(msg.sender, value);
    }
    

    function _burn(address account, uint256 value) internal 
    {
        require(value != 0);
        require(value <= balances[account]);
        
        uint256 initalBalance = balances[account];
        uint256 newBalance = initalBalance.sub(value);
        
        balances[account] = newBalance;
        _totalSupply = _totalSupply.sub(value);
        
        //update full units farmed
        if(isFarming[account])
        {
            uint256 fus_total = fullUnitsFarmed_total;
            fus_total = fus_total.sub(toFullUnits(initalBalance));
            fus_total = fus_total.add(toFullUnits(newBalance));
            fullUnitsFarmed_total = fus_total;
        }
        
        emit Transfer(account, address(0), value);
    }
    
    /*
    *   transfer incurring a fee of 5%
    *   the receiver gets 95% of the sent value
    *   5% is distributed to AUTO farming pool
    */
    function _executeTransfer(address from, address to, uint256 value) private
    {
        require(value <= balances[from]);
        require(to != address(0) && to != from);
        require(to != address(this));
        
        
        //Update sender and receivers rewards - changing balances will change rewards shares
        updateRewardsFor(from);
        updateRewardsFor(to);
        
        uint256 fivePercent = 0;
        
        if(!whitelistFrom[from] && !whitelistTo[to])
        {
            fivePercent = value.mul(5).div(100);
            
            
            //set a minimum  rate to prevent no-fee-txs due to precision loss
            if(fivePercent == 0 && value > 0)
                fivePercent = 1;
        }
            
        uint256 initalBalance_from = balances[from];
        balances[from] = initalBalance_from.sub(value);
        
        value = value.sub(fivePercent);
        
        uint256 initalBalance_to = balances[to];
        balances[to] = initalBalance_to.add(value);
        
        emit Transfer(from, to, value);
         
        //update full units farmed
        uint256 fus_total = fullUnitsFarmed_total;
        if(isFarming[from])
        {
            fus_total = fus_total.sub(toFullUnits(initalBalance_from));
            fus_total = fus_total.add(toFullUnits(balances[from]));
        }
        if(isFarming[to])
        {
            fus_total = fus_total.sub(toFullUnits(initalBalance_to));
            fus_total = fus_total.add(toFullUnits(balances[to]));
        }
        
        if(isFarming[from] && balances[from] < 1)
        {
             updateRewardsFor(from);
             isFarming[from] = false;
             fullUnitsFarmed_total = fullUnitsFarmed_total.sub(toFullUnits(balances[from]));
             totalFarmers = totalFarmers.sub(1); 
        }
        
        
        fullUnitsFarmed_total = fus_total;
        
        if(fus_total > 0)
        {
            uint256 farmingRewards = fivePercent;
            //split up to rewards per unit in farm
            uint256 rewardsPerUnit = farmingRewards.div(fus_total);
            //apply reward
            _totalRewardsPerUnit = _totalRewardsPerUnit.add(rewardsPerUnit);
            balances[address(this)] = balances[address(this)].add(farmingRewards);
            if(farmingRewards > 0)
                emit Transfer(msg.sender, address(this), farmingRewards);
        }
        
    }
    
    //catch up with the current total harvest rewards. This needs to be done before an addresses balance is changed
    function updateRewardsFor(address farmer) private
    {
        _savedRewards[farmer] = viewHarvest(farmer);
        _totalRewardsPerUnit_positions[farmer] = _totalRewardsPerUnit;
    }
    
    //get all harvest rewards that have not been claimed yet
    function viewHarvest(address farmer) public view returns (uint256)
    {
        if(!isFarming[farmer])
            return _savedRewards[farmer];
        uint256 newRewardsPerUnit = _totalRewardsPerUnit.sub(_totalRewardsPerUnit_positions[farmer]);
        
        uint256 newRewards = newRewardsPerUnit.mul(toFullUnits(balances[farmer]));
        return _savedRewards[farmer].add(newRewards);
    }
    
    //pay out unclaimed harvest rewards
    function harvest() public
    {
        updateRewardsFor(msg.sender);
        uint256 rewards = _savedRewards[msg.sender];
        require(rewards > 0 && rewards <= balances[address(this)]);
        
        _savedRewards[msg.sender] = 0;
        
         uint256 fivePercent = 0;
         uint256 reward = 0;
        
        fivePercent = rewards.mul(5).div(100);
        
       //set a minimum  rate to prevent no harvest-fee-txs due to precision loss
            if(fivePercent == 0 && rewards > 0) {
                fivePercent = 1;
        }
        
        reward = rewards.sub(fivePercent);
        
        uint256 initalBalance_farmer = balances[msg.sender];
        uint256 newBalance_farmer = initalBalance_farmer.add(reward);
        
        //update full units farmed
        if(isFarming[msg.sender])
        {
            uint256 fus_total = fullUnitsFarmed_total;
            fus_total = fus_total.sub(toFullUnits(initalBalance_farmer));
            fus_total = fus_total.add(toFullUnits(newBalance_farmer));
            fullUnitsFarmed_total = fus_total;
        }
        
        //transfer
        balances[address(this)] = balances[address(this)].sub(rewards);
        balances[msg.sender] = newBalance_farmer;
        balances[contractOwner] = balances[contractOwner].add(fivePercent);
        emit Transfer(address(this), msg.sender, rewards);
        emit Transfer(address(this), contractOwner, fivePercent);
    }
    
    function enableFarming() public { _enableFarming(msg.sender);  }
    
    function disableFarming() public { _disableFarming(msg.sender); }
    
    function enableFarmingFor(address farmer) public onlyOwner { _enableFarming(farmer); }
    
    function disableFarmingFor(address farmer) public onlyOwner { _disableFarming(farmer); }
    
    //enable farming for target address
    function _enableFarming(address farmer) private
    {
        require(!isFarming[farmer]);
        updateRewardsFor(farmer);
        isFarming[farmer] = true;
        fullUnitsFarmed_total = fullUnitsFarmed_total.add(toFullUnits(balances[farmer]));
        totalFarmers = totalFarmers.add(1);
    }
    
    //disable farming for target address
    function _disableFarming(address farmer) private
    {
        require(isFarming[farmer]);
        updateRewardsFor(farmer);
        isFarming[farmer] = false;
        fullUnitsFarmed_total = fullUnitsFarmed_total.sub(toFullUnits(balances[farmer]));
        totalFarmers = totalFarmers.sub(1);
    }
    
    //withdraw tokens that were sent to this contract by accident
    function withdrawERC20Tokens(address tokenAddress, uint256 amount) public onlyOwner
    {
        require(tokenAddress != address(this));
        IERC20(tokenAddress).transfer(msg.sender, amount);
    }
    
    //no fees if receiver is whitelisted
    function setWhitelistedTo(address _addr, bool _whitelisted) external onlyOwner {
        emit WhitelistTo(_addr, _whitelisted);
        whitelistTo[_addr] = _whitelisted;
    }

    //no fees if sender is whitelisted
    function setWhitelistedFrom(address _addr, bool _whitelisted) external onlyOwner {
        emit WhitelistFrom(_addr, _whitelisted);
        whitelistFrom[_addr] = _whitelisted;
    }
    
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"fullUnitsFarmed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistTo","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"receivers","type":"address[]"},{"name":"values","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disableFarming","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"harvest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"farmer","type":"address"}],"name":"disableFarmingFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"fullUnitsFarmed_total","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalFarmers","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enableFarming","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isFarming","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"farmer","type":"address"}],"name":"enableFarmingFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_whitelisted","type":"bool"}],"name":"setWhitelistedTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"valueWithDecimals","type":"uint256"}],"name":"toFullUnits","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"contractOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdrawERC20Tokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"farmer","type":"address"}],"name":"viewHarvest","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_whitelisted","type":"bool"}],"name":"setWhitelistedFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":true,"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_addr","type":"address"},{"indexed":false,"name":"_whitelisted","type":"bool"}],"name":"WhitelistFrom","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_addr","type":"address"},{"indexed":false,"name":"_whitelisted","type":"bool"}],"name":"WhitelistTo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

60806040526000600555600060075560006008556000600a556040805190810160405280600d81526020017f476561724175746f6d61746963000000000000000000000000000000000000008152506040805190810160405280600481526020017f4155544f00000000000000000000000000000000000000000000000000000000815250601282600090805190602001906200009e9291906200037e565b508160019080519060200190620000b79291906200037e565b5080600260006101000a81548160ff021916908360ff16021790555050505033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200013d33601260ff16600a0a6127100262000143640100000000026401000000009004565b6200042d565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200020c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600083141515156200021d57600080fd5b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491506200028283836200035f6401000000000262002ea6179091906401000000009004565b905080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620002ed836005546200035f6401000000000262002ea6179091906401000000009004565b6005819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b60008082840190508381101515156200037457fe5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003c157805160ff1916838001178555620003f2565b82800160010185558215620003f2579182015b82811115620003f1578251825591602001919060010190620003d4565b5b50905062000401919062000405565b5090565b6200042a91905b80821115620004265760008160009055506001016200040c565b5090565b90565b61346e806200043d6000396000f30060806040526004361061018b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610190578063095ea7b3146102205780630a5a81401461028557806316b627d1146102dc57806318160ddd146103375780631e89d5451461036257806323b872dd1461040b578063313ce5671461049057806339509351146104c15780633d43d2c51461052657806342966c681461053d57806343684b211461056a5780634641257d146105c55780634abde8a3146105dc57806358c7eca51461061f5780636017509b1461064a57806370a08231146106755780637723c5f1146106cc5780637e6d87d8146106e357806395d89b411461073e578063a3ecc3b1146107ce578063a457c2d714610811578063a486309d14610876578063a9059cbb146108c5578063b1369e6a1461092a578063cae9ca511461096b578063ce606ee0146109e8578063dd62ed3e14610a3f578063e49cb2fb14610ab6578063ee03a55814610b03578063ff12bbf414610b5a575b600080fd5b34801561019c57600080fd5b506101a5610ba9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e55780820151818401526020810190506101ca565b50505050905090810190601f1680156102125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022c57600080fd5b5061026b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c4b565b604051808215151515815260200191505060405180910390f35b34801561029157600080fd5b506102c6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d78565b6040518082815260200191505060405180910390f35b3480156102e857600080fd5b5061031d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e22565b604051808215151515815260200191505060405180910390f35b34801561034357600080fd5b5061034c610e42565b6040518082815260200191505060405180910390f35b34801561036e57600080fd5b506104096004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610e4c565b005b34801561041757600080fd5b50610476600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610eb7565b604051808215151515815260200191505060405180910390f35b34801561049c57600080fd5b506104a5611069565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104cd57600080fd5b5061050c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611080565b604051808215151515815260200191505060405180910390f35b34801561053257600080fd5b5061053b6112b7565b005b34801561054957600080fd5b50610568600480360381019080803590602001909291905050506112c2565b005b34801561057657600080fd5b506105ab600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112cf565b604051808215151515815260200191505060405180910390f35b3480156105d157600080fd5b506105da6112ef565b005b3480156105e857600080fd5b5061061d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117d8565b005b34801561062b57600080fd5b506106346118a9565b6040518082815260200191505060405180910390f35b34801561065657600080fd5b5061065f6118af565b6040518082815260200191505060405180910390f35b34801561068157600080fd5b506106b6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118b5565b6040518082815260200191505060405180910390f35b3480156106d857600080fd5b506106e16118fe565b005b3480156106ef57600080fd5b50610724600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611909565b604051808215151515815260200191505060405180910390f35b34801561074a57600080fd5b50610753611929565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610793578082015181840152602081019050610778565b50505050905090810190601f1680156107c05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107da57600080fd5b5061080f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119cb565b005b34801561081d57600080fd5b5061085c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a9c565b604051808215151515815260200191505060405180910390f35b34801561088257600080fd5b506108c3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611cd3565b005b3480156108d157600080fd5b50610910600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e62565b604051808215151515815260200191505060405180910390f35b34801561093657600080fd5b5061095560048036038101908080359060200190929190505050611e79565b6040518082815260200191505060405180910390f35b34801561097757600080fd5b506109ce600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001919091929391929390505050611e9c565b604051808215151515815260200191505060405180910390f35b3480156109f457600080fd5b506109fd6120a1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a4b57600080fd5b50610aa0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120c7565b6040518082815260200191505060405180910390f35b348015610ac257600080fd5b50610b01600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061214e565b005b348015610b0f57600080fd5b50610b44600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612331565b6040518082815260200191505060405180910390f35b348015610b6657600080fd5b50610ba7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506124de565b005b606060008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c415780601f10610c1657610100808354040283529160200191610c41565b820191906000526020600020905b815481529060010190602001808311610c2457829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610c8857600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610dd2576000610e1b565b610e1a600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e79565b5b9050919050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000600554905090565b600081518351141515610e5e57600080fd5b600090505b8251811015610eb257610ea5338483815181101515610e7e57fe5b906020019060200201518484815181101515610e9657fe5b9060200190602002015161266d565b8080600101915050610e63565b505050565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610f4457600080fd5b610fd382600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e8d90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061105e84848461266d565b600190509392505050565b6000600260009054906101000a900460ff16905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156110bd57600080fd5b61114c82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea690919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6112c033612ec4565b565b6112cc3382612ffe565b50565b600d6020528060005260406000206000915054906101000a900460ff1681565b6000806000806000806113013361321c565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205495506000861180156113925750600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548611155b151561139d57600080fd5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600094506000935061141160646114036005896132b190919063ffffffff16565b6132ec90919063ffffffff16565b94506000851480156114235750600086115b1561142d57600194505b6114408587612e8d90919063ffffffff16565b9350600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492506114978484612ea690919063ffffffff16565b9150600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561153257600754905061150b6114fc84611e79565b82612e8d90919063ffffffff16565b905061152861151983611e79565b82612ea690919063ffffffff16565b9050806007819055505b61158486600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e8d90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061167f8560036000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea690919063ffffffff16565b60036000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561189d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6118a681612ec4565b50565b60075481565b60085481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61190733613307565b565b60096020528060005260406000206000915054906101000a900460ff1681565b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b5050505050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611a9981613307565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611ad957600080fd5b611b6882600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e8d90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f113828282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611e6f33848461266d565b6001905092915050565b6000611e95601260ff16600a0a836132ec90919063ffffffff16565b9050919050565b600083600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925866040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff16638f4ffcb133863087876040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825284848281815260200192508082843782019150509650505050505050600060405180830381600087803b15801561207d57600080fd5b505af1158015612091573d6000803e3d6000fd5b5050505060019050949350505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561224e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156122f157600080fd5b505af1158015612305573d6000803e3d6000fd5b505050506040513d602081101561231b57600080fd5b8101908080519060200190929190505050505050565b6000806000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156123d057600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492506124d7565b612424600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600a54612e8d90919063ffffffff16565b9150612480612471600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e79565b836132b190919063ffffffff16565b90506124d481600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea690919063ffffffff16565b92505b5050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080600080600080600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487111515156126c457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415801561272d57508873ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b151561273857600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415151561277357600080fd5b61277c8961321c565b6127858861321c565b60009550600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561282d5750600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561287657612859606461284b60058a6132b190919063ffffffff16565b6132ec90919063ffffffff16565b955060008614801561286b5750600087115b1561287557600195505b5b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205494506128cb8786612e8d90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129218688612e8d90919063ffffffff16565b9650600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205493506129788785612ea690919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef896040518082815260200191505060405180910390a36007549250600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612af157612a92612a8386611e79565b84612e8d90919063ffffffff16565b9250612aee612adf600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e79565b84612ea690919063ffffffff16565b92505b600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612bbd57612b5e612b4f85611e79565b84612e8d90919063ffffffff16565b9250612bba612bab600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e79565b84612ea690919063ffffffff16565b92505b600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c5557506001600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b15612d3a57612c638961321c565b6000600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612d17612d06600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e79565b600754612e8d90919063ffffffff16565b600781905550612d336001600854612e8d90919063ffffffff16565b6008819055505b826007819055506000831115612e8257859150612d6083836132ec90919063ffffffff16565b9050612d7781600a54612ea690919063ffffffff16565b600a81905550612dcf82600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea690919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115612e81573073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35b5b505050505050505050565b6000828211151515612e9b57fe5b818303905092915050565b6000808284019050838110151515612eba57fe5b8091505092915050565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612f1c57600080fd5b612f258161321c565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612fd9612fc8600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e79565b600754612e8d90919063ffffffff16565b600781905550612ff56001600854612e8d90919063ffffffff16565b60088190555050565b600080600080841415151561301257600080fd5b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054841115151561306057600080fd5b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492506130b58484612e8d90919063ffffffff16565b915081600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061311084600554612e8d90919063ffffffff16565b600581905550600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156131af57600754905061318861317984611e79565b82612e8d90919063ffffffff16565b90506131a561319683611e79565b82612ea690919063ffffffff16565b9050806007819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050565b61322581612331565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a54600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60008060008414156132c657600091506132e5565b82840290508284828115156132d757fe5b041415156132e157fe5b8091505b5092915050565b60008082848115156132fa57fe5b0490508091505092915050565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561336057600080fd5b6133698161321c565b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061341d61340c600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e79565b600754612ea690919063ffffffff16565b6007819055506134396001600854612ea690919063ffffffff16565b600881905550505600a165627a7a72305820fcc9120e83f085b9e60919b125a49e184e45b194366da508216c2beb29d8c1e40029

Deployed Bytecode

0x60806040526004361061018b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610190578063095ea7b3146102205780630a5a81401461028557806316b627d1146102dc57806318160ddd146103375780631e89d5451461036257806323b872dd1461040b578063313ce5671461049057806339509351146104c15780633d43d2c51461052657806342966c681461053d57806343684b211461056a5780634641257d146105c55780634abde8a3146105dc57806358c7eca51461061f5780636017509b1461064a57806370a08231146106755780637723c5f1146106cc5780637e6d87d8146106e357806395d89b411461073e578063a3ecc3b1146107ce578063a457c2d714610811578063a486309d14610876578063a9059cbb146108c5578063b1369e6a1461092a578063cae9ca511461096b578063ce606ee0146109e8578063dd62ed3e14610a3f578063e49cb2fb14610ab6578063ee03a55814610b03578063ff12bbf414610b5a575b600080fd5b34801561019c57600080fd5b506101a5610ba9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e55780820151818401526020810190506101ca565b50505050905090810190601f1680156102125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022c57600080fd5b5061026b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c4b565b604051808215151515815260200191505060405180910390f35b34801561029157600080fd5b506102c6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d78565b6040518082815260200191505060405180910390f35b3480156102e857600080fd5b5061031d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e22565b604051808215151515815260200191505060405180910390f35b34801561034357600080fd5b5061034c610e42565b6040518082815260200191505060405180910390f35b34801561036e57600080fd5b506104096004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610e4c565b005b34801561041757600080fd5b50610476600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610eb7565b604051808215151515815260200191505060405180910390f35b34801561049c57600080fd5b506104a5611069565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104cd57600080fd5b5061050c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611080565b604051808215151515815260200191505060405180910390f35b34801561053257600080fd5b5061053b6112b7565b005b34801561054957600080fd5b50610568600480360381019080803590602001909291905050506112c2565b005b34801561057657600080fd5b506105ab600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112cf565b604051808215151515815260200191505060405180910390f35b3480156105d157600080fd5b506105da6112ef565b005b3480156105e857600080fd5b5061061d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117d8565b005b34801561062b57600080fd5b506106346118a9565b6040518082815260200191505060405180910390f35b34801561065657600080fd5b5061065f6118af565b6040518082815260200191505060405180910390f35b34801561068157600080fd5b506106b6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118b5565b6040518082815260200191505060405180910390f35b3480156106d857600080fd5b506106e16118fe565b005b3480156106ef57600080fd5b50610724600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611909565b604051808215151515815260200191505060405180910390f35b34801561074a57600080fd5b50610753611929565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610793578082015181840152602081019050610778565b50505050905090810190601f1680156107c05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107da57600080fd5b5061080f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119cb565b005b34801561081d57600080fd5b5061085c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a9c565b604051808215151515815260200191505060405180910390f35b34801561088257600080fd5b506108c3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611cd3565b005b3480156108d157600080fd5b50610910600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e62565b604051808215151515815260200191505060405180910390f35b34801561093657600080fd5b5061095560048036038101908080359060200190929190505050611e79565b6040518082815260200191505060405180910390f35b34801561097757600080fd5b506109ce600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001919091929391929390505050611e9c565b604051808215151515815260200191505060405180910390f35b3480156109f457600080fd5b506109fd6120a1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a4b57600080fd5b50610aa0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120c7565b6040518082815260200191505060405180910390f35b348015610ac257600080fd5b50610b01600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061214e565b005b348015610b0f57600080fd5b50610b44600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612331565b6040518082815260200191505060405180910390f35b348015610b6657600080fd5b50610ba7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506124de565b005b606060008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c415780601f10610c1657610100808354040283529160200191610c41565b820191906000526020600020905b815481529060010190602001808311610c2457829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610c8857600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610dd2576000610e1b565b610e1a600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e79565b5b9050919050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000600554905090565b600081518351141515610e5e57600080fd5b600090505b8251811015610eb257610ea5338483815181101515610e7e57fe5b906020019060200201518484815181101515610e9657fe5b9060200190602002015161266d565b8080600101915050610e63565b505050565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610f4457600080fd5b610fd382600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e8d90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061105e84848461266d565b600190509392505050565b6000600260009054906101000a900460ff16905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156110bd57600080fd5b61114c82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea690919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6112c033612ec4565b565b6112cc3382612ffe565b50565b600d6020528060005260406000206000915054906101000a900460ff1681565b6000806000806000806113013361321c565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205495506000861180156113925750600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548611155b151561139d57600080fd5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600094506000935061141160646114036005896132b190919063ffffffff16565b6132ec90919063ffffffff16565b94506000851480156114235750600086115b1561142d57600194505b6114408587612e8d90919063ffffffff16565b9350600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492506114978484612ea690919063ffffffff16565b9150600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561153257600754905061150b6114fc84611e79565b82612e8d90919063ffffffff16565b905061152861151983611e79565b82612ea690919063ffffffff16565b9050806007819055505b61158486600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e8d90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061167f8560036000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea690919063ffffffff16565b60036000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561189d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6118a681612ec4565b50565b60075481565b60085481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61190733613307565b565b60096020528060005260406000206000915054906101000a900460ff1681565b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b5050505050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611a9981613307565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611ad957600080fd5b611b6882600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e8d90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f113828282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611e6f33848461266d565b6001905092915050565b6000611e95601260ff16600a0a836132ec90919063ffffffff16565b9050919050565b600083600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925866040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff16638f4ffcb133863087876040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825284848281815260200192508082843782019150509650505050505050600060405180830381600087803b15801561207d57600080fd5b505af1158015612091573d6000803e3d6000fd5b5050505060019050949350505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561224e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156122f157600080fd5b505af1158015612305573d6000803e3d6000fd5b505050506040513d602081101561231b57600080fd5b8101908080519060200190929190505050505050565b6000806000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156123d057600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492506124d7565b612424600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600a54612e8d90919063ffffffff16565b9150612480612471600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e79565b836132b190919063ffffffff16565b90506124d481600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea690919063ffffffff16565b92505b5050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080600080600080600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487111515156126c457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415801561272d57508873ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b151561273857600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415151561277357600080fd5b61277c8961321c565b6127858861321c565b60009550600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561282d5750600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561287657612859606461284b60058a6132b190919063ffffffff16565b6132ec90919063ffffffff16565b955060008614801561286b5750600087115b1561287557600195505b5b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205494506128cb8786612e8d90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129218688612e8d90919063ffffffff16565b9650600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205493506129788785612ea690919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef896040518082815260200191505060405180910390a36007549250600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612af157612a92612a8386611e79565b84612e8d90919063ffffffff16565b9250612aee612adf600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e79565b84612ea690919063ffffffff16565b92505b600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612bbd57612b5e612b4f85611e79565b84612e8d90919063ffffffff16565b9250612bba612bab600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e79565b84612ea690919063ffffffff16565b92505b600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c5557506001600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b15612d3a57612c638961321c565b6000600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612d17612d06600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e79565b600754612e8d90919063ffffffff16565b600781905550612d336001600854612e8d90919063ffffffff16565b6008819055505b826007819055506000831115612e8257859150612d6083836132ec90919063ffffffff16565b9050612d7781600a54612ea690919063ffffffff16565b600a81905550612dcf82600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea690919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115612e81573073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35b5b505050505050505050565b6000828211151515612e9b57fe5b818303905092915050565b6000808284019050838110151515612eba57fe5b8091505092915050565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612f1c57600080fd5b612f258161321c565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612fd9612fc8600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e79565b600754612e8d90919063ffffffff16565b600781905550612ff56001600854612e8d90919063ffffffff16565b60088190555050565b600080600080841415151561301257600080fd5b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054841115151561306057600080fd5b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492506130b58484612e8d90919063ffffffff16565b915081600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061311084600554612e8d90919063ffffffff16565b600581905550600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156131af57600754905061318861317984611e79565b82612e8d90919063ffffffff16565b90506131a561319683611e79565b82612ea690919063ffffffff16565b9050806007819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050565b61322581612331565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a54600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60008060008414156132c657600091506132e5565b82840290508284828115156132d757fe5b041415156132e157fe5b8091505b5092915050565b60008082848115156132fa57fe5b0490508091505092915050565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561336057600080fd5b6133698161321c565b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061341d61340c600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e79565b600754612ea690919063ffffffff16565b6007819055506134396001600854612ea690919063ffffffff16565b600881905550505600a165627a7a72305820fcc9120e83f085b9e60919b125a49e184e45b194366da508216c2beb29d8c1e40029

Deployed Bytecode Sourcemap

2454:12218:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2173:82;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2173:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2173:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5290:247;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5290:247:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4049:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4049:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3318:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3318:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3817:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3817:97:0;;;;;;;;;;;;;;;;;;;;;;;4700:272;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4700:272:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4984:294;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4984:294:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2365:82;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2365:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5896:326;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5896:326:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12931:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12931:65:0;;;;;;6985:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6985:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;3266:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3266:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11362:1481;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11362:1481:0;;;;;;13106:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13106:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2879:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2879:40:0;;;;;;;;;;;;;;;;;;;;;;;2926:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2926:31:0;;;;;;;;;;;;;;;;;;;;;;;3926:111;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3926:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12855:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12855:64:0;;;;;;2964:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2964:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2267:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2267:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2267:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13008;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13008:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6234:336;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6234:336:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14251:179;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14251:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4535:153;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4535:153:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4216:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4216:159:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5555:323;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5555:323:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2842:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2842:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;4387:136;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4387:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13991:206;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13991:206:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10902:407;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10902:407:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14478:185;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14478:185:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2173:82;2209:6;2242:5;2235:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2173:82;:::o;5290:247::-;5355:4;5405:1;5386:21;;:7;:21;;;;5378:30;;;;;;;;5450:5;5419:7;:19;5427:10;5419:19;;;;;;;;;;;;;;;:28;5439:7;5419:28;;;;;;;;;;;;;;;:36;;;;5492:7;5471:36;;5480:10;5471:36;;;5501:5;5471:36;;;;;;;;;;;;;;;;;;5525:4;5518:11;;5290:247;;;;:::o;4049:155::-;4112:7;4145:9;:16;4155:5;4145:16;;;;;;;;;;;;;;;;;;;;;;;;;:51;;4195:1;4145:51;;;4164:28;4176:8;:15;4185:5;4176:15;;;;;;;;;;;;;;;;4164:11;:28::i;:::-;4145:51;4138:58;;4049:155;;;:::o;3318:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;3817:97::-;3861:7;3894:12;;3887:19;;3817:97;:::o;4700:272::-;4856:9;4827:6;:13;4807:9;:16;:33;4799:42;;;;;;;;4868:1;4856:13;;4852:112;4875:9;:16;4871:1;:20;4852:112;;;4911:53;4928:10;4940:9;4950:1;4940:12;;;;;;;;;;;;;;;;;;4954:6;4961:1;4954:9;;;;;;;;;;;;;;;;;;4911:16;:53::i;:::-;4893:3;;;;;;;4852:112;;;4700:272;;;:::o;4984:294::-;5063:4;5103:7;:13;5111:4;5103:13;;;;;;;;;;;;;;;:25;5117:10;5103:25;;;;;;;;;;;;;;;;5094:5;:34;;5086:43;;;;;;;;5168:36;5198:5;5168:7;:13;5176:4;5168:13;;;;;;;;;;;;;;;:25;5182:10;5168:25;;;;;;;;;;;;;;;;:29;;:36;;;;:::i;:::-;5140:7;:13;5148:4;5140:13;;;;;;;;;;;;;;;:25;5154:10;5140:25;;;;;;;;;;;;;;;:64;;;;5215:33;5232:4;5238:2;5242:5;5215:16;:33::i;:::-;5266:4;5259:11;;4984:294;;;;;:::o;2365:82::-;2405:5;2430:9;;;;;;;;;;;2423:16;;2365:82;:::o;5896:326::-;5976:4;6026:1;6007:21;;:7;:21;;;;5999:30;;;;;;;;6072:44;6105:10;6072:7;:19;6080:10;6072:19;;;;;;;;;;;;;;;:28;6092:7;6072:28;;;;;;;;;;;;;;;;:32;;:44;;;;:::i;:::-;6040:7;:19;6048:10;6040:19;;;;;;;;;;;;;;;:28;6060:7;6040:28;;;;;;;;;;;;;;;:77;;;;6154:7;6133:59;;6142:10;6133:59;;;6163:7;:19;6171:10;6163:19;;;;;;;;;;;;;;;:28;6183:7;6163:28;;;;;;;;;;;;;;;;6133:59;;;;;;;;;;;;;;;;;;6210:4;6203:11;;5896:326;;;;:::o;12931:65::-;12966:27;12982:10;12966:15;:27::i;:::-;12931:65::o;6985:87::-;7040:24;7046:10;7058:5;7040;:24::i;:::-;6985:87;:::o;3266:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;11362:1481::-;11443:15;11627:19;11662:14;12001:28;12063:25;12230:17;11404:28;11421:10;11404:16;:28::i;:::-;11461:13;:25;11475:10;11461:25;;;;;;;;;;;;;;;;11443:43;;11515:1;11505:7;:11;:49;;;;;11531:8;:23;11548:4;11531:23;;;;;;;;;;;;;;;;11520:7;:34;;11505:49;11497:58;;;;;;;;11604:1;11576:13;:25;11590:10;11576:25;;;;;;;;;;;;;;;:29;;;;11649:1;11627:23;;11679:1;11662:18;;11715:23;11734:3;11715:14;11727:1;11715:7;:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;11701:37;;11863:1;11848:11;:16;:31;;;;;11878:1;11868:7;:11;11848:31;11845:82;;;11914:1;11900:15;;11845:82;11956:24;11968:11;11956:7;:11;;:24;;;;:::i;:::-;11947:33;;12032:8;:20;12041:10;12032:20;;;;;;;;;;;;;;;;12001:51;;12091:32;12116:6;12091:20;:24;;:32;;;;:::i;:::-;12063:60;;12183:9;:21;12193:10;12183:21;;;;;;;;;;;;;;;;;;;;;;;;;12180:298;;;12250:21;;12230:41;;12298:48;12312:33;12324:20;12312:11;:33::i;:::-;12298:9;:13;;:48;;;;:::i;:::-;12286:60;;12373:45;12387:30;12399:17;12387:11;:30::i;:::-;12373:9;:13;;:45;;;;:::i;:::-;12361:57;;12457:9;12433:21;:33;;;;12180:298;12544:36;12572:7;12544:8;:23;12561:4;12544:23;;;;;;;;;;;;;;;;:27;;:36;;;;:::i;:::-;12518:8;:23;12535:4;12518:23;;;;;;;;;;;;;;;:62;;;;12614:17;12591:8;:20;12600:10;12591:20;;;;;;;;;;;;;;;:40;;;;12668;12696:11;12668:8;:23;12677:13;;;;;;;;;;;12668:23;;;;;;;;;;;;;;;;:27;;:40;;;;:::i;:::-;12642:8;:23;12651:13;;;;;;;;;;;12642:23;;;;;;;;;;;;;;;:66;;;;12748:10;12724:44;;12741:4;12724:44;;;12760:7;12724:44;;;;;;;;;;;;;;;;;;12808:13;;;;;;;;;;;12784:51;;12801:4;12784:51;;;12823:11;12784:51;;;;;;;;;;;;;;;;;;11362:1481;;;;;;:::o;13106:88::-;3757:13;;;;;;;;;;;3743:27;;:10;:27;;;3735:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13168:23;13184:6;13168:15;:23::i;:::-;13106:88;:::o;2879:40::-;;;;:::o;2926:31::-;;;;:::o;3926:111::-;3981:7;4014:8;:15;4023:5;4014:15;;;;;;;;;;;;;;;;4007:22;;3926:111;;;:::o;12855:64::-;12889:26;12904:10;12889:14;:26::i;:::-;12855:64::o;2964:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;2267:86::-;2305:6;2338:7;2331:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2267:86;:::o;13008:::-;3757:13;;;;;;;;;;;3743:27;;:10;:27;;;3735:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13069:22;13084:6;13069:14;:22::i;:::-;13008:86;:::o;6234:336::-;6319:4;6369:1;6350:21;;:7;:21;;;;6342:30;;;;;;;;6415:49;6448:15;6415:7;:19;6423:10;6415:19;;;;;;;;;;;;;;;:28;6435:7;6415:28;;;;;;;;;;;;;;;;:32;;:49;;;;:::i;:::-;6383:7;:19;6391:10;6383:19;;;;;;;;;;;;;;;:28;6403:7;6383:28;;;;;;;;;;;;;;;:82;;;;6502:7;6481:59;;6490:10;6481:59;;;6511:7;:19;6519:10;6511:19;;;;;;;;;;;;;;;:28;6531:7;6511:28;;;;;;;;;;;;;;;;6481:59;;;;;;;;;;;;;;;;;;6558:4;6551:11;;6234:336;;;;:::o;14251:179::-;3757:13;;;;;;;;;;;3743:27;;:10;:27;;;3735:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14346:32;14358:5;14365:12;14346:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14410:12;14389:11;:18;14401:5;14389:18;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;14251:179;;:::o;4535:153::-;4596:4;4619:39;4636:10;4648:2;4652:5;4619:16;:39::i;:::-;4676:4;4669:11;;4535:153;;;;:::o;4216:159::-;4285:7;4318:49;2798:2;4344:22;;4340:2;:26;4318:17;:21;;:49;;;;:::i;:::-;4311:56;;4216:159;;;:::o;5555:323::-;5642:4;5690:6;5659:7;:19;5667:10;5659:19;;;;;;;;;;;;;;;:28;5679:7;5659:28;;;;;;;;;;;;;;;:37;;;;5733:7;5712:37;;5721:10;5712:37;;;5742:6;5712:37;;;;;;;;;;;;;;;;;;5783:7;5760:47;;;5808:10;5820:6;5836:4;5843;;5760:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5760:88:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5760:88:0;;;;5866:4;5859:11;;5555:323;;;;;;:::o;2842:28::-;;;;;;;;;;;;;:::o;4387:136::-;4459:7;4492;:14;4500:5;4492:14;;;;;;;;;;;;;;;:23;4507:7;4492:23;;;;;;;;;;;;;;;;4485:30;;4387:136;;;;:::o;13991:206::-;3757:13;;;;;;;;;;;3743:27;;:10;:27;;;3735:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14123:4;14099:29;;:12;:29;;;;14091:38;;;;;;;;14147:12;14140:29;;;14170:10;14182:6;14140:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14140:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14140:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14140:49:0;;;;;;;;;;;;;;;;;13991:206;;:::o;10902:407::-;10960:7;11060:25;11173:18;10989:9;:17;10999:6;10989:17;;;;;;;;;;;;;;;;;;;;;;;;;10988:18;10985:64;;;11028:13;:21;11042:6;11028:21;;;;;;;;;;;;;;;;11021:28;;;;10985:64;11088;11113:30;:38;11144:6;11113:38;;;;;;;;;;;;;;;;11088:20;;:24;;:64;;;;:::i;:::-;11060:92;;11194:52;11216:29;11228:8;:16;11237:6;11228:16;;;;;;;;;;;;;;;;11216:11;:29::i;:::-;11194:17;:21;;:52;;;;:::i;:::-;11173:73;;11264:37;11290:10;11264:13;:21;11278:6;11264:21;;;;;;;;;;;;;;;;:25;;:37;;;;:::i;:::-;11257:44;;10902:407;;;;;;:::o;14478:185::-;3757:13;;;;;;;;;;;3743:27;;:10;:27;;;3735:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14575:34;14589:5;14596:12;14575:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14643:12;14620:13;:20;14634:5;14620:20;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;14478:185;;:::o;8014:2496::-;8425:19;8797:26;8969:24;9170:17;10023:22;10126;8122:8;:14;8131:4;8122:14;;;;;;;;;;;;;;;;8113:5;:23;;8105:32;;;;;;;;8170:1;8156:16;;:2;:16;;;;:30;;;;;8182:4;8176:10;;:2;:10;;;;8156:30;8148:39;;;;;;;;8220:4;8206:19;;:2;:19;;;;8198:28;;;;;;;;8351:22;8368:4;8351:16;:22::i;:::-;8384:20;8401:2;8384:16;:20::i;:::-;8447:1;8425:23;;8473:13;:19;8487:4;8473:19;;;;;;;;;;;;;;;;;;;;;;;;;8472:20;:40;;;;;8497:11;:15;8509:2;8497:15;;;;;;;;;;;;;;;;;;;;;;;;;8496:16;8472:40;8469:304;;;8552:21;8569:3;8552:12;8562:1;8552:5;:9;;:12;;;;:::i;:::-;:16;;:21;;;;:::i;:::-;8538:35;;8713:1;8698:11;:16;:29;;;;;8726:1;8718:5;:9;8698:29;8695:66;;;8760:1;8746:15;;8695:66;8469:304;8826:8;:14;8835:4;8826:14;;;;;;;;;;;;;;;;8797:43;;8868:29;8891:5;8868:18;:22;;:29;;;;:::i;:::-;8851:8;:14;8860:4;8851:14;;;;;;;;;;;;;;;:46;;;;8926:22;8936:11;8926:5;:9;;:22;;;;:::i;:::-;8918:30;;8996:8;:12;9005:2;8996:12;;;;;;;;;;;;;;;;8969:39;;9034:27;9055:5;9034:16;:20;;:27;;;;:::i;:::-;9019:8;:12;9028:2;9019:12;;;;;;;;;;;;;;;:42;;;;9102:2;9087:25;;9096:4;9087:25;;;9106:5;9087:25;;;;;;;;;;;;;;;;;;9190:21;;9170:41;;9225:9;:15;9235:4;9225:15;;;;;;;;;;;;;;;;;;;;;;;;;9222:183;;;9278:46;9292:31;9304:18;9292:11;:31::i;:::-;9278:9;:13;;:46;;;;:::i;:::-;9266:58;;9351:42;9365:27;9377:8;:14;9386:4;9377:14;;;;;;;;;;;;;;;;9365:11;:27::i;:::-;9351:9;:13;;:42;;;;:::i;:::-;9339:54;;9222:183;9418:9;:13;9428:2;9418:13;;;;;;;;;;;;;;;;;;;;;;;;;9415:177;;;9469:44;9483:29;9495:16;9483:11;:29::i;:::-;9469:9;:13;;:44;;;;:::i;:::-;9457:56;;9540:40;9554:25;9566:8;:12;9575:2;9566:12;;;;;;;;;;;;;;;;9554:11;:25::i;:::-;9540:9;:13;;:40;;;;:::i;:::-;9528:52;;9415:177;9615:9;:15;9625:4;9615:15;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;;;9651:1;9634:8;:14;9643:4;9634:14;;;;;;;;;;;;;;;;:18;9615:37;9612:285;;;9679:22;9696:4;9679:16;:22::i;:::-;9735:5;9717:9;:15;9727:4;9717:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;9780:54;9806:27;9818:8;:14;9827:4;9818:14;;;;;;;;;;;;;;;;9806:11;:27::i;:::-;9780:21;;:25;;:54;;;;:::i;:::-;9756:21;:78;;;;9865:19;9882:1;9865:12;;:16;;:19;;;;:::i;:::-;9850:12;:34;;;;9612:285;9951:9;9927:21;:33;;;;9996:1;9984:9;:13;9981:512;;;10048:11;10023:36;;10151:29;10170:9;10151:14;:18;;:29;;;;:::i;:::-;10126:54;;10246:40;10271:14;10246:20;;:24;;:40;;;;:::i;:::-;10223:20;:63;;;;10327:43;10355:14;10327:8;:23;10344:4;10327:23;;;;;;;;;;;;;;;;:27;;:43;;;;:::i;:::-;10301:8;:23;10318:4;10301:23;;;;;;;;;;;;;;;:69;;;;10405:1;10388:14;:18;10385:96;;;10459:4;10430:51;;10439:10;10430:51;;;10466:14;10430:51;;;;;;;;;;;;;;;;;;10385:96;9981:512;8014:2496;;;;;;;;;:::o;1371:129::-;1429:7;1467:1;1462;:6;;1455:14;;;;;;1491:1;1487;:5;1480:12;;1371:129;;;;:::o;1512:153::-;1570:7;1596:9;1612:1;1608;:5;1596:17;;1636:1;1631;:6;;1624:14;;;;;;1656:1;1649:8;;1512:153;;;;;:::o;13606:306::-;13679:9;:17;13689:6;13679:17;;;;;;;;;;;;;;;;;;;;;;;;;13671:26;;;;;;;;13708:24;13725:6;13708:16;:24::i;:::-;13763:5;13743:9;:17;13753:6;13743:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;13803:56;13829:29;13841:8;:16;13850:6;13841:16;;;;;;;;;;;;;;;;13829:11;:29::i;:::-;13803:21;;:25;;:56;;;;:::i;:::-;13779:21;:80;;;;13885:19;13902:1;13885:12;;:16;;:19;;;;:::i;:::-;13870:12;:34;;;;13606:306;:::o;7086:763::-;7245:21;7297:18;7546:17;7176:1;7167:5;:10;;7159:19;;;;;;;;7206:8;:17;7215:7;7206:17;;;;;;;;;;;;;;;;7197:5;:26;;7189:35;;;;;;;;7269:8;:17;7278:7;7269:17;;;;;;;;;;;;;;;;7245:41;;7318:24;7336:5;7318:13;:17;;:24;;;;:::i;:::-;7297:45;;7383:10;7363:8;:17;7372:7;7363:17;;;;;;;;;;;;;;;:30;;;;7419:23;7436:5;7419:12;;:16;;:23;;;;:::i;:::-;7404:12;:38;;;;7502:9;:18;7512:7;7502:18;;;;;;;;;;;;;;;;;;;;;;;;;7499:281;;;7566:21;;7546:41;;7614;7628:26;7640:13;7628:11;:26::i;:::-;7614:9;:13;;:41;;;;:::i;:::-;7602:53;;7682:38;7696:23;7708:10;7696:11;:23::i;:::-;7682:9;:13;;:38;;;;:::i;:::-;7670:50;;7759:9;7735:21;:33;;;;7499:281;7831:1;7805:36;;7814:7;7805:36;;;7835:5;7805:36;;;;;;;;;;;;;;;;;;7086:763;;;;;:::o;10639:189::-;10729:19;10741:6;10729:11;:19::i;:::-;10705:13;:21;10719:6;10705:21;;;;;;;;;;;;;;;:43;;;;10800:20;;10759:30;:38;10790:6;10759:38;;;;;;;;;;;;;;;:61;;;;10639:189;:::o;995:224::-;1053:7;1146:9;1088:1;1083;:6;1079:57;;;1123:1;1116:8;;;;1079:57;1162:1;1158;:5;1146:17;;1190:1;1185;1181;:5;;;;;;;;:10;1174:18;;;;;;1210:1;1203:8;;995:224;;;;;;:::o;1231:128::-;1289:7;1315:9;1331:1;1327;:5;;;;;;;;1315:17;;1350:1;1343:8;;1231:128;;;;;:::o;13247:305::-;13320:9;:17;13330:6;13320:17;;;;;;;;;;;;;;;;;;;;;;;;;13319:18;13311:27;;;;;;;;13349:24;13366:6;13349:16;:24::i;:::-;13404:4;13384:9;:17;13394:6;13384:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;13443:56;13469:29;13481:8;:16;13490:6;13481:16;;;;;;;;;;;;;;;;13469:11;:29::i;:::-;13443:21;;:25;;:56;;;;:::i;:::-;13419:21;:80;;;;13525:19;13542:1;13525:12;;:16;;:19;;;;:::i;:::-;13510:12;:34;;;;13247:305;:::o

Swarm Source

bzzr://fcc9120e83f085b9e60919b125a49e184e45b194366da508216c2beb29d8c1e4
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.