Source Code
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ldoh
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2019-02-22
*/
pragma solidity ^0.4.25;
pragma experimental ABIEncoderV2;
// Contract 01
contract OwnableContract {
event onTransferOwnership(address newOwner);
address superOwner;
constructor() public {
superOwner = msg.sender;
}
modifier onlyOwner() {
require(msg.sender == superOwner);
_;
}
function viewSuperOwner() private view returns (address owner) {
return superOwner;
}
function changeOwner(address newOwner) onlyOwner public {
require(newOwner != superOwner);
superOwner = newOwner;
emit onTransferOwnership(superOwner);
}
}
// Contract 02
contract BlockableContract is OwnableContract {
event onBlockHODLs(bool status);
bool public blockedContract;
constructor() public {
blockedContract = false;
}
modifier contractActive() {
require(!blockedContract);
_;
}
function doBlockContract() onlyOwner public {
blockedContract = true;
emit onBlockHODLs(blockedContract);
}
function unBlockContract() onlyOwner public {
blockedContract = false;
emit onBlockHODLs(blockedContract);
}
}
// Contract 03
contract ldoh is BlockableContract {
event onStoreProfileHash(address indexed hodler, string profileHashed);
event onHodlTokens(address indexed hodler, address indexed tokenAddress, string tokenSymbol, uint256 amount, uint256 endtime);
event onClaimTokens(address indexed hodler, address indexed tokenAddress, string tokenSymbol, uint256 amount, uint256 endtime);
event onReturnAll(uint256 returned);
// Variables //
address internal AXPRtoken;
mapping(address => string) private profileHashed; // User Prime
// * = New ** = Undeveloped
// Default Setting
uint256 public hodlingTime;
uint256 public comission;
uint256 public allTimeHighPrice;
uint256 public percent = 3; // * 3% from deposit
uint256 private constant affiliate = 12; // * 12% from deposit
uint256 private constant cashback = 16; // * 16% from deposit
uint256 private constant totalreceive = 88; // * 88% from deposit
uint256 private constant seconds30days = 2592000; // *
bool public speed;
struct Safe {
uint256 id;
uint256 amount;
uint256 endtime;
address user;
address tokenAddress;
string tokenSymbol;
uint256 amountbalance; // * --- > 88% from deposit
uint256 cashbackbalance; // * --- > 16% from deposit
uint256 lasttime; // * --- > Now
uint256 percentage; // * --- > return tokens every month
uint256 percentagereceive; // * --- > 0 %
uint256 tokenreceive; // * --- > 0 Token
uint256 affiliateprofit; // **
uint256 affiliatebalance; // **
address referrer; // **
}
//safes variables
mapping(address => uint256[]) private _userSafes; // * --- > Useless (Private)
mapping(uint256 => Safe) private _safes; // Struct safe
uint256 private _currentIndex; // Id Number
uint256 public _countSafes; // Total All User
mapping(address => uint256) public _totalSaved; // Token Balance
//dev owner variables
mapping(address => uint256) private _systemReserves; // Token Balance Reserve
address[] public _listedReserves;
//constructor
constructor() public {
AXPRtoken = 0xC39E626A04C5971D770e319760D7926502975e47;
hodlingTime = 365 days;
_currentIndex = 1;
comission = 5;
}
// Total Function = 12
// Function 01 - Fallback Function To Receive Donation In Eth
function () public payable {
require(msg.value > 0);
_systemReserves[0x0] = add(_systemReserves[0x0], msg.value);
}
// Function 02 - Hodl Token
function HodlTokens(address tokenAddress, uint256 amount) public contractActive {
require(tokenAddress != 0x0);
require(amount > 0);
ERC20Interface token = ERC20Interface(tokenAddress);
require(token.transferFrom(msg.sender, address(this), amount));
uint256 affiliatecomission = mul(amount, affiliate) / 100; // *
uint256 data_amountbalance = sub(amount, affiliatecomission); // *
uint256 data_cashbackbalance = mul(amount, cashback) / 100; // *
// Insert to Database
_userSafes[msg.sender].push(_currentIndex);
_safes[_currentIndex] =
Safe(
_currentIndex, amount, now + hodlingTime, msg.sender, tokenAddress, token.symbol(), data_amountbalance, data_cashbackbalance, now, percent, 0, 0, 0, 0, 0xA15C7Ebe1f07CaF6bFF097D8a589fb8AC49Ae5B3);
// Update Token Balance, Current Index, CountSafes
_totalSaved[tokenAddress] = add(_totalSaved[tokenAddress], amount);
_currentIndex++;
_countSafes++;
emit onHodlTokens(msg.sender, tokenAddress, token.symbol(), amount, now + hodlingTime);
}
// Function 03 - Withdraw Token
function ClaimTokens(address tokenAddress, uint256 id) public {
require(tokenAddress != 0x0);
require(id != 0);
Safe storage s = _safes[id];
require(s.user == msg.sender);
RetireHodl(tokenAddress, id);
}
function RetireHodl(address tokenAddress, uint256 id) private {
Safe storage s = _safes[id];
require(s.id != 0);
require(s.tokenAddress == tokenAddress);
require(
(tokenAddress == AXPRtoken && s.endtime < now ) ||
tokenAddress != AXPRtoken
);
uint256 eventAmount;
address eventTokenAddress = s.tokenAddress;
string memory eventTokenSymbol = s.tokenSymbol;
if(s.endtime < now) // hodl complete
{
PayToken(s.user, s.tokenAddress, s.amountbalance);
eventAmount = s.amountbalance;
_totalSaved[s.tokenAddress] = sub(_totalSaved[s.tokenAddress], s.amountbalance); // *
s.amountbalance = 0;
}
else // hodl still in progress (penalty fee applies), not for ABCD tokens
{
if (speed == true) {
uint256 final_speed = 6;
}
else {
final_speed = 3;
}
uint256 timeframe = now - s.lasttime;
uint256 realAmount = s.amount * final_speed / 100 * timeframe / seconds30days ;
uint256 newamountbalance = sub(s.amountbalance, realAmount); // *
s.amountbalance = newamountbalance; // *
s.lasttime = now; // *
uint256 tokenaffiliate = mul(s.amount, affiliate) / 100 ; // *
uint256 tokenreceived = s.amount - tokenaffiliate - newamountbalance; // *
uint256 percentagereceived = tokenreceived / s.amount * 100; // *
s.tokenreceive = tokenreceived; // *
s.percentagereceive = percentagereceived; // *
_totalSaved[s.tokenAddress] = sub(_totalSaved[s.tokenAddress], realAmount); // *
PayToken(s.user, s.tokenAddress, realAmount);
eventAmount = realAmount;
}
emit onClaimTokens(msg.sender, eventTokenAddress, eventTokenSymbol, eventAmount, now);
}
// Function 04 - Store Comission From Unfinished Hodl
function StoreComission(address tokenAddress, uint256 amount) private {
_systemReserves[tokenAddress] = add(_systemReserves[tokenAddress], amount);
bool isNew = true;
for(uint256 i = 0; i < _listedReserves.length; i++) {
if(_listedReserves[i] == tokenAddress) {
isNew = false;
break;
}
}
if(isNew) _listedReserves.push(tokenAddress);
}
// Function 05 - Private Pay Token To Address
function PayToken(address user, address tokenAddress, uint256 amount) private {
ERC20Interface token = ERC20Interface(tokenAddress);
require(token.balanceOf(address(this)) >= amount);
token.transfer(user, amount);
}
// Function 06 - Delete Safe Values In Storage
function DeleteSafe(Safe s) private {
_totalSaved[s.tokenAddress] = sub(_totalSaved[s.tokenAddress], s.amount);
delete _safes[s.id];
uint256[] storage vector = _userSafes[msg.sender];
uint256 size = vector.length;
for(uint256 i = 0; i < size; i++) {
if(vector[i] == s.id) {
vector[i] = vector[size-1];
vector.length--;
break;
}
}
}
// Function 07 - Get How Many Safes Has The User
function GetUserSafesLength(address hodler) public view returns (uint256 length) {
return _userSafes[hodler].length;
}
// Function 08 - Get Safes Values
function GetSafe(uint256 _id) public view
returns (uint256 id, address user, address tokenAddress, uint256 amount, uint256 endtime, string tokenSymbol, uint256 amountbalance, uint256 lasttime, uint256 percentage, uint256 percentagereceive, uint256 tokenreceive, address referrer)
{
Safe storage s = _safes[_id];
return(s.id, s.user, s.tokenAddress, s.amount, s.endtime, s.tokenSymbol, s.amountbalance, s.lasttime, s.percentage, s.percentagereceive, s.tokenreceive, s.referrer);
}
// Function 09 - Get Contract's Balance
function GetContractBalance() public view returns(uint256)
{
return address(this).balance;
}
// Function 10 - Get Tokens Reserved For The Owner As Commission
function GetTokenFees(address tokenAddress) private view returns (uint256 amount) {
return _systemReserves[tokenAddress];
}
// * --- > Useless (Private)
// Function 11 - Store The Profile's Hash In The Blockchain
function storeProfileHashed(string _profileHashed) private {
profileHashed[msg.sender] = _profileHashed;
emit onStoreProfileHash(msg.sender, _profileHashed);
}
// * --- > Useless (Private)
// Function 12 - Get User's Any Token Balance
function GetHodlTokensBalance(address tokenAddress) private view returns (uint256 balance) {
require(tokenAddress != 0x0);
for(uint256 i = 1; i < _currentIndex; i++) {
Safe storage s = _safes[i];
if(s.user == msg.sender && s.tokenAddress == tokenAddress)
balance += s.amount;
}
return balance;
}
/////// ONLY CREATOR ///////
// Total Function = 10
// 01 Retire Hodl Safe
function OwnerRetireHodl(address tokenAddress, uint256 id) public onlyOwner {
require(tokenAddress != 0x0);
require(id != 0);
RetireHodl(tokenAddress, id);
}
// 02 Change Hodling Time
function ChangeHodlingTime(uint256 newHodlingDays) onlyOwner public {
require(newHodlingDays >= 60);
hodlingTime = newHodlingDays * 1 days;
}
// 03 Change All Time High Price
function ChangeAllTimeHighPrice(uint256 newAllTimeHighPrice) onlyOwner public {
require(newAllTimeHighPrice > allTimeHighPrice);
allTimeHighPrice = newAllTimeHighPrice;
}
// 04 Change Comission Value
function ChangeComission(uint256 newComission) onlyOwner public {
require(newComission <= 30);
comission = newComission;
}
// 05 Withdraw Token Fees By Address
function WithdrawTokenFees(address tokenAddress) onlyOwner public {
require(_systemReserves[tokenAddress] > 0);
uint256 amount = _systemReserves[tokenAddress];
_systemReserves[tokenAddress] = 0;
ERC20Interface token = ERC20Interface(tokenAddress);
require(token.balanceOf(address(this)) >= amount);
token.transfer(msg.sender, amount);
}
// 06 Withdraw All Eth And All Tokens Fees
function WithdrawAllFees() onlyOwner public {
// ether
uint256 x = _systemReserves[0x0];
if(x > 0 && x <= address(this).balance) {
_systemReserves[0x0] = 0;
msg.sender.transfer(_systemReserves[0x0]);
}
// tokens
address ta;
ERC20Interface token;
for(uint256 i = 0; i < _listedReserves.length; i++) {
ta = _listedReserves[i];
if(_systemReserves[ta] > 0)
{
x = _systemReserves[ta];
_systemReserves[ta] = 0;
token = ERC20Interface(ta);
token.transfer(msg.sender, x);
}
}
_listedReserves.length = 0;
}
// 07 - Withdraw Ether Received Through Fallback Function
function WithdrawEth(uint256 amount) onlyOwner public {
require(amount > 0);
require(address(this).balance >= amount);
msg.sender.transfer(amount);
}
// 08 - Returns All Tokens Addresses With Fees
function GetTokensAddressesWithFees()
onlyOwner public view
returns (address[], string[], uint256[])
{
uint256 length = _listedReserves.length;
address[] memory tokenAddress = new address[](length);
string[] memory tokenSymbol = new string[](length);
uint256[] memory tokenFees = new uint256[](length);
for (uint256 i = 0; i < length; i++) {
tokenAddress[i] = _listedReserves[i];
ERC20Interface token = ERC20Interface(tokenAddress[i]);
tokenSymbol[i] = token.symbol();
tokenFees[i] = GetTokenFees(tokenAddress[i]);
}
return (tokenAddress, tokenSymbol, tokenFees);
}
// 09 - Return All Tokens To Their Respective Addresses
function ReturnAllTokens(bool onlyAXPR) onlyOwner public
{
uint256 returned;
for(uint256 i = 1; i < _currentIndex; i++) {
Safe storage s = _safes[i];
if (s.id != 0) {
if (
(onlyAXPR && s.tokenAddress == AXPRtoken) ||
!onlyAXPR
)
{
PayToken(s.user, s.tokenAddress, s.amountbalance);
DeleteSafe(s);
_countSafes--;
returned++;
}
}
}
emit onReturnAll(returned);
}
// 10 - Speed Setting
function SpeedUp() onlyOwner public {
speed = true;
}
function SpeedDown() onlyOwner public {
speed = false;
}
////////////////// ~~~~~~~~~~~~~~~ //////////////////
/**
* SAFE MATH FUNCTIONS
*
* @dev Multiplies two numbers, throws on overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
if (a == 0) {
return 0;
}
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 a / b;
}
/**
* @dev Subtracts 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 c) {
c = a + b;
assert(c >= a);
return c;
}
}
contract ERC20Interface {
uint256 public totalSupply;
uint256 public decimals;
function symbol() public view returns (string);
function balanceOf(address _owner) public view returns (uint256 balance);
function transfer(address _to, uint256 _value) public returns (bool success);
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
function approve(address _spender, uint256 _value) public returns (bool success);
function allowance(address _owner, address _spender) public view returns (uint256 remaining);
// solhint-disable-next-line no-simple-event-func-name
event Transfer(address indexed _from, address indexed _to, uint256 _value);
event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"_listedReserves","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newAllTimeHighPrice","type":"uint256"}],"name":"ChangeAllTimeHighPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"comission","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"doBlockContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"GetSafe","outputs":[{"name":"id","type":"uint256"},{"name":"user","type":"address"},{"name":"tokenAddress","type":"address"},{"name":"amount","type":"uint256"},{"name":"endtime","type":"uint256"},{"name":"tokenSymbol","type":"string"},{"name":"amountbalance","type":"uint256"},{"name":"lasttime","type":"uint256"},{"name":"percentage","type":"uint256"},{"name":"percentagereceive","type":"uint256"},{"name":"tokenreceive","type":"uint256"},{"name":"referrer","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"id","type":"uint256"}],"name":"ClaimTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"}],"name":"WithdrawTokenFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"onlyAXPR","type":"bool"}],"name":"ReturnAllTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"_totalSaved","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"percent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"blockedContract","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"SpeedUp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newHodlingDays","type":"uint256"}],"name":"ChangeHodlingTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"SpeedDown","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_countSafes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"WithdrawAllFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newComission","type":"uint256"}],"name":"ChangeComission","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"WithdrawEth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"GetTokensAddressesWithFees","outputs":[{"name":"","type":"address[]"},{"name":"","type":"string[]"},{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"speed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"id","type":"uint256"}],"name":"OwnerRetireHodl","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unBlockContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"hodler","type":"address"}],"name":"GetUserSafesLength","outputs":[{"name":"length","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"allTimeHighPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hodlingTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"amount","type":"uint256"}],"name":"HodlTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"GetContractBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hodler","type":"address"},{"indexed":false,"name":"profileHashed","type":"string"}],"name":"onStoreProfileHash","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hodler","type":"address"},{"indexed":true,"name":"tokenAddress","type":"address"},{"indexed":false,"name":"tokenSymbol","type":"string"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"endtime","type":"uint256"}],"name":"onHodlTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hodler","type":"address"},{"indexed":true,"name":"tokenAddress","type":"address"},{"indexed":false,"name":"tokenSymbol","type":"string"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"endtime","type":"uint256"}],"name":"onClaimTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"returned","type":"uint256"}],"name":"onReturnAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"status","type":"bool"}],"name":"onBlockHODLs","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOwner","type":"address"}],"name":"onTransferOwnership","type":"event"}]Contract Creation Code
6080604052600360065534801561001557600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060146101000a81548160ff02191690831515021790555073c39e626a04c5971d770e319760d7926502975e47600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506301e133806003819055506001600a8190555060056004819055506136a3806100ef6000396000f30060806040526004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631c019a52146101db578063365655f0146102185780633a4b4532146102415780633e8cc2731461026c57806347f849cd146102835780634d7f917f146102cb578063539a67bf146102f4578063650db56d1461031d578063666a73701461034657806370ba11131461038357806371ea29df146103ae57806376577bc4146103d957806379883bba146103f0578063851a4a951461041957806393002f021461043057806399f57e051461045b5780639aaa38a614610472578063a6f9dae11461049b578063b2a3fd05146104c4578063bbe316be146104ed578063c20906ac1461051a578063cfe7de0714610545578063d64ee8d21461056e578063d9d61a1014610585578063da546cb2146105c2578063e2afe3bb146105ed578063e61021e814610618578063f6d0bf2f14610641575b60003411151561017957600080fd5b6101ac600d60008073ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020543461066c565b600d60008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550005b3480156101e757600080fd5b5061020260048036036101fd91908101906130d0565b610688565b60405161020f91906132df565b60405180910390f35b34801561022457600080fd5b5061023f600480360361023a91908101906130d0565b6106c6565b005b34801561024d57600080fd5b5061025661073b565b60405161026391906133ff565b60405180910390f35b34801561027857600080fd5b50610281610741565b005b34801561028f57600080fd5b506102aa60048036036102a591908101906130d0565b6107ff565b6040516102c29c9b9a9998979695949392919061341a565b60405180910390f35b3480156102d757600080fd5b506102f260048036036102ed9190810190613001565b610988565b005b34801561030057600080fd5b5061031b60048036036103169190810190612fd8565b610a41565b005b34801561032957600080fd5b50610344600480360361033f919081019061303d565b610cdb565b005b34801561035257600080fd5b5061036d60048036036103689190810190612fd8565b6110df565b60405161037a91906133ff565b60405180910390f35b34801561038f57600080fd5b506103986110f7565b6040516103a591906133ff565b60405180910390f35b3480156103ba57600080fd5b506103c36110fd565b6040516103d091906133a6565b60405180910390f35b3480156103e557600080fd5b506103ee611110565b005b3480156103fc57600080fd5b50610417600480360361041291908101906130d0565b611188565b005b34801561042557600080fd5b5061042e611202565b005b34801561043c57600080fd5b5061044561127a565b60405161045291906133ff565b60405180910390f35b34801561046757600080fd5b50610470611280565b005b34801561047e57600080fd5b50610499600480360361049491908101906130d0565b6115c7565b005b3480156104a757600080fd5b506104c260048036036104bd9190810190612fd8565b61163c565b005b3480156104d057600080fd5b506104eb60048036036104e691908101906130d0565b61178e565b005b3480156104f957600080fd5b50610502611868565b6040516105119392919061335a565b60405180910390f35b34801561052657600080fd5b5061052f611b39565b60405161053c91906133a6565b60405180910390f35b34801561055157600080fd5b5061056c60048036036105679190810190613001565b611b4c565b005b34801561057a57600080fd5b50610583611beb565b005b34801561059157600080fd5b506105ac60048036036105a79190810190612fd8565b611ca8565b6040516105b991906133ff565b60405180910390f35b3480156105ce57600080fd5b506105d7611cf4565b6040516105e491906133ff565b60405180910390f35b3480156105f957600080fd5b50610602611cfa565b60405161060f91906133ff565b60405180910390f35b34801561062457600080fd5b5061063f600480360361063a9190810190613001565b611d00565b005b34801561064d57600080fd5b50610656612364565b60405161066391906133ff565b60405180910390f35b6000818301905082811015151561067f57fe5b80905092915050565b600e8181548110151561069757fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561072157600080fd5b6005548111151561073157600080fd5b8060058190555050565b60045481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561079c57600080fd5b6001600060146101000a81548160ff0219169083151502179055507fadac2a07dd926cc50f681194fe221f6245cdafa96623d1c64fa69c027182f40a600060149054906101000a900460ff166040516107f591906133a6565b60405180910390a1565b600080600080600060606000806000806000806000600960008f8152602001908152602001600020905080600001548160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836001015484600201548560050186600601548760080154886009015489600a01548a600b01548b600e0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16868054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109595780601f1061092e57610100808354040283529160200191610959565b820191906000526020600020905b81548152906001019060200180831161093c57829003601f168201915b505050505096509c509c509c509c509c509c509c509c509c509c509c509c505091939597999b5091939597999b565b6000808373ffffffffffffffffffffffffffffffffffffffff16141515156109af57600080fd5b600082141515156109bf57600080fd5b6009600083815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610a3257600080fd5b610a3c8383612383565b505050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a9f57600080fd5b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515610aed57600080fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491506000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550829050818173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610bcd91906132df565b602060405180830381600087803b158015610be757600080fd5b505af1158015610bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c1f91908101906130f9565b10151515610c2c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610c83929190613331565b602060405180830381600087803b158015610c9d57600080fd5b505af1158015610cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cd59190810190613066565b50505050565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d3b57600080fd5b600191505b600a548210156110a2576009600083815260200190815260200160002090506000816000015414151561109557838015610deb5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610df4575083155b1561109457610e508160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360060154612963565b611078816101e060405190810160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600582018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fc45780601f10610f9957610100808354040283529160200191610fc4565b820191906000526020600020905b815481529060010190602001808311610fa757829003601f168201915b5050505050815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050612acd565b600b600081548092919060019003919050555082806001019350505b5b8180600101925050610d40565b7faeb4f5733a2e8073f7ddf9b69cdc1588e959cec9ac8b80866c29237cbe281fbe836040516110d191906133ff565b60405180910390a150505050565b600c6020528060005260406000206000915090505481565b60065481565b600060149054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561116b57600080fd5b6001600760006101000a81548160ff021916908315150217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111e357600080fd5b603c81101515156111f357600080fd5b62015180810260038190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561125d57600080fd5b6000600760006101000a81548160ff021916908315150217905550565b600b5481565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112e157600080fd5b600d60008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054935060008411801561133457503073ffffffffffffffffffffffffffffffffffffffff16318411155b156113d9576000600d60008073ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166108fc600d60008073ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f193505050501580156113d7573d6000803e3d6000fd5b505b600090505b600e805490508110156115b157600e818154811015156113fa57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692506000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156115a457600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205493506000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508291508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611550929190613331565b602060405180830381600087803b15801561156a57600080fd5b505af115801561157e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115a29190810190613066565b505b80806001019150506113de565b6000600e816115c09190612dd9565b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561162257600080fd5b601e811115151561163257600080fd5b8060048190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561169757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156116f357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f178eb36323c5a89970cc900b55d89d2731becfb4f5df34667d995e48cee7d4e16000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161178391906132df565b60405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117e957600080fd5b6000811115156117f857600080fd5b803073ffffffffffffffffffffffffffffffffffffffff16311015151561181e57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611864573d6000803e3d6000fd5b5050565b6060806060600060608060606000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118d257600080fd5b600e805490509550856040519080825280602002602001820160405280156119095781602001602082028038833980820191505090505b5094508560405190808252806020026020018201604052801561194057816020015b606081526020019060019003908161192b5790505b509350856040519080825280602002602001820160405280156119725781602001602082028038833980820191505090505b509250600091505b85821015611b2557600e8281548110151561199157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685838151811015156119ca57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508482815181101515611a1457fe5b9060200190602002015190508073ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b158015611a8457600080fd5b505af1158015611a98573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611ac1919081019061308f565b8483815181101515611acf57fe5b90602001906020020181905250611afc8583815181101515611aed57fe5b90602001906020020151612d3f565b8383815181101515611b0a57fe5b9060200190602002018181525050818060010192505061197a565b848484985098509850505050505050909192565b600760009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ba757600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515611bcd57600080fd5b60008114151515611bdd57600080fd5b611be78282612383565b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c4657600080fd5b60008060146101000a81548160ff0219169083151502179055507fadac2a07dd926cc50f681194fe221f6245cdafa96623d1c64fa69c027182f40a600060149054906101000a900460ff16604051611c9e91906133a6565b60405180910390a1565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60055481565b60035481565b600080600080600060149054906101000a900460ff16151515611d2257600080fd5b60008673ffffffffffffffffffffffffffffffffffffffff1614151515611d4857600080fd5b600085111515611d5757600080fd5b8593508373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611db3939291906132fa565b602060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e059190810190613066565b1515611e1057600080fd5b6064611e1d86600c612d88565b811515611e2657fe5b049250611e338584612dc0565b91506064611e42866010612d88565b811515611e4b57fe5b049050600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a5490806001815401808255809150509060018203906000526020600020016000909192909190915055506101e060405190810160405280600a548152602001868152602001600354420181526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b158015611f7a57600080fd5b505af1158015611f8e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611fb7919081019061308f565b815260200183815260200182815260200142815260200160065481526020016000815260200160008152602001600081526020016000815260200173a15c7ebe1f07caf6bff097d8a589fb8ac49ae5b373ffffffffffffffffffffffffffffffffffffffff1681525060096000600a54815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160050190805190602001906120fd929190612e05565b5060c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c01556101a082015181600d01556101c082015181600e0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050506121e8600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548661066c565b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60008154809291906001019190505550600b600081548092919060010191905055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fed175a8ddea84085fa2767c9c1f3342fae1f118bc1213ac4d4a0c6277bc0ad738673ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15801561230257600080fd5b505af1158015612316573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061233f919081019061308f565b886003544201604051612354939291906133c1565b60405180910390a3505050505050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600080600060606000806000806000806000600960008d81526020019081526020016000209a5060008b60000154141515156123be57600080fd5b8c73ffffffffffffffffffffffffffffffffffffffff168b60040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561241c57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614801561247c5750428b60020154105b806124d55750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b15156124e057600080fd5b8a60040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1698508a6005018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561259f5780601f106125745761010080835404028352916020019161259f565b820191906000526020600020905b81548152906001019060200180831161258257829003601f168201915b50505050509750428b6002015410156126f7576126098b60030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c60040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d60060154612963565b8a600601549950612681600c60008d60040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548c60060154612dc0565b600c60008d60040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008b600601819055506128eb565b60011515600760009054906101000a900460ff161515141561271c5760069650612721565b600396505b8a600801544203955062278d00866064898e600101540281151561274157fe5b040281151561274c57fe5b04945061275d8b6006015486612dc0565b9350838b60060181905550428b6008018190555060646127828c60010154600c612d88565b81151561278b57fe5b04925083838c600101540303915060648b60010154838115156127aa57fe5b04029050818b600b0181905550808b600a018190555061282d600c60008d60040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205486612dc0565b600c60008d60040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128e78b60030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c60040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687612963565b8499505b8873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f959346e7719e944c33f76798af64519a9c17a870c805ae49c011066f18fa9cb08a8d4260405161294c939291906133c1565b60405180910390a350505050505050505050505050565b6000829050818173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016129be91906132df565b602060405180830381600087803b1580156129d857600080fd5b505af11580156129ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a1091908101906130f9565b10151515612a1d57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612a74929190613331565b602060405180830381600087803b158015612a8e57600080fd5b505af1158015612aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ac69190810190613066565b5050505050565b6000806000612b23600c6000866080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548560200151612dc0565b600c6000866080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506009600085600001518152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600582016000612bf89190612e85565b6006820160009055600782016000905560088201600090556009820160009055600a820160009055600b820160009055600c820160009055600d820160009055600e820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555050600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020925082805490509150600090505b81811015612d395783600001518382815481101515612cc957fe5b90600052602060002001541415612d2c578260018303815481101515612ceb57fe5b90600052602060002001548382815481101515612d0457fe5b906000526020600020018190555082805480919060019003612d269190612ecd565b50612d39565b8080600101915050612cae565b50505050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080831415612d9b5760009050612dba565b8183029050818382811515612dac57fe5b04141515612db657fe5b8090505b92915050565b6000828211151515612dce57fe5b818303905092915050565b815481835581811115612e0057818360005260206000209182019101612dff9190612ef9565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612e4657805160ff1916838001178555612e74565b82800160010185558215612e74579182015b82811115612e73578251825591602001919060010190612e58565b5b509050612e819190612ef9565b5090565b50805460018160011615610100020316600290046000825580601f10612eab5750612eca565b601f016020900490600052602060002090810190612ec99190612ef9565b5b50565b815481835581811115612ef457818360005260206000209182019101612ef39190612ef9565b5b505050565b612f1b91905b80821115612f17576000816000905550600101612eff565b5090565b90565b6000612f2a82356135ef565b905092915050565b6000612f3e823561360f565b905092915050565b6000612f52825161360f565b905092915050565b600082601f8301121515612f6d57600080fd5b8151612f80612f7b82613508565b6134db565b91508082526020830160208301858383011115612f9c57600080fd5b612fa7838284613625565b50505092915050565b6000612fbc823561361b565b905092915050565b6000612fd0825161361b565b905092915050565b600060208284031215612fea57600080fd5b6000612ff884828501612f1e565b91505092915050565b6000806040838503121561301457600080fd5b600061302285828601612f1e565b925050602061303385828601612fb0565b9150509250929050565b60006020828403121561304f57600080fd5b600061305d84828501612f32565b91505092915050565b60006020828403121561307857600080fd5b600061308684828501612f46565b91505092915050565b6000602082840312156130a157600080fd5b600082015167ffffffffffffffff8111156130bb57600080fd5b6130c784828501612f5a565b91505092915050565b6000602082840312156130e257600080fd5b60006130f084828501612fb0565b91505092915050565b60006020828403121561310b57600080fd5b600061311984828501612fc4565b91505092915050565b61312b816135b9565b82525050565b600061313c8261355b565b80845260208401935061314e83613534565b60005b8281101561318057613164868351613122565b61316d82613592565b9150602086019550600181019050613151565b50849250505092915050565b600061319782613566565b808452602084019350836020820285016131b085613541565b60005b848110156131e95783830388526131cb83835161329a565b92506131d68261359f565b91506020880197506001810190506131b3565b508196508694505050505092915050565b600061320582613571565b8084526020840193506132178361354e565b60005b828110156132495761322d8683516132d0565b613236826135ac565b915060208601955060018101905061321a565b50849250505092915050565b61325e816135d9565b82525050565b600061326f82613587565b808452613283816020860160208601613625565b61328c81613658565b602085010191505092915050565b60006132a58261357c565b8084526132b9816020860160208601613625565b6132c281613658565b602085010191505092915050565b6132d9816135e5565b82525050565b60006020820190506132f46000830184613122565b92915050565b600060608201905061330f6000830186613122565b61331c6020830185613122565b61332960408301846132d0565b949350505050565b60006040820190506133466000830185613122565b61335360208301846132d0565b9392505050565b600060608201905081810360008301526133748186613131565b90508181036020830152613388818561318c565b9050818103604083015261339c81846131fa565b9050949350505050565b60006020820190506133bb6000830184613255565b92915050565b600060608201905081810360008301526133db8186613264565b90506133ea60208301856132d0565b6133f760408301846132d0565b949350505050565b600060208201905061341460008301846132d0565b92915050565b600061018082019050613430600083018f6132d0565b61343d602083018e613122565b61344a604083018d613122565b613457606083018c6132d0565b613464608083018b6132d0565b81810360a0830152613476818a613264565b905061348560c08301896132d0565b61349260e08301886132d0565b6134a06101008301876132d0565b6134ae6101208301866132d0565b6134bc6101408301856132d0565b6134ca610160830184613122565b9d9c50505050505050505050505050565b6000604051905081810181811067ffffffffffffffff821117156134fe57600080fd5b8060405250919050565b600067ffffffffffffffff82111561351f57600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b60005b83811015613643578082015181840152602081019050613628565b83811115613652576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a72305820fdc3a5b7ee68b38cc983c69a00cd1b237aa2e9e7dfbcd7c2db0d723413be9efa6c6578706572696d656e74616cf50037
Deployed Bytecode
0x60806040526004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631c019a52146101db578063365655f0146102185780633a4b4532146102415780633e8cc2731461026c57806347f849cd146102835780634d7f917f146102cb578063539a67bf146102f4578063650db56d1461031d578063666a73701461034657806370ba11131461038357806371ea29df146103ae57806376577bc4146103d957806379883bba146103f0578063851a4a951461041957806393002f021461043057806399f57e051461045b5780639aaa38a614610472578063a6f9dae11461049b578063b2a3fd05146104c4578063bbe316be146104ed578063c20906ac1461051a578063cfe7de0714610545578063d64ee8d21461056e578063d9d61a1014610585578063da546cb2146105c2578063e2afe3bb146105ed578063e61021e814610618578063f6d0bf2f14610641575b60003411151561017957600080fd5b6101ac600d60008073ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020543461066c565b600d60008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550005b3480156101e757600080fd5b5061020260048036036101fd91908101906130d0565b610688565b60405161020f91906132df565b60405180910390f35b34801561022457600080fd5b5061023f600480360361023a91908101906130d0565b6106c6565b005b34801561024d57600080fd5b5061025661073b565b60405161026391906133ff565b60405180910390f35b34801561027857600080fd5b50610281610741565b005b34801561028f57600080fd5b506102aa60048036036102a591908101906130d0565b6107ff565b6040516102c29c9b9a9998979695949392919061341a565b60405180910390f35b3480156102d757600080fd5b506102f260048036036102ed9190810190613001565b610988565b005b34801561030057600080fd5b5061031b60048036036103169190810190612fd8565b610a41565b005b34801561032957600080fd5b50610344600480360361033f919081019061303d565b610cdb565b005b34801561035257600080fd5b5061036d60048036036103689190810190612fd8565b6110df565b60405161037a91906133ff565b60405180910390f35b34801561038f57600080fd5b506103986110f7565b6040516103a591906133ff565b60405180910390f35b3480156103ba57600080fd5b506103c36110fd565b6040516103d091906133a6565b60405180910390f35b3480156103e557600080fd5b506103ee611110565b005b3480156103fc57600080fd5b50610417600480360361041291908101906130d0565b611188565b005b34801561042557600080fd5b5061042e611202565b005b34801561043c57600080fd5b5061044561127a565b60405161045291906133ff565b60405180910390f35b34801561046757600080fd5b50610470611280565b005b34801561047e57600080fd5b50610499600480360361049491908101906130d0565b6115c7565b005b3480156104a757600080fd5b506104c260048036036104bd9190810190612fd8565b61163c565b005b3480156104d057600080fd5b506104eb60048036036104e691908101906130d0565b61178e565b005b3480156104f957600080fd5b50610502611868565b6040516105119392919061335a565b60405180910390f35b34801561052657600080fd5b5061052f611b39565b60405161053c91906133a6565b60405180910390f35b34801561055157600080fd5b5061056c60048036036105679190810190613001565b611b4c565b005b34801561057a57600080fd5b50610583611beb565b005b34801561059157600080fd5b506105ac60048036036105a79190810190612fd8565b611ca8565b6040516105b991906133ff565b60405180910390f35b3480156105ce57600080fd5b506105d7611cf4565b6040516105e491906133ff565b60405180910390f35b3480156105f957600080fd5b50610602611cfa565b60405161060f91906133ff565b60405180910390f35b34801561062457600080fd5b5061063f600480360361063a9190810190613001565b611d00565b005b34801561064d57600080fd5b50610656612364565b60405161066391906133ff565b60405180910390f35b6000818301905082811015151561067f57fe5b80905092915050565b600e8181548110151561069757fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561072157600080fd5b6005548111151561073157600080fd5b8060058190555050565b60045481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561079c57600080fd5b6001600060146101000a81548160ff0219169083151502179055507fadac2a07dd926cc50f681194fe221f6245cdafa96623d1c64fa69c027182f40a600060149054906101000a900460ff166040516107f591906133a6565b60405180910390a1565b600080600080600060606000806000806000806000600960008f8152602001908152602001600020905080600001548160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836001015484600201548560050186600601548760080154886009015489600a01548a600b01548b600e0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16868054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109595780601f1061092e57610100808354040283529160200191610959565b820191906000526020600020905b81548152906001019060200180831161093c57829003601f168201915b505050505096509c509c509c509c509c509c509c509c509c509c509c509c505091939597999b5091939597999b565b6000808373ffffffffffffffffffffffffffffffffffffffff16141515156109af57600080fd5b600082141515156109bf57600080fd5b6009600083815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610a3257600080fd5b610a3c8383612383565b505050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a9f57600080fd5b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515610aed57600080fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491506000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550829050818173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610bcd91906132df565b602060405180830381600087803b158015610be757600080fd5b505af1158015610bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c1f91908101906130f9565b10151515610c2c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610c83929190613331565b602060405180830381600087803b158015610c9d57600080fd5b505af1158015610cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cd59190810190613066565b50505050565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d3b57600080fd5b600191505b600a548210156110a2576009600083815260200190815260200160002090506000816000015414151561109557838015610deb5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610df4575083155b1561109457610e508160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360060154612963565b611078816101e060405190810160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600582018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fc45780601f10610f9957610100808354040283529160200191610fc4565b820191906000526020600020905b815481529060010190602001808311610fa757829003601f168201915b5050505050815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050612acd565b600b600081548092919060019003919050555082806001019350505b5b8180600101925050610d40565b7faeb4f5733a2e8073f7ddf9b69cdc1588e959cec9ac8b80866c29237cbe281fbe836040516110d191906133ff565b60405180910390a150505050565b600c6020528060005260406000206000915090505481565b60065481565b600060149054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561116b57600080fd5b6001600760006101000a81548160ff021916908315150217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111e357600080fd5b603c81101515156111f357600080fd5b62015180810260038190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561125d57600080fd5b6000600760006101000a81548160ff021916908315150217905550565b600b5481565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112e157600080fd5b600d60008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054935060008411801561133457503073ffffffffffffffffffffffffffffffffffffffff16318411155b156113d9576000600d60008073ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166108fc600d60008073ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f193505050501580156113d7573d6000803e3d6000fd5b505b600090505b600e805490508110156115b157600e818154811015156113fa57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692506000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156115a457600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205493506000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508291508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611550929190613331565b602060405180830381600087803b15801561156a57600080fd5b505af115801561157e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115a29190810190613066565b505b80806001019150506113de565b6000600e816115c09190612dd9565b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561162257600080fd5b601e811115151561163257600080fd5b8060048190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561169757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156116f357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f178eb36323c5a89970cc900b55d89d2731becfb4f5df34667d995e48cee7d4e16000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161178391906132df565b60405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117e957600080fd5b6000811115156117f857600080fd5b803073ffffffffffffffffffffffffffffffffffffffff16311015151561181e57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611864573d6000803e3d6000fd5b5050565b6060806060600060608060606000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118d257600080fd5b600e805490509550856040519080825280602002602001820160405280156119095781602001602082028038833980820191505090505b5094508560405190808252806020026020018201604052801561194057816020015b606081526020019060019003908161192b5790505b509350856040519080825280602002602001820160405280156119725781602001602082028038833980820191505090505b509250600091505b85821015611b2557600e8281548110151561199157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685838151811015156119ca57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508482815181101515611a1457fe5b9060200190602002015190508073ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b158015611a8457600080fd5b505af1158015611a98573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611ac1919081019061308f565b8483815181101515611acf57fe5b90602001906020020181905250611afc8583815181101515611aed57fe5b90602001906020020151612d3f565b8383815181101515611b0a57fe5b9060200190602002018181525050818060010192505061197a565b848484985098509850505050505050909192565b600760009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ba757600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515611bcd57600080fd5b60008114151515611bdd57600080fd5b611be78282612383565b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c4657600080fd5b60008060146101000a81548160ff0219169083151502179055507fadac2a07dd926cc50f681194fe221f6245cdafa96623d1c64fa69c027182f40a600060149054906101000a900460ff16604051611c9e91906133a6565b60405180910390a1565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60055481565b60035481565b600080600080600060149054906101000a900460ff16151515611d2257600080fd5b60008673ffffffffffffffffffffffffffffffffffffffff1614151515611d4857600080fd5b600085111515611d5757600080fd5b8593508373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611db3939291906132fa565b602060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e059190810190613066565b1515611e1057600080fd5b6064611e1d86600c612d88565b811515611e2657fe5b049250611e338584612dc0565b91506064611e42866010612d88565b811515611e4b57fe5b049050600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a5490806001815401808255809150509060018203906000526020600020016000909192909190915055506101e060405190810160405280600a548152602001868152602001600354420181526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b158015611f7a57600080fd5b505af1158015611f8e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611fb7919081019061308f565b815260200183815260200182815260200142815260200160065481526020016000815260200160008152602001600081526020016000815260200173a15c7ebe1f07caf6bff097d8a589fb8ac49ae5b373ffffffffffffffffffffffffffffffffffffffff1681525060096000600a54815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160050190805190602001906120fd929190612e05565b5060c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c01556101a082015181600d01556101c082015181600e0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050506121e8600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548661066c565b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60008154809291906001019190505550600b600081548092919060010191905055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fed175a8ddea84085fa2767c9c1f3342fae1f118bc1213ac4d4a0c6277bc0ad738673ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15801561230257600080fd5b505af1158015612316573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061233f919081019061308f565b886003544201604051612354939291906133c1565b60405180910390a3505050505050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600080600060606000806000806000806000600960008d81526020019081526020016000209a5060008b60000154141515156123be57600080fd5b8c73ffffffffffffffffffffffffffffffffffffffff168b60040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561241c57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614801561247c5750428b60020154105b806124d55750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b15156124e057600080fd5b8a60040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1698508a6005018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561259f5780601f106125745761010080835404028352916020019161259f565b820191906000526020600020905b81548152906001019060200180831161258257829003601f168201915b50505050509750428b6002015410156126f7576126098b60030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c60040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d60060154612963565b8a600601549950612681600c60008d60040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548c60060154612dc0565b600c60008d60040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008b600601819055506128eb565b60011515600760009054906101000a900460ff161515141561271c5760069650612721565b600396505b8a600801544203955062278d00866064898e600101540281151561274157fe5b040281151561274c57fe5b04945061275d8b6006015486612dc0565b9350838b60060181905550428b6008018190555060646127828c60010154600c612d88565b81151561278b57fe5b04925083838c600101540303915060648b60010154838115156127aa57fe5b04029050818b600b0181905550808b600a018190555061282d600c60008d60040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205486612dc0565b600c60008d60040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128e78b60030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c60040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687612963565b8499505b8873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f959346e7719e944c33f76798af64519a9c17a870c805ae49c011066f18fa9cb08a8d4260405161294c939291906133c1565b60405180910390a350505050505050505050505050565b6000829050818173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016129be91906132df565b602060405180830381600087803b1580156129d857600080fd5b505af11580156129ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a1091908101906130f9565b10151515612a1d57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612a74929190613331565b602060405180830381600087803b158015612a8e57600080fd5b505af1158015612aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ac69190810190613066565b5050505050565b6000806000612b23600c6000866080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548560200151612dc0565b600c6000866080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506009600085600001518152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600582016000612bf89190612e85565b6006820160009055600782016000905560088201600090556009820160009055600a820160009055600b820160009055600c820160009055600d820160009055600e820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555050600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020925082805490509150600090505b81811015612d395783600001518382815481101515612cc957fe5b90600052602060002001541415612d2c578260018303815481101515612ceb57fe5b90600052602060002001548382815481101515612d0457fe5b906000526020600020018190555082805480919060019003612d269190612ecd565b50612d39565b8080600101915050612cae565b50505050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080831415612d9b5760009050612dba565b8183029050818382811515612dac57fe5b04141515612db657fe5b8090505b92915050565b6000828211151515612dce57fe5b818303905092915050565b815481835581811115612e0057818360005260206000209182019101612dff9190612ef9565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612e4657805160ff1916838001178555612e74565b82800160010185558215612e74579182015b82811115612e73578251825591602001919060010190612e58565b5b509050612e819190612ef9565b5090565b50805460018160011615610100020316600290046000825580601f10612eab5750612eca565b601f016020900490600052602060002090810190612ec99190612ef9565b5b50565b815481835581811115612ef457818360005260206000209182019101612ef39190612ef9565b5b505050565b612f1b91905b80821115612f17576000816000905550600101612eff565b5090565b90565b6000612f2a82356135ef565b905092915050565b6000612f3e823561360f565b905092915050565b6000612f52825161360f565b905092915050565b600082601f8301121515612f6d57600080fd5b8151612f80612f7b82613508565b6134db565b91508082526020830160208301858383011115612f9c57600080fd5b612fa7838284613625565b50505092915050565b6000612fbc823561361b565b905092915050565b6000612fd0825161361b565b905092915050565b600060208284031215612fea57600080fd5b6000612ff884828501612f1e565b91505092915050565b6000806040838503121561301457600080fd5b600061302285828601612f1e565b925050602061303385828601612fb0565b9150509250929050565b60006020828403121561304f57600080fd5b600061305d84828501612f32565b91505092915050565b60006020828403121561307857600080fd5b600061308684828501612f46565b91505092915050565b6000602082840312156130a157600080fd5b600082015167ffffffffffffffff8111156130bb57600080fd5b6130c784828501612f5a565b91505092915050565b6000602082840312156130e257600080fd5b60006130f084828501612fb0565b91505092915050565b60006020828403121561310b57600080fd5b600061311984828501612fc4565b91505092915050565b61312b816135b9565b82525050565b600061313c8261355b565b80845260208401935061314e83613534565b60005b8281101561318057613164868351613122565b61316d82613592565b9150602086019550600181019050613151565b50849250505092915050565b600061319782613566565b808452602084019350836020820285016131b085613541565b60005b848110156131e95783830388526131cb83835161329a565b92506131d68261359f565b91506020880197506001810190506131b3565b508196508694505050505092915050565b600061320582613571565b8084526020840193506132178361354e565b60005b828110156132495761322d8683516132d0565b613236826135ac565b915060208601955060018101905061321a565b50849250505092915050565b61325e816135d9565b82525050565b600061326f82613587565b808452613283816020860160208601613625565b61328c81613658565b602085010191505092915050565b60006132a58261357c565b8084526132b9816020860160208601613625565b6132c281613658565b602085010191505092915050565b6132d9816135e5565b82525050565b60006020820190506132f46000830184613122565b92915050565b600060608201905061330f6000830186613122565b61331c6020830185613122565b61332960408301846132d0565b949350505050565b60006040820190506133466000830185613122565b61335360208301846132d0565b9392505050565b600060608201905081810360008301526133748186613131565b90508181036020830152613388818561318c565b9050818103604083015261339c81846131fa565b9050949350505050565b60006020820190506133bb6000830184613255565b92915050565b600060608201905081810360008301526133db8186613264565b90506133ea60208301856132d0565b6133f760408301846132d0565b949350505050565b600060208201905061341460008301846132d0565b92915050565b600061018082019050613430600083018f6132d0565b61343d602083018e613122565b61344a604083018d613122565b613457606083018c6132d0565b613464608083018b6132d0565b81810360a0830152613476818a613264565b905061348560c08301896132d0565b61349260e08301886132d0565b6134a06101008301876132d0565b6134ae6101208301866132d0565b6134bc6101408301856132d0565b6134ca610160830184613122565b9d9c50505050505050505050505050565b6000604051905081810181811067ffffffffffffffff821117156134fe57600080fd5b8060405250919050565b600067ffffffffffffffff82111561351f57600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b60005b83811015613643578082015181840152602081019050613628565b83811115613652576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a72305820fdc3a5b7ee68b38cc983c69a00cd1b237aa2e9e7dfbcd7c2db0d723413be9efa6c6578706572696d656e74616cf50037
Swarm Source
bzzr://fdc3a5b7ee68b38cc983c69a00cd1b237aa2e9e7dfbcd7c2db0d723413be9efa
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.