Feature Tip: Add private address tag to any address under My Name Tag !
TUSD token contract has migrated to a new address. The new token can be found here.
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 137,356 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20395687 | 126 days ago | IN | 0 ETH | 0.00003289 | ||||
Transfer | 18493260 | 392 days ago | IN | 0 ETH | 0.00080286 | ||||
Transfer | 18493237 | 392 days ago | IN | 0 ETH | 0.00087151 | ||||
Transfer | 18425572 | 402 days ago | IN | 0 ETH | 0.00046947 | ||||
Transfer | 18425446 | 402 days ago | IN | 0 ETH | 0.000385 | ||||
Transfer | 17576630 | 521 days ago | IN | 0 ETH | 0.00050593 | ||||
Approve | 16560564 | 664 days ago | IN | 0 ETH | 0.00061742 | ||||
Approve | 16560429 | 664 days ago | IN | 0 ETH | 0.0006547 | ||||
Approve | 16533803 | 668 days ago | IN | 0 ETH | 0.00052391 | ||||
Approve | 16506024 | 672 days ago | IN | 0 ETH | 0.00051656 | ||||
Approve | 16505840 | 672 days ago | IN | 0 ETH | 0.00048781 | ||||
Approve | 16231927 | 710 days ago | IN | 0 ETH | 0.00042293 | ||||
Approve | 16195767 | 715 days ago | IN | 0 ETH | 0.00041615 | ||||
Approve | 16187327 | 716 days ago | IN | 0 ETH | 0.00042406 | ||||
_accept Admin | 16150872 | 721 days ago | IN | 0 ETH | 0.00029495 | ||||
Transfer | 15738501 | 779 days ago | IN | 0 ETH | 0.00039168 | ||||
Transfer | 15730986 | 780 days ago | IN | 0 ETH | 0.00047349 | ||||
Transfer | 15730971 | 780 days ago | IN | 0 ETH | 0.00043651 | ||||
Transfer | 15730957 | 780 days ago | IN | 0 ETH | 0.00050571 | ||||
Transfer | 15726196 | 780 days ago | IN | 0 ETH | 0.00083514 | ||||
Transfer | 15724933 | 781 days ago | IN | 0 ETH | 0.00086877 | ||||
Transfer | 15724924 | 781 days ago | IN | 0 ETH | 0.00075956 | ||||
Transfer | 15724920 | 781 days ago | IN | 0 ETH | 0.0008328 | ||||
Transfer | 15634175 | 793 days ago | IN | 0 ETH | 0.00054092 | ||||
Transfer | 15634149 | 793 days ago | IN | 0 ETH | 0.00054092 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
TrueUSD
Compiler Version
v0.4.19+commit.c4cbbb05
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-03-04 */ pragma solidity ^0.4.18; contract DelegateERC20 { function delegateTotalSupply() public view returns (uint256); function delegateBalanceOf(address who) public view returns (uint256); function delegateTransfer(address to, uint256 value, address origSender) public returns (bool); function delegateAllowance(address owner, address spender) public view returns (uint256); function delegateTransferFrom(address from, address to, uint256 value, address origSender) public returns (bool); function delegateApprove(address spender, uint256 value, address origSender) public returns (bool); function delegateIncreaseApproval(address spender, uint addedValue, address origSender) public returns (bool); function delegateDecreaseApproval(address spender, uint subtractedValue, address origSender) public returns (bool); } library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ 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; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ function Ownable() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); OwnershipTransferred(owner, newOwner); owner = newOwner; } } contract Pausable is Ownable { event Pause(); event Unpause(); bool public paused = false; /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(paused); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() onlyOwner whenNotPaused public { paused = true; Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() onlyOwner whenPaused public { paused = false; Unpause(); } } contract CanReclaimToken is Ownable { using SafeERC20 for ERC20Basic; /** * @dev Reclaim all ERC20Basic compatible tokens * @param token ERC20Basic The address of the token contract */ function reclaimToken(ERC20Basic token) external onlyOwner { uint256 balance = token.balanceOf(this); token.safeTransfer(owner, balance); } } contract Claimable is Ownable { address public pendingOwner; /** * @dev Modifier throws if called by any account other than the pendingOwner. */ modifier onlyPendingOwner() { require(msg.sender == pendingOwner); _; } /** * @dev Allows the current owner to set the pendingOwner address. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) onlyOwner public { pendingOwner = newOwner; } /** * @dev Allows the pendingOwner address to finalize the transfer. */ function claimOwnership() onlyPendingOwner public { OwnershipTransferred(owner, pendingOwner); owner = pendingOwner; pendingOwner = address(0); } } contract AddressList is Claimable { string public name; mapping (address => bool) public onList; function AddressList(string _name, bool nullValue) public { name = _name; onList[0x0] = nullValue; } event ChangeWhiteList(address indexed to, bool onList); // Set whether _to is on the list or not. Whether 0x0 is on the list // or not cannot be set here - it is set once and for all by the constructor. function changeList(address _to, bool _onList) onlyOwner public { require(_to != 0x0); if (onList[_to] != _onList) { onList[_to] = _onList; ChangeWhiteList(_to, _onList); } } } contract HasNoContracts is Ownable { /** * @dev Reclaim ownership of Ownable contracts * @param contractAddr The address of the Ownable to be reclaimed. */ function reclaimContract(address contractAddr) external onlyOwner { Ownable contractInst = Ownable(contractAddr); contractInst.transferOwnership(owner); } } contract HasNoEther is Ownable { /** * @dev Constructor that rejects incoming Ether * @dev The `payable` flag is added so we can access `msg.value` without compiler warning. If we * leave out payable, then Solidity will allow inheriting contracts to implement a payable * constructor. By doing it this way we prevent a payable constructor from working. Alternatively * we could use assembly to access msg.value. */ function HasNoEther() public payable { require(msg.value == 0); } /** * @dev Disallows direct send by settings a default function without the `payable` flag. */ function() external { } /** * @dev Transfer all Ether held by the contract to the owner. */ function reclaimEther() external onlyOwner { assert(owner.send(this.balance)); } } contract HasNoTokens is CanReclaimToken { /** * @dev Reject all ERC223 compatible tokens * @param from_ address The address that is transferring the tokens * @param value_ uint256 the amount of the specified token * @param data_ Bytes The data passed from the caller. */ function tokenFallback(address from_, uint256 value_, bytes data_) external { from_; value_; data_; revert(); } } contract NoOwner is HasNoEther, HasNoTokens, HasNoContracts { } contract AllowanceSheet is Claimable { using SafeMath for uint256; mapping (address => mapping (address => uint256)) public allowanceOf; function addAllowance(address tokenHolder, address spender, uint256 value) public onlyOwner { allowanceOf[tokenHolder][spender] = allowanceOf[tokenHolder][spender].add(value); } function subAllowance(address tokenHolder, address spender, uint256 value) public onlyOwner { allowanceOf[tokenHolder][spender] = allowanceOf[tokenHolder][spender].sub(value); } function setAllowance(address tokenHolder, address spender, uint256 value) public onlyOwner { allowanceOf[tokenHolder][spender] = value; } } contract BalanceSheet is Claimable { using SafeMath for uint256; mapping (address => uint256) public balanceOf; function addBalance(address addr, uint256 value) public onlyOwner { balanceOf[addr] = balanceOf[addr].add(value); } function subBalance(address addr, uint256 value) public onlyOwner { balanceOf[addr] = balanceOf[addr].sub(value); } function setBalance(address addr, uint256 value) public onlyOwner { balanceOf[addr] = value; } } contract ERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } contract BasicToken is ERC20Basic, Claimable { using SafeMath for uint256; BalanceSheet public balances; uint256 totalSupply_; function setBalanceSheet(address sheet) external onlyOwner { balances = BalanceSheet(sheet); balances.claimOwnership(); } /** * @dev total number of tokens in existence */ function totalSupply() public view returns (uint256) { return totalSupply_; } /** * @dev transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public returns (bool) { transferAllArgsNoAllowance(msg.sender, _to, _value); return true; } function transferAllArgsNoAllowance(address _from, address _to, uint256 _value) internal { require(_to != address(0)); require(_from != address(0)); require(_value <= balances.balanceOf(_from)); // SafeMath.sub will throw if there is not enough balance. balances.subBalance(_from, _value); balances.addBalance(_to, _value); Transfer(_from, _to, _value); } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public view returns (uint256 balance) { return balances.balanceOf(_owner); } } contract BurnableToken is BasicToken { event Burn(address indexed burner, uint256 value); /** * @dev Burns a specific amount of tokens. * @param _value The amount of token to be burned. */ function burn(uint256 _value) public { require(_value <= balances.balanceOf(msg.sender)); // no need to require value <= totalSupply, since that would imply the // sender's balance is greater than the totalSupply, which *should* be an assertion failure address burner = msg.sender; balances.subBalance(burner, _value); totalSupply_ = totalSupply_.sub(_value); Burn(burner, _value); Transfer(burner, address(0), _value); } } contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public view returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeERC20 { function safeTransfer(ERC20Basic token, address to, uint256 value) internal { assert(token.transfer(to, value)); } function safeTransferFrom(ERC20 token, address from, address to, uint256 value) internal { assert(token.transferFrom(from, to, value)); } function safeApprove(ERC20 token, address spender, uint256 value) internal { assert(token.approve(spender, value)); } } contract StandardToken is ERC20, BasicToken { AllowanceSheet public allowances; function setAllowanceSheet(address sheet) external onlyOwner { allowances = AllowanceSheet(sheet); allowances.claimOwnership(); } /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amount of tokens to be transferred */ function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { transferAllArgsYesAllowance(_from, _to, _value, msg.sender); return true; } function transferAllArgsYesAllowance(address _from, address _to, uint256 _value, address spender) internal { require(_value <= allowances.allowanceOf(_from, spender)); allowances.subAllowance(_from, spender, _value); transferAllArgsNoAllowance(_from, _to, _value); } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) public returns (bool) { approveAllArgs(_spender, _value, msg.sender); return true; } function approveAllArgs(address _spender, uint256 _value, address _tokenHolder) internal { allowances.setAllowance(_tokenHolder, _spender, _value); Approval(_tokenHolder, _spender, _value); } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address _owner, address _spender) public view returns (uint256) { return allowances.allowanceOf(_owner, _spender); } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * * approve should be called when allowed[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _addedValue The amount of tokens to increase the allowance by. */ function increaseApproval(address _spender, uint _addedValue) public returns (bool) { increaseApprovalAllArgs(_spender, _addedValue, msg.sender); return true; } function increaseApprovalAllArgs(address _spender, uint _addedValue, address tokenHolder) internal { allowances.addAllowance(tokenHolder, _spender, _addedValue); Approval(tokenHolder, _spender, allowances.allowanceOf(tokenHolder, _spender)); } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * * approve should be called when allowed[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) { decreaseApprovalAllArgs(_spender, _subtractedValue, msg.sender); return true; } function decreaseApprovalAllArgs(address _spender, uint _subtractedValue, address tokenHolder) internal { uint oldValue = allowances.allowanceOf(tokenHolder, _spender); if (_subtractedValue > oldValue) { allowances.setAllowance(tokenHolder, _spender, 0); } else { allowances.subAllowance(tokenHolder, _spender, _subtractedValue); } Approval(tokenHolder, _spender, allowances.allowanceOf(tokenHolder, _spender)); } } contract CanDelegate is StandardToken { // If this contract needs to be upgraded, the new contract will be stored // in 'delegate' and any ERC20 calls to this contract will be delegated to that one. DelegateERC20 public delegate; event DelegatedTo(address indexed newContract); // Can undelegate by passing in newContract = address(0) function delegateToNewContract(DelegateERC20 newContract) public onlyOwner { delegate = newContract; DelegatedTo(delegate); } // If a delegate has been designated, all ERC20 calls are forwarded to it function transfer(address to, uint256 value) public returns (bool) { if (delegate == address(0)) { return super.transfer(to, value); } else { return delegate.delegateTransfer(to, value, msg.sender); } } function transferFrom(address from, address to, uint256 value) public returns (bool) { if (delegate == address(0)) { return super.transferFrom(from, to, value); } else { return delegate.delegateTransferFrom(from, to, value, msg.sender); } } function balanceOf(address who) public view returns (uint256) { if (delegate == address(0)) { return super.balanceOf(who); } else { return delegate.delegateBalanceOf(who); } } function approve(address spender, uint256 value) public returns (bool) { if (delegate == address(0)) { return super.approve(spender, value); } else { return delegate.delegateApprove(spender, value, msg.sender); } } function allowance(address _owner, address spender) public view returns (uint256) { if (delegate == address(0)) { return super.allowance(_owner, spender); } else { return delegate.delegateAllowance(_owner, spender); } } function totalSupply() public view returns (uint256) { if (delegate == address(0)) { return super.totalSupply(); } else { return delegate.delegateTotalSupply(); } } function increaseApproval(address spender, uint addedValue) public returns (bool) { if (delegate == address(0)) { return super.increaseApproval(spender, addedValue); } else { return delegate.delegateIncreaseApproval(spender, addedValue, msg.sender); } } function decreaseApproval(address spender, uint subtractedValue) public returns (bool) { if (delegate == address(0)) { return super.decreaseApproval(spender, subtractedValue); } else { return delegate.delegateDecreaseApproval(spender, subtractedValue, msg.sender); } } } contract StandardDelegate is StandardToken, DelegateERC20 { address public delegatedFrom; modifier onlySender(address source) { require(msg.sender == source); _; } function setDelegatedFrom(address addr) onlyOwner public { delegatedFrom = addr; } // All delegate ERC20 functions are forwarded to corresponding normal functions function delegateTotalSupply() public view returns (uint256) { return totalSupply(); } function delegateBalanceOf(address who) public view returns (uint256) { return balanceOf(who); } function delegateTransfer(address to, uint256 value, address origSender) onlySender(delegatedFrom) public returns (bool) { transferAllArgsNoAllowance(origSender, to, value); return true; } function delegateAllowance(address owner, address spender) public view returns (uint256) { return allowance(owner, spender); } function delegateTransferFrom(address from, address to, uint256 value, address origSender) onlySender(delegatedFrom) public returns (bool) { transferAllArgsYesAllowance(from, to, value, origSender); return true; } function delegateApprove(address spender, uint256 value, address origSender) onlySender(delegatedFrom) public returns (bool) { approveAllArgs(spender, value, origSender); return true; } function delegateIncreaseApproval(address spender, uint addedValue, address origSender) onlySender(delegatedFrom) public returns (bool) { increaseApprovalAllArgs(spender, addedValue, origSender); return true; } function delegateDecreaseApproval(address spender, uint subtractedValue, address origSender) onlySender(delegatedFrom) public returns (bool) { decreaseApprovalAllArgs(spender, subtractedValue, origSender); return true; } } contract PausableToken is StandardToken, Pausable { function transfer(address _to, uint256 _value) public whenNotPaused returns (bool) { return super.transfer(_to, _value); } function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool) { return super.transferFrom(_from, _to, _value); } function approve(address _spender, uint256 _value) public whenNotPaused returns (bool) { return super.approve(_spender, _value); } function increaseApproval(address _spender, uint _addedValue) public whenNotPaused returns (bool success) { return super.increaseApproval(_spender, _addedValue); } function decreaseApproval(address _spender, uint _subtractedValue) public whenNotPaused returns (bool success) { return super.decreaseApproval(_spender, _subtractedValue); } } contract TrueUSD is StandardDelegate, PausableToken, BurnableToken, NoOwner, CanDelegate { string public name = "TrueUSD"; string public symbol = "TUSD"; uint8 public constant decimals = 18; AddressList public canReceiveMintWhiteList; AddressList public canBurnWhiteList; AddressList public blackList; AddressList public noFeesList; uint256 public burnMin = 10000 * 10**uint256(decimals); uint256 public burnMax = 20000000 * 10**uint256(decimals); uint80 public transferFeeNumerator = 7; uint80 public transferFeeDenominator = 10000; uint80 public mintFeeNumerator = 0; uint80 public mintFeeDenominator = 10000; uint256 public mintFeeFlat = 0; uint80 public burnFeeNumerator = 0; uint80 public burnFeeDenominator = 10000; uint256 public burnFeeFlat = 0; address public staker; event ChangeBurnBoundsEvent(uint256 newMin, uint256 newMax); event Mint(address indexed to, uint256 amount); event WipedAccount(address indexed account, uint256 balance); function TrueUSD() public { totalSupply_ = 0; staker = msg.sender; } function setLists(AddressList _canReceiveMintWhiteList, AddressList _canBurnWhiteList, AddressList _blackList, AddressList _noFeesList) onlyOwner public { canReceiveMintWhiteList = _canReceiveMintWhiteList; canBurnWhiteList = _canBurnWhiteList; blackList = _blackList; noFeesList = _noFeesList; } function changeName(string _name, string _symbol) onlyOwner public { name = _name; symbol = _symbol; } //Burning functions as withdrawing money from the system. The platform will keep track of who burns coins, //and will send them back the equivalent amount of money (rounded down to the nearest cent). function burn(uint256 _value) public { require(canBurnWhiteList.onList(msg.sender)); require(_value >= burnMin); require(_value <= burnMax); uint256 fee = payStakingFee(msg.sender, _value, burnFeeNumerator, burnFeeDenominator, burnFeeFlat, 0x0); uint256 remaining = _value.sub(fee); super.burn(remaining); } //Create _amount new tokens and transfer them to _to. //Based on code by OpenZeppelin: https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/token/MintableToken.sol function mint(address _to, uint256 _amount) onlyOwner public { require(canReceiveMintWhiteList.onList(_to)); totalSupply_ = totalSupply_.add(_amount); balances.addBalance(_to, _amount); Mint(_to, _amount); Transfer(address(0), _to, _amount); payStakingFee(_to, _amount, mintFeeNumerator, mintFeeDenominator, mintFeeFlat, 0x0); } //Change the minimum and maximum amount that can be burned at once. Burning //may be disabled by setting both to 0 (this will not be done under normal //operation, but we can't add checks to disallow it without losing a lot of //flexibility since burning could also be as good as disabled //by setting the minimum extremely high, and we don't want to lock //in any particular cap for the minimum) function changeBurnBounds(uint newMin, uint newMax) onlyOwner public { require(newMin <= newMax); burnMin = newMin; burnMax = newMax; ChangeBurnBoundsEvent(newMin, newMax); } // transfer and transferFrom are both dispatched to this function, so we // check blacklist and pay staking fee here. function transferAllArgsNoAllowance(address _from, address _to, uint256 _value) internal { require(!blackList.onList(_from)); require(!blackList.onList(_to)); super.transferAllArgsNoAllowance(_from, _to, _value); payStakingFee(_to, _value, transferFeeNumerator, transferFeeDenominator, 0, _from); } function wipeBlacklistedAccount(address account) public onlyOwner { require(blackList.onList(account)); uint256 oldValue = balanceOf(account); balances.setBalance(account, 0); totalSupply_ = totalSupply_.sub(oldValue); WipedAccount(account, oldValue); } function payStakingFee(address payer, uint256 value, uint80 numerator, uint80 denominator, uint256 flatRate, address otherParticipant) private returns (uint256) { if (noFeesList.onList(payer) || noFeesList.onList(otherParticipant)) { return 0; } uint256 stakingFee = value.mul(numerator).div(denominator).add(flatRate); if (stakingFee > 0) { super.transferAllArgsNoAllowance(payer, staker, stakingFee); } return stakingFee; } function changeStakingFees(uint80 _transferFeeNumerator, uint80 _transferFeeDenominator, uint80 _mintFeeNumerator, uint80 _mintFeeDenominator, uint256 _mintFeeFlat, uint80 _burnFeeNumerator, uint80 _burnFeeDenominator, uint256 _burnFeeFlat) public onlyOwner { require(_transferFeeDenominator != 0); require(_mintFeeDenominator != 0); require(_burnFeeDenominator != 0); transferFeeNumerator = _transferFeeNumerator; transferFeeDenominator = _transferFeeDenominator; mintFeeNumerator = _mintFeeNumerator; mintFeeDenominator = _mintFeeDenominator; mintFeeFlat = _mintFeeFlat; burnFeeNumerator = _burnFeeNumerator; burnFeeDenominator = _burnFeeDenominator; burnFeeFlat = _burnFeeFlat; } function changeStaker(address newStaker) public onlyOwner { require(newStaker != address(0)); staker = newStaker; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"burnMin","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"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":"spender","type":"address"}],"name":"delegateAllowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"burnFeeFlat","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_canReceiveMintWhiteList","type":"address"},{"name":"_canBurnWhiteList","type":"address"},{"name":"_blackList","type":"address"},{"name":"_noFeesList","type":"address"}],"name":"setLists","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"reclaimToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newContract","type":"address"}],"name":"delegateToNewContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_transferFeeNumerator","type":"uint80"},{"name":"_transferFeeDenominator","type":"uint80"},{"name":"_mintFeeNumerator","type":"uint80"},{"name":"_mintFeeDenominator","type":"uint80"},{"name":"_mintFeeFlat","type":"uint256"},{"name":"_burnFeeNumerator","type":"uint80"},{"name":"_burnFeeDenominator","type":"uint80"},{"name":"_burnFeeFlat","type":"uint256"}],"name":"changeStakingFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"canReceiveMintWhiteList","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","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":"delegatedFrom","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"},{"name":"origSender","type":"address"}],"name":"delegateApprove","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"contractAddr","type":"address"}],"name":"reclaimContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"allowances","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","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":"who","type":"address"}],"name":"delegateBalanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"origSender","type":"address"}],"name":"delegateTransferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"sheet","type":"address"}],"name":"setBalanceSheet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"},{"name":"origSender","type":"address"}],"name":"delegateIncreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"burnFeeNumerator","outputs":[{"name":"","type":"uint80"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"canBurnWhiteList","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"burnMax","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mintFeeDenominator","outputs":[{"name":"","type":"uint80"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"staker","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setDelegatedFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"noFeesList","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newMin","type":"uint256"},{"name":"newMax","type":"uint256"}],"name":"changeBurnBounds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"delegateTotalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balances","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"}],"name":"changeName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"mintFeeNumerator","outputs":[{"name":"","type":"uint80"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transferFeeNumerator","outputs":[{"name":"","type":"uint80"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"},{"name":"origSender","type":"address"}],"name":"delegateDecreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"origSender","type":"address"}],"name":"delegateTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"reclaimEther","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":false,"inputs":[{"name":"newStaker","type":"address"}],"name":"changeStaker","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"wipeBlacklistedAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from_","type":"address"},{"name":"value_","type":"uint256"},{"name":"data_","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"burnFeeDenominator","outputs":[{"name":"","type":"uint80"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"delegate","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"blackList","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transferFeeDenominator","outputs":[{"name":"","type":"uint80"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mintFeeFlat","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":true,"inputs":[],"name":"pendingOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"sheet","type":"address"}],"name":"setAllowanceSheet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newMin","type":"uint256"},{"indexed":false,"name":"newMax","type":"uint256"}],"name":"ChangeBurnBoundsEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"WipedAccount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"newContract","type":"address"}],"name":"DelegatedTo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"},{"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"}]
Contract Creation Code
60606040526000600560146101000a81548160ff0219169083151502179055506040805190810160405280600781526020017f5472756555534400000000000000000000000000000000000000000000000000815250600790805190602001906200006c929190620002a7565b506040805190810160405280600481526020017f545553440000000000000000000000000000000000000000000000000000000081525060089080519060200190620000ba929190620002a7565b50601260ff16600a0a61271002600d55601260ff16600a0a6301312d0002600e556007600f60006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550612710600f600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506000600f60146101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550612710601060006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060006011556000601260006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506127106012600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550600060135534156200020857600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000341415156200025857600080fd5b600060038190555033601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000356565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002ea57805160ff19168380011785556200031b565b828001600101855582156200031b579182015b828111156200031a578251825591602001919060010190620002fd565b5b5090506200032a91906200032e565b5090565b6200035391905b808211156200034f57600081600090555060010162000335565b5090565b90565b615ac980620003666000396000f3006060604052600436106102d5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806302d3fdc9146102e257806306fdde031461030b578063095ea7b31461039957806309ab8bba146103f35780630b8e845a1461045f5780630ce511791461048857806317ffc3201461051e57806318160ddd146105575780631d2d8400146105805780631db8cb3f146105b95780631f7af1df1461066357806323b872dd146106b857806326fe995114610731578063296f4000146107865780632aed7f3f146107ff578063313ce567146108385780633ed10b92146108675780633f4ba83a146108bc57806340c10f19146108d157806342966c681461091357806343a468c8146109365780634df6b45d146109835780634e71e0c814610a1b57806354f78dad14610a30578063554249b314610a6957806356e1c40d14610ae25780635a44413914610b235780635c131d7014610b785780635c975abb14610ba15780635db07aee14610bce5780635ebaf1db14610c0f57806361927adb14610c645780636618846314610c9d5780636d4717fe14610cf757806370a0823114610d4c57806370df42e114610d9957806376e71dd814610dc55780637bb98a6814610dee5780638456cb5914610e4357806386575e4014610e585780638d93eac214610ef85780638da5cb5b14610f395780638f98ce8f14610f8e57806393d3173a14610fcf57806395d89b41146110485780639cd1a121146110d65780639f727c271461114f578063a9059cbb14611164578063ab55979d146111be578063bd7243f6146111f7578063c0ee0b8a14611230578063c18f483114611286578063c89e4361146112c7578063cdab73b51461131c578063d42cfc4114611371578063d63a1389146113b2578063d73dd623146113db578063dd62ed3e14611435578063e30c3978146114a1578063edc1e4f9146114f6578063f2fde38b1461152f575b34156102e057600080fd5b005b34156102ed57600080fd5b6102f5611568565b6040518082815260200191505060405180910390f35b341561031657600080fd5b61031e61156e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561035e578082015181840152602081019050610343565b50505050905090810190601f16801561038b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103a457600080fd5b6103d9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061160c565b604051808215151515815260200191505060405180910390f35b34156103fe57600080fd5b610449600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061179a565b6040518082815260200191505060405180910390f35b341561046a57600080fd5b6104726117ae565b6040518082815260200191505060405180910390f35b341561049357600080fd5b61051c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117b4565b005b341561052957600080fd5b610555600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611919565b005b341561056257600080fd5b61056a611a86565b6040518082815260200191505060405180910390f35b341561058b57600080fd5b6105b7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b9c565b005b34156105c457600080fd5b610661600480803569ffffffffffffffffffff1690602001909190803569ffffffffffffffffffff1690602001909190803569ffffffffffffffffffff1690602001909190803569ffffffffffffffffffff1690602001909190803590602001909190803569ffffffffffffffffffff1690602001909190803569ffffffffffffffffffff16906020019091908035906020019091905050611ca0565b005b341561066e57600080fd5b610676611e75565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106c357600080fd5b610717600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611e9b565b604051808215151515815260200191505060405180910390f35b341561073c57600080fd5b61074461205f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561079157600080fd5b6107e5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612085565b604051808215151515815260200191505060405180910390f35b341561080a57600080fd5b610836600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506120fb565b005b341561084357600080fd5b61084b61222e565b604051808260ff1660ff16815260200191505060405180910390f35b341561087257600080fd5b61087a612233565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156108c757600080fd5b6108cf612259565b005b34156108dc57600080fd5b610911600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612318565b005b341561091e57600080fd5b610934600480803590602001909190505061264b565b005b341561094157600080fd5b61096d600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506127c1565b6040518082815260200191505060405180910390f35b341561098e57600080fd5b610a01600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506127d3565b604051808215151515815260200191505060405180910390f35b3415610a2657600080fd5b610a2e61284b565b005b3415610a3b57600080fd5b610a67600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506129ea565b005b3415610a7457600080fd5b610ac8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612b22565b604051808215151515815260200191505060405180910390f35b3415610aed57600080fd5b610af5612b98565b604051808269ffffffffffffffffffff1669ffffffffffffffffffff16815260200191505060405180910390f35b3415610b2e57600080fd5b610b36612bb4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610b8357600080fd5b610b8b612bda565b6040518082815260200191505060405180910390f35b3415610bac57600080fd5b610bb4612be0565b604051808215151515815260200191505060405180910390f35b3415610bd957600080fd5b610be1612bf3565b604051808269ffffffffffffffffffff1669ffffffffffffffffffff16815260200191505060405180910390f35b3415610c1a57600080fd5b610c22612c0f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610c6f57600080fd5b610c9b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612c35565b005b3415610ca857600080fd5b610cdd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612cd4565b604051808215151515815260200191505060405180910390f35b3415610d0257600080fd5b610d0a612e62565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610d5757600080fd5b610d83600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612e88565b6040518082815260200191505060405180910390f35b3415610da457600080fd5b610dc36004808035906020019091908035906020019091905050612fd8565b005b3415610dd057600080fd5b610dd8613093565b6040518082815260200191505060405180910390f35b3415610df957600080fd5b610e016130a2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610e4e57600080fd5b610e566130c8565b005b3415610e6357600080fd5b610ef6600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050613188565b005b3415610f0357600080fd5b610f0b613215565b604051808269ffffffffffffffffffff1669ffffffffffffffffffff16815260200191505060405180910390f35b3415610f4457600080fd5b610f4c613231565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610f9957600080fd5b610fa1613256565b604051808269ffffffffffffffffffff1669ffffffffffffffffffff16815260200191505060405180910390f35b3415610fda57600080fd5b61102e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613272565b604051808215151515815260200191505060405180910390f35b341561105357600080fd5b61105b6132e8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561109b578082015181840152602081019050611080565b50505050905090810190601f1680156110c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156110e157600080fd5b611135600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613386565b604051808215151515815260200191505060405180910390f35b341561115a57600080fd5b6111626133fc565b005b341561116f57600080fd5b6111a4600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506134ce565b604051808215151515815260200191505060405180910390f35b34156111c957600080fd5b6111f5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061365c565b005b341561120257600080fd5b61122e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613737565b005b341561123b57600080fd5b611284600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001919091929050506139d0565b005b341561129157600080fd5b6112996139d5565b604051808269ffffffffffffffffffff1669ffffffffffffffffffff16815260200191505060405180910390f35b34156112d257600080fd5b6112da6139f1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561132757600080fd5b61132f613a17565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561137c57600080fd5b611384613a3d565b604051808269ffffffffffffffffffff1669ffffffffffffffffffff16815260200191505060405180910390f35b34156113bd57600080fd5b6113c5613a59565b6040518082815260200191505060405180910390f35b34156113e657600080fd5b61141b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050613a5f565b604051808215151515815260200191505060405180910390f35b341561144057600080fd5b61148b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613bed565b6040518082815260200191505060405180910390f35b34156114ac57600080fd5b6114b4613d73565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561150157600080fd5b61152d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613d99565b005b341561153a57600080fd5b611566600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613ed1565b005b600d5481565b60078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116045780601f106115d957610100808354040283529160200191611604565b820191906000526020600020905b8154815290600101906020018083116115e757829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156116755761166e8383613f70565b9050611794565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663296f40008484336000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b151561177657600080fd5b6102c65a03f1151561178757600080fd5b5050506040518051905090505b92915050565b60006117a68383613bed565b905092915050565b60135481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561180f57600080fd5b83600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561197657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515611a1957600080fd5b6102c65a03f11515611a2a57600080fd5b505050604051805190509050611a826000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff16613fa09092919063ffffffff16565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611aed57611ae6614073565b9050611b99565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166376e71dd86000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611b7b57600080fd5b6102c65a03f11515611b8c57600080fd5b5050506040518051905090505b90565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bf757600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167feef3c91406f155f6bf1d8754e73003590b8bfa5cfa5472ee9ea936761864ea3060405160405180910390a250565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611cfb57600080fd5b60008769ffffffffffffffffffff1614151515611d1757600080fd5b60008569ffffffffffffffffffff1614151515611d3357600080fd5b60008269ffffffffffffffffffff1614151515611d4f57600080fd5b87600f60006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555086600f600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555085600f60146101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555084601060006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055508360118190555082601260006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550816012600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550806013819055505050505050505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611f0557611efe84848461407d565b9050612058565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634df6b45d858585336000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050602060405180830381600087803b151561203a57600080fd5b6102c65a03f1151561204b57600080fd5b5050506040518051905090505b9392505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120e457600080fd5b6120ef8585856140af565b60019150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561215857600080fd5b8190508073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151561221657600080fd5b6102c65a03f1151561222757600080fd5b5050505050565b601281565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122b457600080fd5b600560149054906101000a900460ff1615156122cf57600080fd5b6000600560146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561237357600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f626eb3836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561243857600080fd5b6102c65a03f1151561244957600080fd5b50505060405180519050151561245e57600080fd5b6124738160035461422590919063ffffffff16565b600381905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321e5383a83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b151561253d57600080fd5b6102c65a03f1151561254e57600080fd5b5050508173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040518082815260200191505060405180910390a28173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36126468282600f60149054906101000a900469ffffffffffffffffffff16601060009054906101000a900469ffffffffffffffffffff166011546000614243565b505050565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f626eb3336000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561271357600080fd5b6102c65a03f1151561272457600080fd5b50505060405180519050151561273957600080fd5b600d54831015151561274a57600080fd5b600e54831115151561275b57600080fd5b61279c3384601260009054906101000a900469ffffffffffffffffffff166012600a9054906101000a900469ffffffffffffffffffff166013546000614243565b91506127b182846144b290919063ffffffff16565b90506127bc816144cb565b505050565b60006127cc82612e88565b9050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561283257600080fd5b61283e86868686614769565b6001915050949350505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128a757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a4557600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e71e0c86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515612b0b57600080fd5b6102c65a03f11515612b1c57600080fd5b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b8157600080fd5b612b8c8585856149a8565b60019150509392505050565b601260009054906101000a900469ffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b600560149054906101000a900460ff1681565b601060009054906101000a900469ffffffffffffffffffff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c9057600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612d3d57612d368383614c31565b9050612e5c565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166393d3173a8484336000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b1515612e3e57600080fd5b6102c65a03f11515612e4f57600080fd5b5050506040518051905090505b92915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612ef057612ee982614c61565b9050612fd3565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166343a468c8836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515612fb557600080fd5b6102c65a03f11515612fc657600080fd5b5050506040518051905090505b919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561303357600080fd5b80821115151561304257600080fd5b81600d8190555080600e819055507ff8f7312d8aa9257dcfe43287f24cacc0f267875658809b6c7953b277565625228282604051808381526020018281526020019250505060405180910390a15050565b600061309d611a86565b905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561312357600080fd5b600560149054906101000a900460ff1615151561313f57600080fd5b6001600560146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156131e357600080fd5b81600790805190602001906131f99291906159f8565b5080600890805190602001906132109291906159f8565b505050565b600f60149054906101000a900469ffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900469ffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156132d157600080fd5b6132dc858585614d4a565b60019150509392505050565b60088054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561337e5780601f106133535761010080835404028352916020019161337e565b820191906000526020600020905b81548152906001019060200180831161336157829003601f168201915b505050505081565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156133e557600080fd5b6133f0838686615207565b60019150509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561345757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156134cc57fe5b565b60008073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561353757613530838361542f565b9050613656565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639cd1a1218484336000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b151561363857600080fd5b6102c65a03f1151561364957600080fd5b5050506040518051905090505b92915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156136b757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156136f357600080fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561379457600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f626eb3836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561385957600080fd5b6102c65a03f1151561386a57600080fd5b50505060405180519050151561387f57600080fd5b61388882612e88565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e30443bc8360006040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b151561394f57600080fd5b6102c65a03f1151561396057600080fd5b505050613978816003546144b290919063ffffffff16565b6003819055508173ffffffffffffffffffffffffffffffffffffffff167fdf58d2368c06216a398f05a7a88c8edc64a25c33f33fd2bd8b56fbc8822c02d8826040518082815260200191505060405180910390a25050565b600080fd5b6012600a9054906101000a900469ffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f600a9054906101000a900469ffffffffffffffffffff1681565b60115481565b60008073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613ac857613ac1838361545f565b9050613be7565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663554249b38484336000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b1515613bc957600080fd5b6102c65a03f11515613bda57600080fd5b5050506040518051905090505b92915050565b60008073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613c5657613c4f838361548f565b9050613d6d565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166309ab8bba84846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1515613d4f57600080fd5b6102c65a03f11515613d6057600080fd5b5050506040518051905090505b92915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613df457600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e71e0c86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515613eba57600080fd5b6102c65a03f11515613ecb57600080fd5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613f2c57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560149054906101000a900460ff16151515613f8e57600080fd5b613f9883836155ad565b905092915050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561404b57600080fd5b6102c65a03f1151561405c57600080fd5b50505060405180519050151561406e57fe5b505050565b6000600354905090565b6000600560149054906101000a900460ff1615151561409b57600080fd5b6140a68484846155c4565b90509392505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da46098c8285856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15156141a757600080fd5b6102c65a03f115156141b857600080fd5b5050508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3505050565b600080828401905083811015151561423957fe5b8091505092915050565b600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f626eb3896000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561430b57600080fd5b6102c65a03f1151561431c57600080fd5b505050604051805190508061440d5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f626eb3846000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156143f157600080fd5b6102c65a03f1151561440257600080fd5b505050604051805190505b1561441b57600091506144a7565b61446a8461445c8769ffffffffffffffffffff1661444e8a69ffffffffffffffffffff168c6155dd90919063ffffffff16565b61561890919063ffffffff16565b61422590919063ffffffff16565b905060008111156144a3576144a288601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683615633565b5b8091505b509695505050505050565b60008282111515156144c057fe5b818303905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561459257600080fd5b6102c65a03f115156145a357600080fd5b5050506040518051905082111515156145bb57600080fd5b339050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf8eeb7e82846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b151561468257600080fd5b6102c65a03f1151561469357600080fd5b5050506146ab826003546144b290919063ffffffff16565b6003819055508073ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a46ec8285836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b151561486257600080fd5b6102c65a03f1151561487357600080fd5b50505060405180519050821115151561488b57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397d88cd28583856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b151561498357600080fd5b6102c65a03f1151561499457600080fd5b5050506149a2848484615207565b50505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635fd72d168285856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1515614aa057600080fd5b6102c65a03f11515614ab157600080fd5b5050508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a46ec8285886000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1515614bfc57600080fd5b6102c65a03f11515614c0d57600080fd5b505050604051805190506040518082815260200191505060405180910390a3505050565b6000600560149054906101000a900460ff16151515614c4f57600080fd5b614c5983836159b3565b905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515614d2857600080fd5b6102c65a03f11515614d3957600080fd5b505050604051805190509050919050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a46ec8283866000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1515614e4557600080fd5b6102c65a03f11515614e5657600080fd5b50505060405180519050905080831115614f7c57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da46098c838660006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1515614f6357600080fd5b6102c65a03f11515614f7457600080fd5b505050615089565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397d88cd28386866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b151561507457600080fd5b6102c65a03f1151561508557600080fd5b5050505b8373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a46ec8286896000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15156151d157600080fd5b6102c65a03f115156151e257600080fd5b505050604051805190506040518082815260200191505060405180910390a350505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f626eb3846000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156152cc57600080fd5b6102c65a03f115156152dd57600080fd5b505050604051805190501515156152f357600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f626eb3836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156153b857600080fd5b6102c65a03f115156153c957600080fd5b505050604051805190501515156153df57600080fd5b6153ea838383615633565b6154298282600f60009054906101000a900469ffffffffffffffffffff16600f600a9054906101000a900469ffffffffffffffffffff16600088614243565b50505050565b6000600560149054906101000a900460ff1615151561544d57600080fd5b61545783836159ca565b905092915050565b6000600560149054906101000a900460ff1615151561547d57600080fd5b61548783836159e1565b905092915050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a46ec8284846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b151561558a57600080fd5b6102c65a03f1151561559b57600080fd5b50505060405180519050905092915050565b60006155ba8383336140af565b6001905092915050565b60006155d284848433614769565b600190509392505050565b60008060008414156155f25760009150615611565b828402905082848281151561560357fe5b0414151561560d57fe5b8091505b5092915050565b600080828481151561562657fe5b0490508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561566f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156156ab57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561577057600080fd5b6102c65a03f1151561578157600080fd5b50505060405180519050811115151561579957600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf8eeb7e84836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b151561585d57600080fd5b6102c65a03f1151561586e57600080fd5b505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321e5383a83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b151561593557600080fd5b6102c65a03f1151561594657600080fd5b5050508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60006159c0838333614d4a565b6001905092915050565b60006159d7338484615207565b6001905092915050565b60006159ee8383336149a8565b6001905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615a3957805160ff1916838001178555615a67565b82800160010185558215615a67579182015b82811115615a66578251825591602001919060010190615a4b565b5b509050615a749190615a78565b5090565b615a9a91905b80821115615a96576000816000905550600101615a7e565b5090565b905600a165627a7a72305820d4bc7a14adbd2d56173eee53555b6bbb56664126bd6cbb69d78117da52fc841a0029
Deployed Bytecode
0x6060604052600436106102d5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806302d3fdc9146102e257806306fdde031461030b578063095ea7b31461039957806309ab8bba146103f35780630b8e845a1461045f5780630ce511791461048857806317ffc3201461051e57806318160ddd146105575780631d2d8400146105805780631db8cb3f146105b95780631f7af1df1461066357806323b872dd146106b857806326fe995114610731578063296f4000146107865780632aed7f3f146107ff578063313ce567146108385780633ed10b92146108675780633f4ba83a146108bc57806340c10f19146108d157806342966c681461091357806343a468c8146109365780634df6b45d146109835780634e71e0c814610a1b57806354f78dad14610a30578063554249b314610a6957806356e1c40d14610ae25780635a44413914610b235780635c131d7014610b785780635c975abb14610ba15780635db07aee14610bce5780635ebaf1db14610c0f57806361927adb14610c645780636618846314610c9d5780636d4717fe14610cf757806370a0823114610d4c57806370df42e114610d9957806376e71dd814610dc55780637bb98a6814610dee5780638456cb5914610e4357806386575e4014610e585780638d93eac214610ef85780638da5cb5b14610f395780638f98ce8f14610f8e57806393d3173a14610fcf57806395d89b41146110485780639cd1a121146110d65780639f727c271461114f578063a9059cbb14611164578063ab55979d146111be578063bd7243f6146111f7578063c0ee0b8a14611230578063c18f483114611286578063c89e4361146112c7578063cdab73b51461131c578063d42cfc4114611371578063d63a1389146113b2578063d73dd623146113db578063dd62ed3e14611435578063e30c3978146114a1578063edc1e4f9146114f6578063f2fde38b1461152f575b34156102e057600080fd5b005b34156102ed57600080fd5b6102f5611568565b6040518082815260200191505060405180910390f35b341561031657600080fd5b61031e61156e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561035e578082015181840152602081019050610343565b50505050905090810190601f16801561038b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103a457600080fd5b6103d9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061160c565b604051808215151515815260200191505060405180910390f35b34156103fe57600080fd5b610449600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061179a565b6040518082815260200191505060405180910390f35b341561046a57600080fd5b6104726117ae565b6040518082815260200191505060405180910390f35b341561049357600080fd5b61051c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117b4565b005b341561052957600080fd5b610555600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611919565b005b341561056257600080fd5b61056a611a86565b6040518082815260200191505060405180910390f35b341561058b57600080fd5b6105b7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b9c565b005b34156105c457600080fd5b610661600480803569ffffffffffffffffffff1690602001909190803569ffffffffffffffffffff1690602001909190803569ffffffffffffffffffff1690602001909190803569ffffffffffffffffffff1690602001909190803590602001909190803569ffffffffffffffffffff1690602001909190803569ffffffffffffffffffff16906020019091908035906020019091905050611ca0565b005b341561066e57600080fd5b610676611e75565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106c357600080fd5b610717600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611e9b565b604051808215151515815260200191505060405180910390f35b341561073c57600080fd5b61074461205f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561079157600080fd5b6107e5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612085565b604051808215151515815260200191505060405180910390f35b341561080a57600080fd5b610836600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506120fb565b005b341561084357600080fd5b61084b61222e565b604051808260ff1660ff16815260200191505060405180910390f35b341561087257600080fd5b61087a612233565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156108c757600080fd5b6108cf612259565b005b34156108dc57600080fd5b610911600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612318565b005b341561091e57600080fd5b610934600480803590602001909190505061264b565b005b341561094157600080fd5b61096d600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506127c1565b6040518082815260200191505060405180910390f35b341561098e57600080fd5b610a01600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506127d3565b604051808215151515815260200191505060405180910390f35b3415610a2657600080fd5b610a2e61284b565b005b3415610a3b57600080fd5b610a67600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506129ea565b005b3415610a7457600080fd5b610ac8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612b22565b604051808215151515815260200191505060405180910390f35b3415610aed57600080fd5b610af5612b98565b604051808269ffffffffffffffffffff1669ffffffffffffffffffff16815260200191505060405180910390f35b3415610b2e57600080fd5b610b36612bb4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610b8357600080fd5b610b8b612bda565b6040518082815260200191505060405180910390f35b3415610bac57600080fd5b610bb4612be0565b604051808215151515815260200191505060405180910390f35b3415610bd957600080fd5b610be1612bf3565b604051808269ffffffffffffffffffff1669ffffffffffffffffffff16815260200191505060405180910390f35b3415610c1a57600080fd5b610c22612c0f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610c6f57600080fd5b610c9b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612c35565b005b3415610ca857600080fd5b610cdd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612cd4565b604051808215151515815260200191505060405180910390f35b3415610d0257600080fd5b610d0a612e62565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610d5757600080fd5b610d83600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612e88565b6040518082815260200191505060405180910390f35b3415610da457600080fd5b610dc36004808035906020019091908035906020019091905050612fd8565b005b3415610dd057600080fd5b610dd8613093565b6040518082815260200191505060405180910390f35b3415610df957600080fd5b610e016130a2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610e4e57600080fd5b610e566130c8565b005b3415610e6357600080fd5b610ef6600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050613188565b005b3415610f0357600080fd5b610f0b613215565b604051808269ffffffffffffffffffff1669ffffffffffffffffffff16815260200191505060405180910390f35b3415610f4457600080fd5b610f4c613231565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610f9957600080fd5b610fa1613256565b604051808269ffffffffffffffffffff1669ffffffffffffffffffff16815260200191505060405180910390f35b3415610fda57600080fd5b61102e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613272565b604051808215151515815260200191505060405180910390f35b341561105357600080fd5b61105b6132e8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561109b578082015181840152602081019050611080565b50505050905090810190601f1680156110c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156110e157600080fd5b611135600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613386565b604051808215151515815260200191505060405180910390f35b341561115a57600080fd5b6111626133fc565b005b341561116f57600080fd5b6111a4600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506134ce565b604051808215151515815260200191505060405180910390f35b34156111c957600080fd5b6111f5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061365c565b005b341561120257600080fd5b61122e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613737565b005b341561123b57600080fd5b611284600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001919091929050506139d0565b005b341561129157600080fd5b6112996139d5565b604051808269ffffffffffffffffffff1669ffffffffffffffffffff16815260200191505060405180910390f35b34156112d257600080fd5b6112da6139f1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561132757600080fd5b61132f613a17565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561137c57600080fd5b611384613a3d565b604051808269ffffffffffffffffffff1669ffffffffffffffffffff16815260200191505060405180910390f35b34156113bd57600080fd5b6113c5613a59565b6040518082815260200191505060405180910390f35b34156113e657600080fd5b61141b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050613a5f565b604051808215151515815260200191505060405180910390f35b341561144057600080fd5b61148b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613bed565b6040518082815260200191505060405180910390f35b34156114ac57600080fd5b6114b4613d73565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561150157600080fd5b61152d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613d99565b005b341561153a57600080fd5b611566600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613ed1565b005b600d5481565b60078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116045780601f106115d957610100808354040283529160200191611604565b820191906000526020600020905b8154815290600101906020018083116115e757829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156116755761166e8383613f70565b9050611794565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663296f40008484336000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b151561177657600080fd5b6102c65a03f1151561178757600080fd5b5050506040518051905090505b92915050565b60006117a68383613bed565b905092915050565b60135481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561180f57600080fd5b83600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561197657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515611a1957600080fd5b6102c65a03f11515611a2a57600080fd5b505050604051805190509050611a826000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff16613fa09092919063ffffffff16565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611aed57611ae6614073565b9050611b99565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166376e71dd86000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611b7b57600080fd5b6102c65a03f11515611b8c57600080fd5b5050506040518051905090505b90565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bf757600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167feef3c91406f155f6bf1d8754e73003590b8bfa5cfa5472ee9ea936761864ea3060405160405180910390a250565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611cfb57600080fd5b60008769ffffffffffffffffffff1614151515611d1757600080fd5b60008569ffffffffffffffffffff1614151515611d3357600080fd5b60008269ffffffffffffffffffff1614151515611d4f57600080fd5b87600f60006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555086600f600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555085600f60146101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555084601060006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055508360118190555082601260006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550816012600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550806013819055505050505050505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611f0557611efe84848461407d565b9050612058565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634df6b45d858585336000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050602060405180830381600087803b151561203a57600080fd5b6102c65a03f1151561204b57600080fd5b5050506040518051905090505b9392505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120e457600080fd5b6120ef8585856140af565b60019150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561215857600080fd5b8190508073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151561221657600080fd5b6102c65a03f1151561222757600080fd5b5050505050565b601281565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122b457600080fd5b600560149054906101000a900460ff1615156122cf57600080fd5b6000600560146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561237357600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f626eb3836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561243857600080fd5b6102c65a03f1151561244957600080fd5b50505060405180519050151561245e57600080fd5b6124738160035461422590919063ffffffff16565b600381905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321e5383a83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b151561253d57600080fd5b6102c65a03f1151561254e57600080fd5b5050508173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040518082815260200191505060405180910390a28173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36126468282600f60149054906101000a900469ffffffffffffffffffff16601060009054906101000a900469ffffffffffffffffffff166011546000614243565b505050565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f626eb3336000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561271357600080fd5b6102c65a03f1151561272457600080fd5b50505060405180519050151561273957600080fd5b600d54831015151561274a57600080fd5b600e54831115151561275b57600080fd5b61279c3384601260009054906101000a900469ffffffffffffffffffff166012600a9054906101000a900469ffffffffffffffffffff166013546000614243565b91506127b182846144b290919063ffffffff16565b90506127bc816144cb565b505050565b60006127cc82612e88565b9050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561283257600080fd5b61283e86868686614769565b6001915050949350505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128a757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a4557600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e71e0c86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515612b0b57600080fd5b6102c65a03f11515612b1c57600080fd5b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b8157600080fd5b612b8c8585856149a8565b60019150509392505050565b601260009054906101000a900469ffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b600560149054906101000a900460ff1681565b601060009054906101000a900469ffffffffffffffffffff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c9057600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612d3d57612d368383614c31565b9050612e5c565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166393d3173a8484336000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b1515612e3e57600080fd5b6102c65a03f11515612e4f57600080fd5b5050506040518051905090505b92915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612ef057612ee982614c61565b9050612fd3565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166343a468c8836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515612fb557600080fd5b6102c65a03f11515612fc657600080fd5b5050506040518051905090505b919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561303357600080fd5b80821115151561304257600080fd5b81600d8190555080600e819055507ff8f7312d8aa9257dcfe43287f24cacc0f267875658809b6c7953b277565625228282604051808381526020018281526020019250505060405180910390a15050565b600061309d611a86565b905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561312357600080fd5b600560149054906101000a900460ff1615151561313f57600080fd5b6001600560146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156131e357600080fd5b81600790805190602001906131f99291906159f8565b5080600890805190602001906132109291906159f8565b505050565b600f60149054906101000a900469ffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900469ffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156132d157600080fd5b6132dc858585614d4a565b60019150509392505050565b60088054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561337e5780601f106133535761010080835404028352916020019161337e565b820191906000526020600020905b81548152906001019060200180831161336157829003601f168201915b505050505081565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156133e557600080fd5b6133f0838686615207565b60019150509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561345757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156134cc57fe5b565b60008073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561353757613530838361542f565b9050613656565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639cd1a1218484336000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b151561363857600080fd5b6102c65a03f1151561364957600080fd5b5050506040518051905090505b92915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156136b757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156136f357600080fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561379457600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f626eb3836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561385957600080fd5b6102c65a03f1151561386a57600080fd5b50505060405180519050151561387f57600080fd5b61388882612e88565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e30443bc8360006040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b151561394f57600080fd5b6102c65a03f1151561396057600080fd5b505050613978816003546144b290919063ffffffff16565b6003819055508173ffffffffffffffffffffffffffffffffffffffff167fdf58d2368c06216a398f05a7a88c8edc64a25c33f33fd2bd8b56fbc8822c02d8826040518082815260200191505060405180910390a25050565b600080fd5b6012600a9054906101000a900469ffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f600a9054906101000a900469ffffffffffffffffffff1681565b60115481565b60008073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613ac857613ac1838361545f565b9050613be7565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663554249b38484336000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b1515613bc957600080fd5b6102c65a03f11515613bda57600080fd5b5050506040518051905090505b92915050565b60008073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613c5657613c4f838361548f565b9050613d6d565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166309ab8bba84846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1515613d4f57600080fd5b6102c65a03f11515613d6057600080fd5b5050506040518051905090505b92915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613df457600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e71e0c86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515613eba57600080fd5b6102c65a03f11515613ecb57600080fd5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613f2c57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560149054906101000a900460ff16151515613f8e57600080fd5b613f9883836155ad565b905092915050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561404b57600080fd5b6102c65a03f1151561405c57600080fd5b50505060405180519050151561406e57fe5b505050565b6000600354905090565b6000600560149054906101000a900460ff1615151561409b57600080fd5b6140a68484846155c4565b90509392505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da46098c8285856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15156141a757600080fd5b6102c65a03f115156141b857600080fd5b5050508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3505050565b600080828401905083811015151561423957fe5b8091505092915050565b600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f626eb3896000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561430b57600080fd5b6102c65a03f1151561431c57600080fd5b505050604051805190508061440d5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f626eb3846000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156143f157600080fd5b6102c65a03f1151561440257600080fd5b505050604051805190505b1561441b57600091506144a7565b61446a8461445c8769ffffffffffffffffffff1661444e8a69ffffffffffffffffffff168c6155dd90919063ffffffff16565b61561890919063ffffffff16565b61422590919063ffffffff16565b905060008111156144a3576144a288601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683615633565b5b8091505b509695505050505050565b60008282111515156144c057fe5b818303905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561459257600080fd5b6102c65a03f115156145a357600080fd5b5050506040518051905082111515156145bb57600080fd5b339050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf8eeb7e82846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b151561468257600080fd5b6102c65a03f1151561469357600080fd5b5050506146ab826003546144b290919063ffffffff16565b6003819055508073ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a46ec8285836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b151561486257600080fd5b6102c65a03f1151561487357600080fd5b50505060405180519050821115151561488b57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397d88cd28583856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b151561498357600080fd5b6102c65a03f1151561499457600080fd5b5050506149a2848484615207565b50505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635fd72d168285856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1515614aa057600080fd5b6102c65a03f11515614ab157600080fd5b5050508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a46ec8285886000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1515614bfc57600080fd5b6102c65a03f11515614c0d57600080fd5b505050604051805190506040518082815260200191505060405180910390a3505050565b6000600560149054906101000a900460ff16151515614c4f57600080fd5b614c5983836159b3565b905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515614d2857600080fd5b6102c65a03f11515614d3957600080fd5b505050604051805190509050919050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a46ec8283866000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1515614e4557600080fd5b6102c65a03f11515614e5657600080fd5b50505060405180519050905080831115614f7c57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da46098c838660006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1515614f6357600080fd5b6102c65a03f11515614f7457600080fd5b505050615089565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397d88cd28386866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b151561507457600080fd5b6102c65a03f1151561508557600080fd5b5050505b8373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a46ec8286896000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15156151d157600080fd5b6102c65a03f115156151e257600080fd5b505050604051805190506040518082815260200191505060405180910390a350505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f626eb3846000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156152cc57600080fd5b6102c65a03f115156152dd57600080fd5b505050604051805190501515156152f357600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f626eb3836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156153b857600080fd5b6102c65a03f115156153c957600080fd5b505050604051805190501515156153df57600080fd5b6153ea838383615633565b6154298282600f60009054906101000a900469ffffffffffffffffffff16600f600a9054906101000a900469ffffffffffffffffffff16600088614243565b50505050565b6000600560149054906101000a900460ff1615151561544d57600080fd5b61545783836159ca565b905092915050565b6000600560149054906101000a900460ff1615151561547d57600080fd5b61548783836159e1565b905092915050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a46ec8284846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b151561558a57600080fd5b6102c65a03f1151561559b57600080fd5b50505060405180519050905092915050565b60006155ba8383336140af565b6001905092915050565b60006155d284848433614769565b600190509392505050565b60008060008414156155f25760009150615611565b828402905082848281151561560357fe5b0414151561560d57fe5b8091505b5092915050565b600080828481151561562657fe5b0490508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561566f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156156ab57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561577057600080fd5b6102c65a03f1151561578157600080fd5b50505060405180519050811115151561579957600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf8eeb7e84836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b151561585d57600080fd5b6102c65a03f1151561586e57600080fd5b505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321e5383a83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b151561593557600080fd5b6102c65a03f1151561594657600080fd5b5050508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60006159c0838333614d4a565b6001905092915050565b60006159d7338484615207565b6001905092915050565b60006159ee8383336149a8565b6001905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615a3957805160ff1916838001178555615a67565b82800160010185558215615a67579182015b82811115615a66578251825591602001919060010190615a4b565b5b509050615a749190615a78565b5090565b615a9a91905b80821115615a96576000816000905550600101615a7e565b5090565b905600a165627a7a72305820d4bc7a14adbd2d56173eee53555b6bbb56664126bd6cbb69d78117da52fc841a0029
Swarm Source
bzzr://d4bc7a14adbd2d56173eee53555b6bbb56664126bd6cbb69d78117da52fc841a
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.