ERC-20
Overview
Max Total Supply
1,000,000,000 SERO
Holders
154
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.000016339 SEROValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SEROToken
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 2018-11-08 */ pragma solidity ^0.4.24; /** * @title SafeMath * @dev Math operations with safety checks that revert on error */ library SafeMath { /** * @dev Multiplies two numbers, reverts on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } /** * @dev Integer division of two numbers truncating the quotient, reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0); // Solidity only automatically asserts when dividing by 0 uint256 c = a / b; return c; } /** * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } /** * @dev Adds two numbers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } } library FrozenChecker { using SafeMath for uint256; /** * Rule for each address */ struct Rule { uint256 timeT; uint8 initPercent; uint256[] periods; uint8[] percents; } function check(Rule storage self, uint256 totalFrozenValue) internal view returns(uint256) { if (totalFrozenValue == uint256(0)) { return 0; } if (self.timeT == uint256(0) || self.timeT > now) { return totalFrozenValue.sub(totalFrozenValue.mul(self.initPercent).div(100)); } for (uint256 i = 0; i < self.periods.length.sub(1); i = i.add(1)) { if (now >= self.timeT.add(self.periods[i]) && now < self.timeT.add(self.periods[i.add(1)])) { return totalFrozenValue.sub(totalFrozenValue.mul(self.percents[i]).div(100)); } } if (now >= self.timeT.add(self.periods[self.periods.length.sub(1)])) { return totalFrozenValue.sub(totalFrozenValue.mul(self.percents[self.periods.length.sub(1)]).div(100)); } } } library FrozenValidator { using SafeMath for uint256; using FrozenChecker for FrozenChecker.Rule; struct Validator { mapping(address => IndexValue) data; KeyFlag[] keys; uint256 size; } struct IndexValue { uint256 keyIndex; FrozenChecker.Rule rule; mapping (address => uint256) frozenBalances; } struct KeyFlag { address key; bool deleted; } function addRule(Validator storage self, address key, uint8 initPercent, uint256[] periods, uint8[] percents) internal returns (bool replaced) { require(key != address(0)); require(periods.length == percents.length); require(periods.length > 0); require(periods[0] == uint256(0)); require(initPercent <= percents[0]); for (uint256 i = 1; i < periods.length; i = i.add(1)) { require(periods[i.sub(1)] < periods[i]); require(percents[i.sub(1)] <= percents[i]); } require(percents[percents.length.sub(1)] == 100); FrozenChecker.Rule memory rule = FrozenChecker.Rule(0, initPercent, periods, percents); uint256 keyIndex = self.data[key].keyIndex; self.data[key].rule = rule; if (keyIndex > 0) { return false; } else { keyIndex = self.keys.length++; self.data[key].keyIndex = keyIndex.add(1); self.keys[keyIndex].key = key; self.size++; return true; } } function removeRule(Validator storage self, address key) internal returns (bool success) { uint256 keyIndex = self.data[key].keyIndex; if (keyIndex == 0) { return false; } delete self.data[key]; self.keys[keyIndex.sub(1)].deleted = true; self.size--; return true; } function containRule(Validator storage self, address key) internal view returns (bool) { return self.data[key].keyIndex > 0; } function addTimeT(Validator storage self, address addr, uint256 timeT) internal returns (bool) { require(timeT > now); self.data[addr].rule.timeT = timeT; return true; } function addFrozenBalance(Validator storage self, address from, address to, uint256 value) internal returns (uint256) { self.data[from].frozenBalances[to] = self.data[from].frozenBalances[to].add(value); return self.data[from].frozenBalances[to]; } function validate(Validator storage self, address addr) internal returns (uint256) { uint256 frozenTotal = 0; for (uint256 i = iterateStart(self); iterateValid(self, i); i = iterateNext(self, i)) { address ruleaddr = iterateGet(self, i); FrozenChecker.Rule storage rule = self.data[ruleaddr].rule; frozenTotal = frozenTotal.add(rule.check(self.data[ruleaddr].frozenBalances[addr])); } return frozenTotal; } function iterateStart(Validator storage self) internal view returns (uint256 keyIndex) { return iterateNext(self, uint256(-1)); } function iterateValid(Validator storage self, uint256 keyIndex) internal view returns (bool) { return keyIndex < self.keys.length; } function iterateNext(Validator storage self, uint256 keyIndex) internal view returns (uint256) { keyIndex++; while (keyIndex < self.keys.length && self.keys[keyIndex].deleted) { keyIndex++; } return keyIndex; } function iterateGet(Validator storage self, uint256 keyIndex) internal view returns (address) { return self.keys[keyIndex].key; } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ 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. */ constructor() 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; } } /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. */ contract Pausable is Ownable { event PausePublic(bool newState); event PauseOwnerAdmin(bool newState); bool public pausedPublic = true; bool public pausedOwnerAdmin = false; address public admin; /** * @dev Modifier to make a function callable based on pause states. */ modifier whenNotPaused() { if(pausedPublic) { if(!pausedOwnerAdmin) { require(msg.sender == admin || msg.sender == owner); } else { revert(); } } _; } /** * @dev called by the owner to set new pause flags * pausedPublic can't be false while pausedOwnerAdmin is true */ function pause(bool newPausedPublic, bool newPausedOwnerAdmin) onlyOwner public { require(!(newPausedPublic == false && newPausedOwnerAdmin == true)); pausedPublic = newPausedPublic; pausedOwnerAdmin = newPausedOwnerAdmin; PausePublic(newPausedPublic); PauseOwnerAdmin(newPausedOwnerAdmin); } } interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) external; } contract SEROToken is Pausable { using SafeMath for uint256; using FrozenValidator for FrozenValidator.Validator; string public name; string public symbol; uint8 public decimals = 9; uint256 public totalSupply; // Create array of all balances mapping (address => uint256) internal balances; mapping (address => mapping (address => uint256)) internal allowed; // Create array of freeze account mapping (address => bool) frozenAccount; // Indefinite frozen account mapping (address => uint256) frozenTimestamp; // Timelimit frozen account // Freeze account using rule FrozenValidator.Validator validator; event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); event AdminTransferred(address indexed previousAdmin, address indexed newAdmin); constructor(string tokenName, string tokenSymbol, uint256 totalTokenSupply ) public { name = tokenName; symbol = tokenSymbol; totalSupply = totalTokenSupply * 10 ** uint256(decimals); admin = msg.sender; balances[msg.sender] = totalSupply; emit Transfer(0x0, msg.sender, totalSupply); } // Change admin function changeAdmin(address newAdmin) public onlyOwner returns (bool) { // require(msg.sender == admin); require(newAdmin != address(0)); // uint256 balAdmin = balances[admin]; // balances[newAdmin] = balances[newAdmin].add(balAdmin); // balances[admin] = 0; admin = newAdmin; emit AdminTransferred(admin, newAdmin); return true; } // Get account frozen timestamp function getFrozenTimestamp(address _target) public view returns (uint256) { return frozenTimestamp[_target]; } // Check if the account is freezed indefinitely function getFrozenAccount(address _target) public view returns (bool) { return frozenAccount[_target]; } // Indefinite freeze account or unfreeze account(set _freeze to true) function freeze(address _target, bool _freeze) public returns (bool) { require(msg.sender == admin); require(_target != admin); frozenAccount[_target] = _freeze; return true; } // Timelimit freeze account or unfreeze account(set _timestamp to 0x0) function freezeWithTimestamp(address _target, uint256 _timestamp) public returns (bool) { require(msg.sender == admin); require(_target != admin); frozenTimestamp[_target] = _timestamp; return true; } // Batch indefinite freeze account or unfreeze account function multiFreeze(address[] _targets, bool[] _freezes) public returns (bool) { require(msg.sender == admin); require(_targets.length == _freezes.length); uint256 len = _targets.length; require(len > 0); for (uint256 i = 0; i < len; i = i.add(1)) { address _target = _targets[i]; require(_target != admin); bool _freeze = _freezes[i]; frozenAccount[_target] = _freeze; } return true; } // Batch timelimit freeze account or unfreeze account function multiFreezeWithTimestamp(address[] _targets, uint256[] _timestamps) public returns (bool) { require(msg.sender == admin); require(_targets.length == _timestamps.length); uint256 len = _targets.length; require(len > 0); for (uint256 i = 0; i < len; i = i.add(1)) { address _target = _targets[i]; require(_target != admin); uint256 _timestamp = _timestamps[i]; frozenTimestamp[_target] = _timestamp; } return true; } /* Freeze or unfreeze account using rules */ function addRule(address addr, uint8 initPercent, uint256[] periods, uint8[] percents) public returns (bool) { require(msg.sender == admin); return validator.addRule(addr, initPercent, periods, percents); } function addTimeT(address addr, uint256 timeT) public returns (bool) { require(msg.sender == admin); return validator.addTimeT(addr, timeT); } function removeRule(address addr) public returns (bool) { require(msg.sender == admin); return validator.removeRule(addr); } function validate(address addr) public view returns (uint256) { require(msg.sender == admin); return validator.validate(addr); } function queryRule(address addr) public view returns (uint256,uint8,uint256[],uint8[]) { require(msg.sender == admin); return (validator.data[addr].rule.timeT,validator.data[addr].rule.initPercent,validator.data[addr].rule.periods,validator.data[addr].rule.percents); } /* ERC20 interface */ function transfer(address _to, uint256 _value) public whenNotPaused returns (bool) { _transfer(_to, _value); return true; } function _transfer(address _to, uint256 _value) internal whenNotPaused { require(_to != 0x0); require(!frozenAccount[msg.sender]); require(now > frozenTimestamp[msg.sender]); require(balances[msg.sender].sub(_value) >= validator.validate(msg.sender)); if (validator.containRule(msg.sender) && msg.sender != _to) { validator.addFrozenBalance(msg.sender, _to, _value); } balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); } function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool) { require(_to != 0x0); require(!frozenAccount[_from]); require(now > frozenTimestamp[_from]); require(_value <= balances[_from].sub(validator.validate(_from))); require(_value <= allowed[_from][msg.sender]); if (validator.containRule(_from) && _from != _to) { validator.addFrozenBalance(_from, _to, _value); } balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); emit Transfer(_from, _to, _value); return true; } function multiTransfer(address[] _tos, uint256[] _values) public whenNotPaused returns (bool) { require(!frozenAccount[msg.sender]); require(now > frozenTimestamp[msg.sender]); require(_tos.length == _values.length); uint256 len = _tos.length; require(len > 0); uint256 amount = 0; for (uint256 i = 0; i < len; i = i.add(1)) { amount = amount.add(_values[i]); } require(amount <= balances[msg.sender].sub(validator.validate(msg.sender))); for (uint256 j = 0; j < len; j = j.add(1)) { address _to = _tos[j]; require(_to != 0x0); if (validator.containRule(msg.sender) && msg.sender != _to) { validator.addFrozenBalance(msg.sender, _to, _values[j]); } balances[_to] = balances[_to].add(_values[j]); balances[msg.sender] = balances[msg.sender].sub(_values[j]); emit Transfer(msg.sender, _to, _values[j]); } return true; } function approve(address _spender, uint256 _value) public whenNotPaused returns (bool) { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } function approveAndCall(address _spender, uint256 _value, bytes _extraData) public whenNotPaused returns (bool success) { require(_spender != 0x0); require(!frozenAccount[msg.sender]); require(now > frozenTimestamp[msg.sender]); require(_value <= balances[msg.sender].sub(validator.validate(msg.sender))); if (validator.containRule(msg.sender) && msg.sender != _spender) { validator.addFrozenBalance(msg.sender, _spender, _value); } tokenRecipient spender = tokenRecipient(_spender); if (approve(_spender, _value)) { spender.receiveApproval(msg.sender, _value, this, _extraData); return true; } } function allowance(address _owner, address _spender) public view returns (uint256) { return allowed[_owner][_spender]; } function balanceOf(address _owner) public view returns (uint256) { return balances[_owner]; //.sub(validator.validate(_owner)); } function kill() public { require(msg.sender == admin); selfdestruct(admin); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tos","type":"address[]"},{"name":"_values","type":"uint256[]"}],"name":"multiTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"validate","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":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pausedPublic","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"queryRule","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint8"},{"name":"","type":"uint256[]"},{"name":"","type":"uint8[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"kill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pausedOwnerAdmin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"changeAdmin","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":"addr","type":"address"},{"name":"initPercent","type":"uint8"},{"name":"periods","type":"uint256[]"},{"name":"percents","type":"uint8[]"}],"name":"addRule","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"timeT","type":"uint256"}],"name":"addTimeT","outputs":[{"name":"","type":"bool"}],"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":"_target","type":"address"},{"name":"_freeze","type":"bool"}],"name":"freeze","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_target","type":"address"}],"name":"getFrozenAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_targets","type":"address[]"},{"name":"_freezes","type":"bool[]"}],"name":"multiFreeze","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"},{"name":"_timestamp","type":"uint256"}],"name":"freezeWithTimestamp","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_targets","type":"address[]"},{"name":"_timestamps","type":"uint256[]"}],"name":"multiFreezeWithTimestamp","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":false,"inputs":[{"name":"newPausedPublic","type":"bool"},{"name":"newPausedOwnerAdmin","type":"bool"}],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"removeRule","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_target","type":"address"}],"name":"getFrozenTimestamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"tokenName","type":"string"},{"name":"tokenSymbol","type":"string"},{"name":"totalTokenSupply","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"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"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousAdmin","type":"address"},{"indexed":true,"name":"newAdmin","type":"address"}],"name":"AdminTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newState","type":"bool"}],"name":"PausePublic","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newState","type":"bool"}],"name":"PauseOwnerAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
60806040526001600060146101000a81548160ff02191690831515021790555060008060156101000a81548160ff0219169083151502179055506009600460006101000a81548160ff021916908360ff1602179055503480156200006257600080fd5b506040516200487438038062004874833981018060405281019080805182019291906020018051820192919060200180519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260029080519060200190620000f692919062000210565b5081600390805190602001906200010f92919062000210565b50600460009054906101000a900460ff1660ff16600a0a810260058190555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040518082815260200191505060405180910390a3505050620002bf565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025357805160ff191683800117855562000284565b8280016001018555821562000284579182015b828111156200028357825182559160200191906001019062000266565b5b50905062000293919062000297565b5090565b620002bc91905b80821115620002b85760008160009055506001016200029e565b5090565b90565b6145a580620002cf6000396000f300608060405260043610610180576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610185578063095ea7b31461021557806318160ddd1461027a5780631e89d545146102a5578063207c64fb1461036657806323b872dd146103bd57806324bb7c2614610442578063313ce5671461047157806335cd64ee146104a257806341c0e1b51461059657806364779ad7146105ad57806370a08231146105dc5780638da5cb5b146106335780638f2839701461068a57806395d89b41146106e557806399f9b55e14610775578063a2c8a92714610863578063a9059cbb146108c8578063bf120ae51461092d578063c497780714610994578063c878dad9146109ef578063cae9ca5114610ab0578063d70907b014610b5b578063d950c43214610bc0578063dd62ed3e14610c81578063ddeb509414610cf8578063df21950f14610d33578063e6ad5bc714610d8e578063f2fde38b14610de5578063f851a44014610e28575b600080fd5b34801561019157600080fd5b5061019a610e7f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101da5780820151818401526020810190506101bf565b50505050905090810190601f1680156102075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022157600080fd5b50610260600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f1d565b604051808215151515815260200191505060405180910390f35b34801561028657600080fd5b5061028f6110f7565b6040518082815260200191505060405180910390f35b3480156102b157600080fd5b5061034c60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506110fd565b604051808215151515815260200191505060405180910390f35b34801561037257600080fd5b506103a7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611650565b6040518082815260200191505060405180910390f35b3480156103c957600080fd5b50610428600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116c9565b604051808215151515815260200191505060405180910390f35b34801561044e57600080fd5b50610457611c91565b604051808215151515815260200191505060405180910390f35b34801561047d57600080fd5b50610486611ca4565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104ae57600080fd5b506104e3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cb7565b604051808581526020018460ff1660ff1681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561053c578082015181840152602081019050610521565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561057e578082015181840152602081019050610563565b50505050905001965050505050505060405180910390f35b3480156105a257600080fd5b506105ab611f21565b005b3480156105b957600080fd5b506105c2611fb8565b604051808215151515815260200191505060405180910390f35b3480156105e857600080fd5b5061061d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fcb565b6040518082815260200191505060405180910390f35b34801561063f57600080fd5b50610648612014565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561069657600080fd5b506106cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612039565b604051808215151515815260200191505060405180910390f35b3480156106f157600080fd5b506106fa612198565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561073a57808201518184015260208101905061071f565b50505050905090810190601f1680156107675780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561078157600080fd5b50610849600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612236565b604051808215151515815260200191505060405180910390f35b34801561086f57600080fd5b506108ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506122b8565b604051808215151515815260200191505060405180910390f35b3480156108d457600080fd5b50610913600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612334565b604051808215151515815260200191505060405180910390f35b34801561093957600080fd5b5061097a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612432565b604051808215151515815260200191505060405180910390f35b3480156109a057600080fd5b506109d5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061254e565b604051808215151515815260200191505060405180910390f35b3480156109fb57600080fd5b50610a9660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506125a4565b604051808215151515815260200191505060405180910390f35b348015610abc57600080fd5b50610b41600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612749565b604051808215151515815260200191505060405180910390f35b348015610b6757600080fd5b50610ba6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b5f565b604051808215151515815260200191505060405180910390f35b348015610bcc57600080fd5b50610c676004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612c68565b604051808215151515815260200191505060405180910390f35b348015610c8d57600080fd5b50610ce2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dfa565b6040518082815260200191505060405180910390f35b348015610d0457600080fd5b50610d31600480360381019080803515159060200190929190803515159060200190929190505050612e81565b005b348015610d3f57600080fd5b50610d74600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fae565b604051808215151515815260200191505060405180910390f35b348015610d9a57600080fd5b50610dcf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613027565b6040518082815260200191505060405180910390f35b348015610df157600080fd5b50610e26600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613070565b005b348015610e3457600080fd5b50610e3d6131c5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b505050505081565b60008060149054906101000a900460ff161561100757600060159054906101000a900460ff16151561100157600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ff157506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610ffc57600080fd5b611006565b600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60055481565b600080600080600080600060149054906101000a900460ff16156111ef57600060159054906101000a900460ff1615156111e957600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806111d957506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156111e457600080fd5b6111ee565b600080fd5b5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561124857600080fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544211151561129557600080fd5b865188511415156112a557600080fd5b875194506000851115156112b857600080fd5b60009350600092505b84831015611310576112f387848151811015156112da57fe5b90602001906020020151856131eb90919063ffffffff16565b93506113096001846131eb90919063ffffffff16565b92506112c1565b61137561132733600a61320c90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b841115151561138357600080fd5b600091505b8482101561164157878281518110151561139e57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156113d057600080fd5b6113e433600a61336b90919063ffffffff16565b801561141c57508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611452576114503382898581518110151561143457fe5b90602001906020020151600a6133bc909392919063ffffffff16565b505b6114bb878381518110151561146357fe5b90602001906020020151600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb90919063ffffffff16565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611567878381518110151561150f57fe5b90602001906020020151600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef898581518110151561160757fe5b906020019060200201516040518082815260200191505060405180910390a361163a6001836131eb90919063ffffffff16565b9150611388565b60019550505050505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116ae57600080fd5b6116c282600a61320c90919063ffffffff16565b9050919050565b60008060149054906101000a900460ff16156117b357600060159054906101000a900460ff1615156117ad57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061179d57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156117a857600080fd5b6117b2565b600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff16141515156117d957600080fd5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561183257600080fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544211151561187f57600080fd5b6118e461189685600a61320c90919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b82111515156118f257600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561197d57600080fd5b61199184600a61336b90919063ffffffff16565b80156119c957508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119e8576119e6848484600a6133bc909392919063ffffffff16565b505b611a3a82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611acf82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ba182600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600060149054906101000a900460ff1681565b600460009054906101000a900460ff1681565b600080606080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d1957600080fd5b600a60000160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160000154600a60000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160010160009054906101000a900460ff16600a60000160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600201600a60000160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160030181805480602002602001604051908101604052809291908181526020018280548015611e9357602002820191906000526020600020905b815481526020019060010190808311611e7f575b5050505050915080805480602002602001604051908101604052809291908181526020018280548015611f0b57602002820191906000526020600020906000905b82829054906101000a900460ff1660ff1681526020019060010190602082600001049283019260010382029150808411611ed45790505b5050505050905093509350935093509193509193565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f7d57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b600060159054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561209657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156120d257600080fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec660405160405180910390a360019050919050565b60038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561222e5780601f106122035761010080835404028352916020019161222e565b820191906000526020600020905b81548152906001019060200180831161221157829003601f168201915b505050505081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561229457600080fd5b6122ae85858585600a61356390949392919063ffffffff16565b9050949350505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561231657600080fd5b61232c8383600a61394e9092919063ffffffff16565b905092915050565b60008060149054906101000a900460ff161561241e57600060159054906101000a900460ff16151561241857600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061240857506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561241357600080fd5b61241d565b600080fd5b5b61242883836139b5565b6001905092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561249057600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156124ed57600080fd5b81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561260857600080fd5b8551875114151561261857600080fd5b8651935060008411151561262b57600080fd5b600092505b8383101561273b57868381518110151561264657fe5b906020019060200201519150600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156126af57600080fd5b85838151811015156126bd57fe5b90602001906020020151905080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506127346001846131eb90919063ffffffff16565b9250612630565b600194505050505092915050565b600080600060149054906101000a900460ff161561283557600060159054906101000a900460ff16151561282f57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061281f57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561282a57600080fd5b612834565b600080fd5b5b60008573ffffffffffffffffffffffffffffffffffffffff161415151561285b57600080fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156128b457600080fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544211151561290157600080fd5b61296661291833600a61320c90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b841115151561297457600080fd5b61298833600a61336b90919063ffffffff16565b80156129c057508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156129df576129dd338686600a6133bc909392919063ffffffff16565b505b8490506129ec8585610f1d565b15612b56578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612ae6578082015181840152602081019050612acb565b50505050905090810190601f168015612b135780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015612b3557600080fd5b505af1158015612b49573d6000803e3d6000fd5b5050505060019150612b57565b5b509392505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612bbd57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612c1a57600080fd5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ccc57600080fd5b85518751141515612cdc57600080fd5b86519350600084111515612cef57600080fd5b600092505b83831015612dec578683815181101515612d0a57fe5b906020019060200201519150600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612d7357600080fd5b8583815181101515612d8157fe5b90602001906020020151905080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612de56001846131eb90919063ffffffff16565b9250612cf4565b600194505050505092915050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612edc57600080fd5b60001515821515148015612ef4575060011515811515145b151515612f0057600080fd5b81600060146101000a81548160ff02191690831515021790555080600060156101000a81548160ff0219169083151502179055507fa14d191ca4f53bfcf003c65d429362010a2d3d68bc0c50cce4bdc0fccf661fb082604051808215151515815260200191505060405180910390a17fc77636fc4a62a1fa193ef538c0b7993a1313a0d9c0a9173058cebcd3239ef7b581604051808215151515815260200191505060405180910390a15050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561300c57600080fd5b61302082600a613ddb90919063ffffffff16565b9050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156130cb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561310757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080828401905083811015151561320257600080fd5b8091505092915050565b600080600080600080935061322087613f31565b92505b61322d8784613f64565b1561333d5761323c8784613f78565b91508660000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101905061332a61331b8860000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613fc190919063ffffffff16565b856131eb90919063ffffffff16565b93506133368784614269565b9250613223565b8394505050505092915050565b60008083831115151561335c57600080fd5b82840390508091505092915050565b6000808360000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411905092915050565b6000613452828660000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb90919063ffffffff16565b8560000160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508460000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050949350505050565b60008061356e614335565b60008073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141515156135ab57600080fd5b845186511415156135bb57600080fd5b600086511115156135cb57600080fd5b60008660008151811015156135dc57fe5b906020019060200201511415156135f257600080fd5b84600081518110151561360157fe5b9060200190602002015160ff168760ff161115151561361f57600080fd5b600192505b85518310156136ed57858381518110151561363b57fe5b906020019060200201518661365a60018661334a90919063ffffffff16565b81518110151561366657fe5b9060200190602002015110151561367c57600080fd5b848381518110151561368a57fe5b9060200190602002015160ff16856136ac60018661334a90919063ffffffff16565b8151811015156136b857fe5b9060200190602002015160ff16111515156136d257600080fd5b6136e66001846131eb90919063ffffffff16565b9250613624565b6064856137056001885161334a90919063ffffffff16565b81518110151561371157fe5b9060200190602002015160ff1614151561372a57600080fd5b608060405190810160405280600081526020018860ff1681526020018781526020018681525091508860000160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050818960000160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000820151816000015560208201518160010160006101000a81548160ff021916908360ff1602179055506040820151816002019080519060200190613825929190614361565b5060608201518160030190805190602001906138429291906143ae565b5090505060008111156138585760009350613942565b88600101805480919060010161386e9190614455565b90506138846001826131eb90919063ffffffff16565b8960000160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508789600101828154811015156138de57fe5b9060005260206000200160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508860020160008154809291906001019190505550600193505b50505095945050505050565b6000428211151561395e57600080fd5b818460000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160000181905550600190509392505050565b600060149054906101000a900460ff1615613a9e57600060159054906101000a900460ff161515613a9857600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480613a8857506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515613a9357600080fd5b613a9d565b600080fd5b5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515613ac457600080fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515613b1d57600080fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442111515613b6a57600080fd5b613b7e33600a61320c90919063ffffffff16565b613bd082600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b10151515613bdd57600080fd5b613bf133600a61336b90919063ffffffff16565b8015613c2957508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15613c4857613c46338383600a6133bc909392919063ffffffff16565b505b613c9a81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d2f81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb90919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000808360000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506000811415613e375760009150613f2a565b8360000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160009055600182016000808201600090556001820160006101000a81549060ff0219169055600282016000613eb29190614481565b600382016000613ec291906144a2565b50505050600184600101613ee060018461334a90919063ffffffff16565b815481101515613eec57fe5b9060005260206000200160000160146101000a81548160ff021916908315150217905550836002016000815480929190600190039190505550600191505b5092915050565b6000613f5d827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff614269565b9050919050565b600082600101805490508210905092915050565b60008260010182815481101515613f8b57fe5b9060005260206000200160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b6000806000831415613fd65760009150614262565b600084600001541480613fec5750428460000154115b156140445761403d61402e60646140208760010160009054906101000a900460ff1660ff16876142cd90919063ffffffff16565b61430b90919063ffffffff16565b8461334a90919063ffffffff16565b9150614262565b600090505b6140646001856002018054905061334a90919063ffffffff16565b8110156141815761409d846002018281548110151561407f57fe5b906000526020600020015485600001546131eb90919063ffffffff16565b42101580156140ef57506140ec846002016140c26001846131eb90919063ffffffff16565b8154811015156140ce57fe5b906000526020600020015485600001546131eb90919063ffffffff16565b42105b156141665761415f6141506064614142876003018581548110151561411057fe5b90600052602060002090602091828204019190069054906101000a900460ff1660ff16876142cd90919063ffffffff16565b61430b90919063ffffffff16565b8461334a90919063ffffffff16565b9150614262565b61417a6001826131eb90919063ffffffff16565b9050614049565b6141cd846002016141a36001876002018054905061334a90919063ffffffff16565b8154811015156141af57fe5b906000526020600020015485600001546131eb90919063ffffffff16565b421015156142615761425a61424b606461423d876003016141ff60018a6002018054905061334a90919063ffffffff16565b81548110151561420b57fe5b90600052602060002090602091828204019190069054906101000a900460ff1660ff16876142cd90919063ffffffff16565b61430b90919063ffffffff16565b8461334a90919063ffffffff16565b9150614262565b5b5092915050565b600081806001019250505b8260010180549050821080156142b25750826001018281548110151561429657fe5b9060005260206000200160000160149054906101000a900460ff165b156142c4578180600101925050614274565b81905092915050565b60008060008414156142e25760009150614304565b82840290508284828115156142f357fe5b0414151561430057600080fd5b8091505b5092915050565b60008060008311151561431d57600080fd5b828481151561432857fe5b0490508091505092915050565b60806040519081016040528060008152602001600060ff16815260200160608152602001606081525090565b82805482825590600052602060002090810192821561439d579160200282015b8281111561439c578251825591602001919060010190614381565b5b5090506143aa91906144ca565b5090565b82805482825590600052602060002090601f016020900481019282156144445791602002820160005b8382111561441557835183826101000a81548160ff021916908360ff16021790555092602001926001016020816000010492830192600103026143d7565b80156144425782816101000a81549060ff0219169055600101602081600001049283019260010302614415565b505b50905061445191906144ef565b5090565b81548183558181111561447c5781836000526020600020918201910161447b919061451f565b5b505050565b508054600082559060005260206000209081019061449f91906144ca565b50565b50805460008255601f0160209004906000526020600020908101906144c791906144ca565b50565b6144ec91905b808211156144e85760008160009055506001016144d0565b5090565b90565b61451c91905b8082111561451857600081816101000a81549060ff0219169055506001016144f5565b5090565b90565b61457691905b8082111561457257600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff021916905550600101614525565b5090565b905600a165627a7a723058202c383ac2912097d988e6fe7b5d2cb5273ab42361d2e8411e82eae98323c9dfd20029000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000000095345524f546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045345524f00000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405260043610610180576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610185578063095ea7b31461021557806318160ddd1461027a5780631e89d545146102a5578063207c64fb1461036657806323b872dd146103bd57806324bb7c2614610442578063313ce5671461047157806335cd64ee146104a257806341c0e1b51461059657806364779ad7146105ad57806370a08231146105dc5780638da5cb5b146106335780638f2839701461068a57806395d89b41146106e557806399f9b55e14610775578063a2c8a92714610863578063a9059cbb146108c8578063bf120ae51461092d578063c497780714610994578063c878dad9146109ef578063cae9ca5114610ab0578063d70907b014610b5b578063d950c43214610bc0578063dd62ed3e14610c81578063ddeb509414610cf8578063df21950f14610d33578063e6ad5bc714610d8e578063f2fde38b14610de5578063f851a44014610e28575b600080fd5b34801561019157600080fd5b5061019a610e7f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101da5780820151818401526020810190506101bf565b50505050905090810190601f1680156102075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022157600080fd5b50610260600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f1d565b604051808215151515815260200191505060405180910390f35b34801561028657600080fd5b5061028f6110f7565b6040518082815260200191505060405180910390f35b3480156102b157600080fd5b5061034c60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506110fd565b604051808215151515815260200191505060405180910390f35b34801561037257600080fd5b506103a7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611650565b6040518082815260200191505060405180910390f35b3480156103c957600080fd5b50610428600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116c9565b604051808215151515815260200191505060405180910390f35b34801561044e57600080fd5b50610457611c91565b604051808215151515815260200191505060405180910390f35b34801561047d57600080fd5b50610486611ca4565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104ae57600080fd5b506104e3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cb7565b604051808581526020018460ff1660ff1681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561053c578082015181840152602081019050610521565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561057e578082015181840152602081019050610563565b50505050905001965050505050505060405180910390f35b3480156105a257600080fd5b506105ab611f21565b005b3480156105b957600080fd5b506105c2611fb8565b604051808215151515815260200191505060405180910390f35b3480156105e857600080fd5b5061061d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fcb565b6040518082815260200191505060405180910390f35b34801561063f57600080fd5b50610648612014565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561069657600080fd5b506106cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612039565b604051808215151515815260200191505060405180910390f35b3480156106f157600080fd5b506106fa612198565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561073a57808201518184015260208101905061071f565b50505050905090810190601f1680156107675780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561078157600080fd5b50610849600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612236565b604051808215151515815260200191505060405180910390f35b34801561086f57600080fd5b506108ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506122b8565b604051808215151515815260200191505060405180910390f35b3480156108d457600080fd5b50610913600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612334565b604051808215151515815260200191505060405180910390f35b34801561093957600080fd5b5061097a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612432565b604051808215151515815260200191505060405180910390f35b3480156109a057600080fd5b506109d5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061254e565b604051808215151515815260200191505060405180910390f35b3480156109fb57600080fd5b50610a9660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506125a4565b604051808215151515815260200191505060405180910390f35b348015610abc57600080fd5b50610b41600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612749565b604051808215151515815260200191505060405180910390f35b348015610b6757600080fd5b50610ba6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b5f565b604051808215151515815260200191505060405180910390f35b348015610bcc57600080fd5b50610c676004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612c68565b604051808215151515815260200191505060405180910390f35b348015610c8d57600080fd5b50610ce2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dfa565b6040518082815260200191505060405180910390f35b348015610d0457600080fd5b50610d31600480360381019080803515159060200190929190803515159060200190929190505050612e81565b005b348015610d3f57600080fd5b50610d74600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fae565b604051808215151515815260200191505060405180910390f35b348015610d9a57600080fd5b50610dcf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613027565b6040518082815260200191505060405180910390f35b348015610df157600080fd5b50610e26600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613070565b005b348015610e3457600080fd5b50610e3d6131c5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b505050505081565b60008060149054906101000a900460ff161561100757600060159054906101000a900460ff16151561100157600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ff157506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610ffc57600080fd5b611006565b600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60055481565b600080600080600080600060149054906101000a900460ff16156111ef57600060159054906101000a900460ff1615156111e957600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806111d957506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156111e457600080fd5b6111ee565b600080fd5b5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561124857600080fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544211151561129557600080fd5b865188511415156112a557600080fd5b875194506000851115156112b857600080fd5b60009350600092505b84831015611310576112f387848151811015156112da57fe5b90602001906020020151856131eb90919063ffffffff16565b93506113096001846131eb90919063ffffffff16565b92506112c1565b61137561132733600a61320c90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b841115151561138357600080fd5b600091505b8482101561164157878281518110151561139e57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156113d057600080fd5b6113e433600a61336b90919063ffffffff16565b801561141c57508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611452576114503382898581518110151561143457fe5b90602001906020020151600a6133bc909392919063ffffffff16565b505b6114bb878381518110151561146357fe5b90602001906020020151600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb90919063ffffffff16565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611567878381518110151561150f57fe5b90602001906020020151600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef898581518110151561160757fe5b906020019060200201516040518082815260200191505060405180910390a361163a6001836131eb90919063ffffffff16565b9150611388565b60019550505050505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116ae57600080fd5b6116c282600a61320c90919063ffffffff16565b9050919050565b60008060149054906101000a900460ff16156117b357600060159054906101000a900460ff1615156117ad57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061179d57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156117a857600080fd5b6117b2565b600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff16141515156117d957600080fd5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561183257600080fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544211151561187f57600080fd5b6118e461189685600a61320c90919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b82111515156118f257600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561197d57600080fd5b61199184600a61336b90919063ffffffff16565b80156119c957508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119e8576119e6848484600a6133bc909392919063ffffffff16565b505b611a3a82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611acf82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ba182600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600060149054906101000a900460ff1681565b600460009054906101000a900460ff1681565b600080606080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d1957600080fd5b600a60000160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160000154600a60000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160010160009054906101000a900460ff16600a60000160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600201600a60000160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160030181805480602002602001604051908101604052809291908181526020018280548015611e9357602002820191906000526020600020905b815481526020019060010190808311611e7f575b5050505050915080805480602002602001604051908101604052809291908181526020018280548015611f0b57602002820191906000526020600020906000905b82829054906101000a900460ff1660ff1681526020019060010190602082600001049283019260010382029150808411611ed45790505b5050505050905093509350935093509193509193565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f7d57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b600060159054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561209657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156120d257600080fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec660405160405180910390a360019050919050565b60038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561222e5780601f106122035761010080835404028352916020019161222e565b820191906000526020600020905b81548152906001019060200180831161221157829003601f168201915b505050505081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561229457600080fd5b6122ae85858585600a61356390949392919063ffffffff16565b9050949350505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561231657600080fd5b61232c8383600a61394e9092919063ffffffff16565b905092915050565b60008060149054906101000a900460ff161561241e57600060159054906101000a900460ff16151561241857600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061240857506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561241357600080fd5b61241d565b600080fd5b5b61242883836139b5565b6001905092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561249057600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156124ed57600080fd5b81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561260857600080fd5b8551875114151561261857600080fd5b8651935060008411151561262b57600080fd5b600092505b8383101561273b57868381518110151561264657fe5b906020019060200201519150600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156126af57600080fd5b85838151811015156126bd57fe5b90602001906020020151905080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506127346001846131eb90919063ffffffff16565b9250612630565b600194505050505092915050565b600080600060149054906101000a900460ff161561283557600060159054906101000a900460ff16151561282f57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061281f57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561282a57600080fd5b612834565b600080fd5b5b60008573ffffffffffffffffffffffffffffffffffffffff161415151561285b57600080fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156128b457600080fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544211151561290157600080fd5b61296661291833600a61320c90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b841115151561297457600080fd5b61298833600a61336b90919063ffffffff16565b80156129c057508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156129df576129dd338686600a6133bc909392919063ffffffff16565b505b8490506129ec8585610f1d565b15612b56578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612ae6578082015181840152602081019050612acb565b50505050905090810190601f168015612b135780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015612b3557600080fd5b505af1158015612b49573d6000803e3d6000fd5b5050505060019150612b57565b5b509392505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612bbd57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612c1a57600080fd5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ccc57600080fd5b85518751141515612cdc57600080fd5b86519350600084111515612cef57600080fd5b600092505b83831015612dec578683815181101515612d0a57fe5b906020019060200201519150600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612d7357600080fd5b8583815181101515612d8157fe5b90602001906020020151905080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612de56001846131eb90919063ffffffff16565b9250612cf4565b600194505050505092915050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612edc57600080fd5b60001515821515148015612ef4575060011515811515145b151515612f0057600080fd5b81600060146101000a81548160ff02191690831515021790555080600060156101000a81548160ff0219169083151502179055507fa14d191ca4f53bfcf003c65d429362010a2d3d68bc0c50cce4bdc0fccf661fb082604051808215151515815260200191505060405180910390a17fc77636fc4a62a1fa193ef538c0b7993a1313a0d9c0a9173058cebcd3239ef7b581604051808215151515815260200191505060405180910390a15050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561300c57600080fd5b61302082600a613ddb90919063ffffffff16565b9050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156130cb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561310757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080828401905083811015151561320257600080fd5b8091505092915050565b600080600080600080935061322087613f31565b92505b61322d8784613f64565b1561333d5761323c8784613f78565b91508660000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101905061332a61331b8860000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613fc190919063ffffffff16565b856131eb90919063ffffffff16565b93506133368784614269565b9250613223565b8394505050505092915050565b60008083831115151561335c57600080fd5b82840390508091505092915050565b6000808360000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411905092915050565b6000613452828660000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb90919063ffffffff16565b8560000160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508460000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050949350505050565b60008061356e614335565b60008073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141515156135ab57600080fd5b845186511415156135bb57600080fd5b600086511115156135cb57600080fd5b60008660008151811015156135dc57fe5b906020019060200201511415156135f257600080fd5b84600081518110151561360157fe5b9060200190602002015160ff168760ff161115151561361f57600080fd5b600192505b85518310156136ed57858381518110151561363b57fe5b906020019060200201518661365a60018661334a90919063ffffffff16565b81518110151561366657fe5b9060200190602002015110151561367c57600080fd5b848381518110151561368a57fe5b9060200190602002015160ff16856136ac60018661334a90919063ffffffff16565b8151811015156136b857fe5b9060200190602002015160ff16111515156136d257600080fd5b6136e66001846131eb90919063ffffffff16565b9250613624565b6064856137056001885161334a90919063ffffffff16565b81518110151561371157fe5b9060200190602002015160ff1614151561372a57600080fd5b608060405190810160405280600081526020018860ff1681526020018781526020018681525091508860000160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050818960000160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000820151816000015560208201518160010160006101000a81548160ff021916908360ff1602179055506040820151816002019080519060200190613825929190614361565b5060608201518160030190805190602001906138429291906143ae565b5090505060008111156138585760009350613942565b88600101805480919060010161386e9190614455565b90506138846001826131eb90919063ffffffff16565b8960000160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508789600101828154811015156138de57fe5b9060005260206000200160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508860020160008154809291906001019190505550600193505b50505095945050505050565b6000428211151561395e57600080fd5b818460000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160000181905550600190509392505050565b600060149054906101000a900460ff1615613a9e57600060159054906101000a900460ff161515613a9857600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480613a8857506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515613a9357600080fd5b613a9d565b600080fd5b5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515613ac457600080fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515613b1d57600080fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442111515613b6a57600080fd5b613b7e33600a61320c90919063ffffffff16565b613bd082600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b10151515613bdd57600080fd5b613bf133600a61336b90919063ffffffff16565b8015613c2957508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15613c4857613c46338383600a6133bc909392919063ffffffff16565b505b613c9a81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d2f81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb90919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000808360000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506000811415613e375760009150613f2a565b8360000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160009055600182016000808201600090556001820160006101000a81549060ff0219169055600282016000613eb29190614481565b600382016000613ec291906144a2565b50505050600184600101613ee060018461334a90919063ffffffff16565b815481101515613eec57fe5b9060005260206000200160000160146101000a81548160ff021916908315150217905550836002016000815480929190600190039190505550600191505b5092915050565b6000613f5d827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff614269565b9050919050565b600082600101805490508210905092915050565b60008260010182815481101515613f8b57fe5b9060005260206000200160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b6000806000831415613fd65760009150614262565b600084600001541480613fec5750428460000154115b156140445761403d61402e60646140208760010160009054906101000a900460ff1660ff16876142cd90919063ffffffff16565b61430b90919063ffffffff16565b8461334a90919063ffffffff16565b9150614262565b600090505b6140646001856002018054905061334a90919063ffffffff16565b8110156141815761409d846002018281548110151561407f57fe5b906000526020600020015485600001546131eb90919063ffffffff16565b42101580156140ef57506140ec846002016140c26001846131eb90919063ffffffff16565b8154811015156140ce57fe5b906000526020600020015485600001546131eb90919063ffffffff16565b42105b156141665761415f6141506064614142876003018581548110151561411057fe5b90600052602060002090602091828204019190069054906101000a900460ff1660ff16876142cd90919063ffffffff16565b61430b90919063ffffffff16565b8461334a90919063ffffffff16565b9150614262565b61417a6001826131eb90919063ffffffff16565b9050614049565b6141cd846002016141a36001876002018054905061334a90919063ffffffff16565b8154811015156141af57fe5b906000526020600020015485600001546131eb90919063ffffffff16565b421015156142615761425a61424b606461423d876003016141ff60018a6002018054905061334a90919063ffffffff16565b81548110151561420b57fe5b90600052602060002090602091828204019190069054906101000a900460ff1660ff16876142cd90919063ffffffff16565b61430b90919063ffffffff16565b8461334a90919063ffffffff16565b9150614262565b5b5092915050565b600081806001019250505b8260010180549050821080156142b25750826001018281548110151561429657fe5b9060005260206000200160000160149054906101000a900460ff165b156142c4578180600101925050614274565b81905092915050565b60008060008414156142e25760009150614304565b82840290508284828115156142f357fe5b0414151561430057600080fd5b8091505b5092915050565b60008060008311151561431d57600080fd5b828481151561432857fe5b0490508091505092915050565b60806040519081016040528060008152602001600060ff16815260200160608152602001606081525090565b82805482825590600052602060002090810192821561439d579160200282015b8281111561439c578251825591602001919060010190614381565b5b5090506143aa91906144ca565b5090565b82805482825590600052602060002090601f016020900481019282156144445791602002820160005b8382111561441557835183826101000a81548160ff021916908360ff16021790555092602001926001016020816000010492830192600103026143d7565b80156144425782816101000a81549060ff0219169055600101602081600001049283019260010302614415565b505b50905061445191906144ef565b5090565b81548183558181111561447c5781836000526020600020918201910161447b919061451f565b5b505050565b508054600082559060005260206000209081019061449f91906144ca565b50565b50805460008255601f0160209004906000526020600020908101906144c791906144ca565b50565b6144ec91905b808211156144e85760008160009055506001016144d0565b5090565b90565b61451c91905b8082111561451857600081816101000a81549060ff0219169055506001016144f5565b5090565b90565b61457691905b8082111561457257600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff021916905550600101614525565b5090565b905600a165627a7a723058202c383ac2912097d988e6fe7b5d2cb5273ab42361d2e8411e82eae98323c9dfd20029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000000095345524f546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045345524f00000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : tokenName (string): SEROToken
Arg [1] : tokenSymbol (string): SERO
Arg [2] : totalTokenSupply (uint256): 1000000000
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 000000000000000000000000000000000000000000000000000000003b9aca00
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [4] : 5345524f546f6b656e0000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 5345524f00000000000000000000000000000000000000000000000000000000
Swarm Source
bzzr://2c383ac2912097d988e6fe7b5d2cb5273ab42361d2e8411e82eae98323c9dfd2
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.