Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Core
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-30 */ pragma solidity 0.4.25; library SafeMath8 { function mul(uint8 a, uint8 b) internal pure returns (uint8) { if (a == 0) { return 0; } uint8 c = a * b; assert(c / a == b); return c; } function div(uint8 a, uint8 b) internal pure returns (uint8) { return a / b; } function sub(uint8 a, uint8 b) internal pure returns (uint8) { assert(b <= a); return a - b; } function add(uint8 a, uint8 b) internal pure returns (uint8) { uint8 c = a + b; assert(c >= a); return c; } function pow(uint8 a, uint8 b) internal pure returns (uint8) { if (a == 0) return 0; if (b == 0) return 1; uint8 c = a ** b; assert(c / (a ** (b - 1)) == a); return c; } } library SafeMath16 { function mul(uint16 a, uint16 b) internal pure returns (uint16) { if (a == 0) { return 0; } uint16 c = a * b; assert(c / a == b); return c; } function div(uint16 a, uint16 b) internal pure returns (uint16) { return a / b; } function sub(uint16 a, uint16 b) internal pure returns (uint16) { assert(b <= a); return a - b; } function add(uint16 a, uint16 b) internal pure returns (uint16) { uint16 c = a + b; assert(c >= a); return c; } function pow(uint16 a, uint16 b) internal pure returns (uint16) { if (a == 0) return 0; if (b == 0) return 1; uint16 c = a ** b; assert(c / (a ** (b - 1)) == a); return c; } } library SafeMath32 { function mul(uint32 a, uint32 b) internal pure returns (uint32) { if (a == 0) { return 0; } uint32 c = a * b; assert(c / a == b); return c; } function div(uint32 a, uint32 b) internal pure returns (uint32) { return a / b; } function sub(uint32 a, uint32 b) internal pure returns (uint32) { assert(b <= a); return a - b; } function add(uint32 a, uint32 b) internal pure returns (uint32) { uint32 c = a + b; assert(c >= a); return c; } function pow(uint32 a, uint32 b) internal pure returns (uint32) { if (a == 0) return 0; if (b == 0) return 1; uint32 c = a ** b; assert(c / (a ** (b - 1)) == a); return c; } } library SafeMath256 { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } function pow(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) return 0; if (b == 0) return 1; uint256 c = a ** b; assert(c / (a ** (b - 1)) == a); return c; } } contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); function _validateAddress(address _addr) internal pure { require(_addr != address(0), "invalid address"); } constructor() public { owner = msg.sender; } modifier onlyOwner() { require(msg.sender == owner, "not a contract owner"); _; } function transferOwnership(address newOwner) public onlyOwner { _validateAddress(newOwner); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } contract Controllable is Ownable { mapping(address => bool) controllers; modifier onlyController { require(_isController(msg.sender), "no controller rights"); _; } function _isController(address _controller) internal view returns (bool) { return controllers[_controller]; } function _setControllers(address[] _controllers) internal { for (uint256 i = 0; i < _controllers.length; i++) { _validateAddress(_controllers[i]); controllers[_controllers[i]] = true; } } } contract Upgradable is Controllable { address[] internalDependencies; address[] externalDependencies; function getInternalDependencies() public view returns(address[]) { return internalDependencies; } function getExternalDependencies() public view returns(address[]) { return externalDependencies; } function setInternalDependencies(address[] _newDependencies) public onlyOwner { for (uint256 i = 0; i < _newDependencies.length; i++) { _validateAddress(_newDependencies[i]); } internalDependencies = _newDependencies; } function setExternalDependencies(address[] _newDependencies) public onlyOwner { externalDependencies = _newDependencies; _setControllers(_newDependencies); } } contract DragonCore { function setRemainingHealthAndMana(uint256, uint32, uint32) external; function increaseExperience(uint256, uint256) external; function payDNAPointsForBreeding(uint256) external; function upgradeGenes(uint256, uint16[10]) external; function increaseWins(uint256) external; function increaseDefeats(uint256) external; function setTactics(uint256, uint8, uint8) external; function setSpecialPeacefulSkill(uint256, uint8) external; function useSpecialPeacefulSkill(address, uint256, uint256) external; function setBuff(uint256, uint8, uint32) external; function createDragon(address, uint16, uint256[2], uint256[4], uint8[11]) external returns (uint256); function setName(uint256, string) external returns (bytes32); } contract DragonGetter { function getAmount() external view returns (uint256); function getComposedGenome(uint256) external view returns (uint256[4]); function getCoolness(uint256) public view returns (uint32); function getFullRegenerationTime(uint256) external view returns (uint32); function getDragonTypes(uint256) external view returns (uint8[11]); function getGeneration(uint256) external view returns (uint16); function getParents(uint256) external view returns (uint256[2]); } contract DragonGenetics { function createGenome(uint256[2], uint256[4], uint256[4], uint256) external view returns (uint256[4], uint8[11]); function createGenomeForGenesis(uint8, uint256) external view returns (uint256[4]); } contract EggCore { function ownerOf(uint256) external view returns (address); function get(uint256) external view returns (uint256[2], uint8); function isOwner(address, uint256) external view returns (bool); function getAllEggs() external view returns (uint256[]); function create(address, uint256[2], uint8) external returns (uint256); function remove(address, uint256) external; } contract DragonLeaderboard { function update(uint256, uint32) external; function getDragonsFromLeaderboard() external view returns (uint256[10]); function updateRewardTime() external; function getRewards(uint256) external view returns (uint256[10]); function getDate() external view returns (uint256, uint256); } contract Nest { mapping (uint256 => bool) public inNest; function getEggs() external view returns (uint256[2]); function add(uint256) external returns (bool, uint256, uint256); } //////////////CONTRACT////////////// contract Core is Upgradable { using SafeMath8 for uint8; using SafeMath16 for uint16; using SafeMath32 for uint32; using SafeMath256 for uint256; DragonCore dragonCore; DragonGetter dragonGetter; DragonGenetics dragonGenetics; EggCore eggCore; DragonLeaderboard leaderboard; Nest nest; function _max(uint16 lth, uint16 rth) internal pure returns (uint16) { if (lth > rth) { return lth; } else { return rth; } } function createEgg( address _sender, uint8 _dragonType ) external onlyController returns (uint256) { return eggCore.create(_sender, [uint256(0), uint256(0)], _dragonType); } function sendToNest( uint256 _id ) external onlyController returns ( bool isHatched, uint256 newDragonId, uint256 hatchedId, address owner ) { uint256 _randomForEggOpening; (isHatched, hatchedId, _randomForEggOpening) = nest.add(_id); // if any egg was hatched if (isHatched) { owner = eggCore.ownerOf(hatchedId); newDragonId = openEgg(owner, hatchedId, _randomForEggOpening); } } function openEgg( address _owner, uint256 _eggId, uint256 _random ) internal returns (uint256 newDragonId) { uint256[2] memory _parents; uint8 _dragonType; (_parents, _dragonType) = eggCore.get(_eggId); uint256[4] memory _genome; uint8[11] memory _dragonTypesArray; uint16 _generation; // if genesis if (_parents[0] == 0 && _parents[1] == 0) { _generation = 0; _genome = dragonGenetics.createGenomeForGenesis(_dragonType, _random); _dragonTypesArray[_dragonType] = 40; // 40 genes of 1 type } else { uint256[4] memory _momGenome = dragonGetter.getComposedGenome(_parents[0]); uint256[4] memory _dadGenome = dragonGetter.getComposedGenome(_parents[1]); (_genome, _dragonTypesArray) = dragonGenetics.createGenome(_parents, _momGenome, _dadGenome, _random); _generation = _max( dragonGetter.getGeneration(_parents[0]), dragonGetter.getGeneration(_parents[1]) ).add(1); } newDragonId = dragonCore.createDragon(_owner, _generation, _parents, _genome, _dragonTypesArray); eggCore.remove(_owner, _eggId); uint32 _coolness = dragonGetter.getCoolness(newDragonId); leaderboard.update(newDragonId, _coolness); } function breed( address _sender, uint256 _momId, uint256 _dadId ) external onlyController returns (uint256) { dragonCore.payDNAPointsForBreeding(_momId); dragonCore.payDNAPointsForBreeding(_dadId); return eggCore.create(_sender, [_momId, _dadId], 0); } function setDragonRemainingHealthAndMana(uint256 _id, uint32 _health, uint32 _mana) external onlyController { return dragonCore.setRemainingHealthAndMana(_id, _health, _mana); } function increaseDragonExperience(uint256 _id, uint256 _factor) external onlyController { dragonCore.increaseExperience(_id, _factor); } function upgradeDragonGenes(uint256 _id, uint16[10] _dnaPoints) external onlyController { dragonCore.upgradeGenes(_id, _dnaPoints); uint32 _coolness = dragonGetter.getCoolness(_id); leaderboard.update(_id, _coolness); } function increaseDragonWins(uint256 _id) external onlyController { dragonCore.increaseWins(_id); } function increaseDragonDefeats(uint256 _id) external onlyController { dragonCore.increaseDefeats(_id); } function setDragonTactics(uint256 _id, uint8 _melee, uint8 _attack) external onlyController { dragonCore.setTactics(_id, _melee, _attack); } function setDragonName(uint256 _id, string _name) external onlyController returns (bytes32) { return dragonCore.setName(_id, _name); } function setDragonSpecialPeacefulSkill(uint256 _id, uint8 _class) external onlyController { dragonCore.setSpecialPeacefulSkill(_id, _class); } function useDragonSpecialPeacefulSkill( address _sender, uint256 _id, uint256 _target ) external onlyController { dragonCore.useSpecialPeacefulSkill(_sender, _id, _target); } function resetDragonBuffs(uint256 _id) external onlyController { dragonCore.setBuff(_id, 1, 0); // attack dragonCore.setBuff(_id, 2, 0); // defense dragonCore.setBuff(_id, 3, 0); // stamina dragonCore.setBuff(_id, 4, 0); // speed dragonCore.setBuff(_id, 5, 0); // intelligence } function updateLeaderboardRewardTime() external onlyController { return leaderboard.updateRewardTime(); } // GETTERS function getDragonFullRegenerationTime(uint256 _id) external view returns (uint32 time) { return dragonGetter.getFullRegenerationTime(_id); } function isEggOwner(address _user, uint256 _tokenId) external view returns (bool) { return eggCore.isOwner(_user, _tokenId); } function isEggInNest(uint256 _id) external view returns (bool) { return nest.inNest(_id); } function getEggsInNest() external view returns (uint256[2]) { return nest.getEggs(); } function getEgg(uint256 _id) external view returns (uint16, uint32, uint256[2], uint8[11], uint8[11]) { uint256[2] memory parents; uint8 _dragonType; (parents, _dragonType) = eggCore.get(_id); uint8[11] memory momDragonTypes; uint8[11] memory dadDragonTypes; uint32 coolness; uint16 gen; // if genesis if (parents[0] == 0 && parents[1] == 0) { momDragonTypes[_dragonType] = 100; dadDragonTypes[_dragonType] = 100; coolness = 3600; } else { momDragonTypes = dragonGetter.getDragonTypes(parents[0]); dadDragonTypes = dragonGetter.getDragonTypes(parents[1]); coolness = dragonGetter.getCoolness(parents[0]).add(dragonGetter.getCoolness(parents[1])).div(2); uint16 _momGeneration = dragonGetter.getGeneration(parents[0]); uint16 _dadGeneration = dragonGetter.getGeneration(parents[1]); gen = _max(_momGeneration, _dadGeneration).add(1); } return (gen, coolness, parents, momDragonTypes, dadDragonTypes); } function getDragonChildren(uint256 _id) external view returns ( uint256[10] dragonsChildren, uint256[10] eggsChildren ) { uint8 _counter; uint256[2] memory _parents; uint256 i; for (i = _id.add(1); i <= dragonGetter.getAmount() && _counter < 10; i++) { _parents = dragonGetter.getParents(i); if (_parents[0] == _id || _parents[1] == _id) { dragonsChildren[_counter] = i; _counter = _counter.add(1); } } _counter = 0; uint256[] memory eggs = eggCore.getAllEggs(); for (i = 0; i < eggs.length && _counter < 10; i++) { (_parents, ) = eggCore.get(eggs[i]); if (_parents[0] == _id || _parents[1] == _id) { eggsChildren[_counter] = eggs[i]; _counter = _counter.add(1); } } } function getDragonsFromLeaderboard() external view returns (uint256[10]) { return leaderboard.getDragonsFromLeaderboard(); } function getLeaderboardRewards( uint256 _hatchingPrice ) external view returns ( uint256[10] ) { return leaderboard.getRewards(_hatchingPrice); } function getLeaderboardRewardDate() external view returns (uint256, uint256) { return leaderboard.getDate(); } // UPDATE CONTRACT function setInternalDependencies(address[] _newDependencies) public onlyOwner { super.setInternalDependencies(_newDependencies); dragonCore = DragonCore(_newDependencies[0]); dragonGetter = DragonGetter(_newDependencies[1]); dragonGenetics = DragonGenetics(_newDependencies[2]); eggCore = EggCore(_newDependencies[3]); leaderboard = DragonLeaderboard(_newDependencies[4]); nest = Nest(_newDependencies[5]); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[],"name":"updateLeaderboardRewardTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_sender","type":"address"},{"name":"_momId","type":"uint256"},{"name":"_dadId","type":"uint256"}],"name":"breed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_factor","type":"uint256"}],"name":"increaseDragonExperience","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"}],"name":"increaseDragonWins","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_dnaPoints","type":"uint16[10]"}],"name":"upgradeDragonGenes","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"getDragonFullRegenerationTime","outputs":[{"name":"time","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_user","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"isEggOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_melee","type":"uint8"},{"name":"_attack","type":"uint8"}],"name":"setDragonTactics","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getLeaderboardRewardDate","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"isEggInNest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newDependencies","type":"address[]"}],"name":"setExternalDependencies","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"}],"name":"resetDragonBuffs","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newDependencies","type":"address[]"}],"name":"setInternalDependencies","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"}],"name":"increaseDragonDefeats","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getDragonsFromLeaderboard","outputs":[{"name":"","type":"uint256[10]"}],"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":"_sender","type":"address"},{"name":"_id","type":"uint256"},{"name":"_target","type":"uint256"}],"name":"useDragonSpecialPeacefulSkill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_name","type":"string"}],"name":"setDragonName","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getEggsInNest","outputs":[{"name":"","type":"uint256[2]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_sender","type":"address"},{"name":"_dragonType","type":"uint8"}],"name":"createEgg","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getInternalDependencies","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_health","type":"uint32"},{"name":"_mana","type":"uint32"}],"name":"setDragonRemainingHealthAndMana","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_class","type":"uint8"}],"name":"setDragonSpecialPeacefulSkill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"}],"name":"sendToNest","outputs":[{"name":"isHatched","type":"bool"},{"name":"newDragonId","type":"uint256"},{"name":"hatchedId","type":"uint256"},{"name":"owner","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_hatchingPrice","type":"uint256"}],"name":"getLeaderboardRewards","outputs":[{"name":"","type":"uint256[10]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getExternalDependencies","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"getDragonChildren","outputs":[{"name":"dragonsChildren","type":"uint256[10]"},{"name":"eggsChildren","type":"uint256[10]"}],"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":"_id","type":"uint256"}],"name":"getEgg","outputs":[{"name":"","type":"uint16"},{"name":"","type":"uint32"},{"name":"","type":"uint256[2]"},{"name":"","type":"uint8[11]"},{"name":"","type":"uint8[11]"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614f22806100536000396000f300608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063068d1fb81461017a57806312e3fe101461019157806314521d3c146101fc5780631cc1147f1461023357806335c0cbaf146102605780633c6f730e1461029857806345ada01f146102e5578063466d3d381461034a57806348939e4014610391578063591aab0f146103c357806365fc125314610408578063686623011461046e57806369c0ad931461049b5780637c3289801461050157806380deece51461052e5780638da5cb5b14610581578063978ee4e0146105d857806399d76e491461062f578063a2f36cfd14610690578063b0866bc7146106e3578063b75c4f8014610747578063bf7de620146107b3578063c718640a14610800578063d2d21e851461083a578063dc24838a146108c0578063e6458f6e14610929578063ee55f77b14610995578063f2fde38b14610a2d578063feb40f7e14610a70575b600080fd5b34801561018657600080fd5b5061018f610b59565b005b34801561019d57600080fd5b506101e6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610c76565b6040518082815260200191505060405180910390f35b34801561020857600080fd5b506102316004803603810190808035906020019092919080359060200190929190505050610f98565b005b34801561023f57600080fd5b5061025e600480360381019080803590602001909291905050506110ca565b005b34801561026c57600080fd5b506102966004803603810190808035906020019092919080610140019091929192905050506111f3565b005b3480156102a457600080fd5b506102c3600480360381019080803590602001909291905050506114bc565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156102f157600080fd5b50610330600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611591565b604051808215151515815260200191505060405180910390f35b34801561035657600080fd5b5061038f60048036038101908080359060200190929190803560ff169060200190929190803560ff16906020019092919050505061169b565b005b34801561039d57600080fd5b506103a66117e2565b604051808381526020018281526020019250505060405180910390f35b3480156103cf57600080fd5b506103ee600480360381019080803590602001909291905050506118b7565b604051808215151515815260200191505060405180910390f35b34801561041457600080fd5b5061046c6004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061198c565b005b34801561047a57600080fd5b5061049960048036038101908080359060200190929190505050611a73565b005b3480156104a757600080fd5b506104ff60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611ec7565b005b34801561050d57600080fd5b5061052c600480360381019080803590602001909291905050506121ad565b005b34801561053a57600080fd5b506105436122d6565b6040518082600a60200280838360005b8381101561056e578082015181840152602081019050610553565b5050505090500191505060405180910390f35b34801561058d57600080fd5b506105966123ac565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105e457600080fd5b5061062d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506123d1565b005b34801561063b57600080fd5b5061067260048036038101908080359060200190929190803590602001908201803590602001919091929391929390505050612538565b60405180826000191660001916815260200191505060405180910390f35b34801561069c57600080fd5b506106a56126ae565b6040518082600260200280838360005b838110156106d05780820151818401526020810190506106b5565b5050505090500191505060405180910390f35b3480156106ef57600080fd5b50610731600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050612781565b6040518082815260200191505060405180910390f35b34801561075357600080fd5b5061075c612954565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561079f578082015181840152602081019050610784565b505050509050019250505060405180910390f35b3480156107bf57600080fd5b506107fe60048036038101908080359060200190929190803563ffffffff169060200190929190803563ffffffff1690602001909291905050506129e2565b005b34801561080c57600080fd5b5061083860048036038101908080359060200190929190803560ff169060200190929190505050612b35565b005b34801561084657600080fd5b5061086560048036038101908080359060200190929190505050612c6d565b60405180851515151581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390f35b3480156108cc57600080fd5b506108eb60048036038101908080359060200190929190505050612ec8565b6040518082600a60200280838360005b838110156109165780820151818401526020810190506108fb565b5050505090500191505060405180910390f35b34801561093557600080fd5b5061093e612fab565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610981578082015181840152602081019050610966565b505050509050019250505060405180910390f35b3480156109a157600080fd5b506109c060048036038101908080359060200190929190505050613039565b6040518083600a60200280838360005b838110156109eb5780820151818401526020810190506109d0565b5050505090500182600a60200280838360005b83811015610a195780820151818401526020810190506109fe565b505050509050019250505060405180910390f35b348015610a3957600080fd5b50610a6e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613564565b005b348015610a7c57600080fd5b50610a9b600480360381019080803590602001909291905050506136ef565b604051808661ffff1661ffff1681526020018563ffffffff1663ffffffff16815260200184600260200280838360005b83811015610ae6578082015181840152602081019050610acb565b5050505090500183600b60200280838360005b83811015610b14578082015181840152602081019050610af9565b5050505090500182600b60200280838360005b83811015610b42578082015181840152602081019050610b27565b505050509050019550505050505060405180910390f35b610b6233613e68565b1515610bd6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f146da5b6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b158015610c5c57600080fd5b505af1158015610c70573d6000803e3d6000fd5b50505050565b6000610c8133613e68565b1515610cf5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663df388c65846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015610d8657600080fd5b505af1158015610d9a573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663df388c65836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015610e2f57600080fd5b505af1158015610e43573d6000803e3d6000fd5b50505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330e92ac38560408051908101604052808781526020018681525060006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600260200280838360005b83811015610f25578082015181840152602081019050610f0a565b505050509050018260ff1681526020019350505050602060405180830381600087803b158015610f5457600080fd5b505af1158015610f68573d6000803e3d6000fd5b505050506040513d6020811015610f7e57600080fd5b810190808051906020019092919050505090509392505050565b610fa133613e68565b1515611015576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663243a7c7b83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050600060405180830381600087803b1580156110ae57600080fd5b505af11580156110c2573d6000803e3d6000fd5b505050505050565b6110d333613e68565b1515611147576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fcfa5464826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b1580156111d857600080fd5b505af11580156111ec573d6000803e3d6000fd5b5050505050565b60006111fe33613e68565b1515611272576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b8fcb50c84846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182600a60200280828437820191505092505050600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347327ae3846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156113bd57600080fd5b505af11580156113d1573d6000803e3d6000fd5b505050506040513d60208110156113e757600080fd5b81019080805190602001909291905050509050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cebab53d84836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018263ffffffff1663ffffffff16815260200192505050600060405180830381600087803b15801561149f57600080fd5b505af11580156114b3573d6000803e3d6000fd5b50505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c22335b3836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561154f57600080fd5b505af1158015611563573d6000803e3d6000fd5b505050506040513d602081101561157957600080fd5b81019080805190602001909291905050509050919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e327a6af84846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561165857600080fd5b505af115801561166c573d6000803e3d6000fd5b505050506040513d602081101561168257600080fd5b8101908080519060200190929190505050905092915050565b6116a433613e68565b1515611718576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ecef65f8484846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018360ff1660ff1681526020018260ff1660ff1681526020019350505050600060405180830381600087803b1580156117c557600080fd5b505af11580156117d9573d6000803e3d6000fd5b50505050505050565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663430fe9c16040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016040805180830381600087803b15801561186a57600080fd5b505af115801561187e573d6000803e3d6000fd5b505050506040513d604081101561189457600080fd5b810190808051906020019092919080519060200190929190505050915091509091565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e871097836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561194a57600080fd5b505af115801561195e573d6000803e3d6000fd5b505050506040513d602081101561197457600080fd5b81019080805190602001909291905050509050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b8060039080519060200190611a66929190614d9c565b50611a7081613ebe565b50565b611a7c33613e68565b1515611af0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8ed0dfb82600160006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018360ff1681526020018263ffffffff1681526020019350505050600060405180830381600087803b158015611b9c57600080fd5b505af1158015611bb0573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8ed0dfb82600260006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018360ff1681526020018263ffffffff1681526020019350505050600060405180830381600087803b158015611c6057600080fd5b505af1158015611c74573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8ed0dfb82600360006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018360ff1681526020018263ffffffff1681526020019350505050600060405180830381600087803b158015611d2457600080fd5b505af1158015611d38573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8ed0dfb82600460006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018360ff1681526020018263ffffffff1681526020019350505050600060405180830381600087803b158015611de857600080fd5b505af1158015611dfc573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8ed0dfb82600560006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018360ff1681526020018263ffffffff1681526020019350505050600060405180830381600087803b158015611eac57600080fd5b505af1158015611ec0573d6000803e3d6000fd5b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f8b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b611f9481613f6c565b806000815181101515611fa357fe5b90602001906020020151600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806001815181101515611ffc57fe5b90602001906020020151600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600281518110151561205557fe5b90602001906020020151600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060038151811015156120ae57fe5b90602001906020020151600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481518110151561210757fe5b90602001906020020151600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600581518110151561216057fe5b90602001906020020151600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6121b633613e68565b151561222a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631831107d826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b1580156122bb57600080fd5b505af11580156122cf573d6000803e3d6000fd5b5050505050565b6122de614e26565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380deece56040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161014060405180830381600087803b15801561236557600080fd5b505af1158015612379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061014081101561239f57600080fd5b8101908091905050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6123da33613e68565b151561244e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630b0e13f58484846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b15801561251b57600080fd5b505af115801561252f573d6000803e3d6000fd5b50505050505050565b600061254333613e68565b15156125b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe55932a8585856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018060200182810382528484828181526020019250808284378201915050945050505050602060405180830381600087803b15801561266a57600080fd5b505af115801561267e573d6000803e3d6000fd5b505050506040513d602081101561269457600080fd5b810190808051906020019092919050505090509392505050565b6126b6614e4a565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632542364d6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016040805180830381600087803b15801561273b57600080fd5b505af115801561274f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250604081101561277457600080fd5b8101908091905050905090565b600061278c33613e68565b1515612800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330e92ac3846040805190810160405280600081526020016000815250856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600260200280838360005b838110156128df5780820151818401526020810190506128c4565b505050509050018260ff1660ff1681526020019350505050602060405180830381600087803b15801561291157600080fd5b505af1158015612925573d6000803e3d6000fd5b505050506040513d602081101561293b57600080fd5b8101908080519060200190929190505050905092915050565b606060028054806020026020016040519081016040528092919081815260200182805480156129d857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161298e575b5050505050905090565b6129eb33613e68565b1515612a5f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166387115a9d8484846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018363ffffffff1663ffffffff1681526020018263ffffffff1663ffffffff1681526020019350505050600060405180830381600087803b158015612b1857600080fd5b505af1158015612b2c573d6000803e3d6000fd5b50505050505050565b612b3e33613e68565b1515612bb2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166355c0820083836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018260ff1660ff16815260200192505050600060405180830381600087803b158015612c5157600080fd5b505af1158015612c65573d6000803e3d6000fd5b505050505050565b6000806000806000612c7e33613e68565b1515612cf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631003e2d2876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050606060405180830381600087803b158015612d8357600080fd5b505af1158015612d97573d6000803e3d6000fd5b505050506040513d6060811015612dad57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050508093508195508297505050508415612ec057600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015612e7557600080fd5b505af1158015612e89573d6000803e3d6000fd5b505050506040513d6020811015612e9f57600080fd5b81019080805190602001909291905050509150612ebd828483614088565b93505b509193509193565b612ed0614e26565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c0d8012c836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505061014060405180830381600087803b158015612f6257600080fd5b505af1158015612f76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610140811015612f9c57600080fd5b81019080919050509050919050565b6060600380548060200260200160405190810160405280929190818152602001828054801561302f57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612fe5575b5050505050905090565b613041614e26565b613049614e26565b6000613053614e4a565b6000606061306b600188614c1c90919063ffffffff16565b91505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d321fe296040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156130f457600080fd5b505af1158015613108573d6000803e3d6000fd5b505050506040513d602081101561311e57600080fd5b810190808051906020019092919050505082111580156131415750600a8460ff16105b1561329357600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663242a0087836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506040805180830381600087803b1580156131d657600080fd5b505af11580156131ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250604081101561320f57600080fd5b810190809190505092508683600060028110151561322957fe5b6020020151148061324c57508683600160028110151561324557fe5b6020020151145b156132865781868560ff16600a8110151561326357fe5b60200201818152505061328360018560ff16614c3a90919063ffffffff16565b93505b818060010192505061306e565b60009350600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166366234b576040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15801561331d57600080fd5b505af1158015613331573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561335b57600080fd5b81019080805164010000000081111561337357600080fd5b8281019050602081018481111561338957600080fd5b81518560208202830111640100000000821117156133a657600080fd5b50509291905050509050600091505b8051821080156133c85750600a8460ff16105b1561355b57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639507d39a828481518110151561341957fe5b906020019060200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050606060405180830381600087803b15801561347557600080fd5b505af1158015613489573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060608110156134ae57600080fd5b81019080919082604001805190602001909291905050505080935050868360006002811015156134da57fe5b602002015114806134fd5750868360016002811015156134f657fe5b6020020151145b1561354e57808281518110151561351057fe5b90602001906020020151858560ff16600a8110151561352b57fe5b60200201818152505061354b60018560ff16614c3a90919063ffffffff16565b93505b81806001019250506133b5565b50505050915091565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613628576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b61363181614c5e565b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806136fa614e4a565b613702614e6c565b61370a614e6c565b613712614e4a565b600061371c614e6c565b613724614e6c565b600080600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639507d39a8f6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050606060405180830381600087803b1580156137bb57600080fd5b505af11580156137cf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060608110156137f457600080fd5b81019080919082604001805190602001909291905050508098508199505050600088600060028110151561382457fe5b60200201511480156138495750600088600160028110151561384257fe5b6020020151145b156138a0576064868860ff16600b8110151561386157fe5b602002019060ff16908160ff16815250506064858860ff16600b8110151561388557fe5b602002019060ff16908160ff1681525050610e109350613e48565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663deb27fc58960006002811015156138ed57fe5b60200201516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505061016060405180830381600087803b15801561394557600080fd5b505af1158015613959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061016081101561397f57600080fd5b81019080919050509550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663deb27fc58960016002811015156139d657fe5b60200201516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505061016060405180830381600087803b158015613a2e57600080fd5b505af1158015613a42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610160811015613a6857600080fd5b81019080919050509450613c606002613c4c600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347327ae38c6001600281101515613ac757fe5b60200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015613b1e57600080fd5b505af1158015613b32573d6000803e3d6000fd5b505050506040513d6020811015613b4857600080fd5b8101908080519060200190929190505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347327ae38d6000600281101515613ba657fe5b60200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015613bfd57600080fd5b505af1158015613c11573d6000803e3d6000fd5b505050506040513d6020811015613c2757600080fd5b810190808051906020019092919050505063ffffffff16614d0690919063ffffffff16565b63ffffffff16614d3090919063ffffffff16565b9350600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356e3df97896000600281101515613caf57fe5b60200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015613d0657600080fd5b505af1158015613d1a573d6000803e3d6000fd5b505050506040513d6020811015613d3057600080fd5b81019080805190602001909291905050509150600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356e3df97896001600281101515613d9057fe5b60200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015613de757600080fd5b505af1158015613dfb573d6000803e3d6000fd5b505050506040513d6020811015613e1157600080fd5b81019080805190602001909291905050509050613e456001613e338484614d52565b61ffff16614d7690919063ffffffff16565b92505b82848988889c509c509c509c509c50505050505050505091939590929450565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008090505b8151811015613f6857613eed8282815181101515613ede57fe5b90602001906020020151614c5e565b60018060008484815181101515613f0057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050613ec4565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515614032576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b600090505b815181101561406d57614060828281518110151561405157fe5b90602001906020020151614c5e565b8080600101915050614037565b8160029080519060200190614083929190614d9c565b505050565b6000614092614e4a565b600061409c614e90565b6140a4614e6c565b60006140ae614e90565b6140b6614e90565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639507d39a8c6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050606060405180830381600087803b15801561414957600080fd5b505af115801561415d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250606081101561418257600080fd5b8101908091908260400180519060200190929190505050809850819950505060008860006002811015156141b257fe5b60200201511480156141d7575060008860016002811015156141d057fe5b6020020151145b156142eb5760009350600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663574f0005888c6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360ff1660ff16815260200182815260200192505050608060405180830381600087803b15801561427f57600080fd5b505af1158015614293573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060808110156142b857600080fd5b810190809190505095506028858860ff16600b811015156142d557fe5b602002019060ff16908160ff168152505061480b565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c2210bb89600060028110151561433857fe5b60200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b15801561438f57600080fd5b505af11580156143a3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060808110156143c857600080fd5b81019080919050509250600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c2210bb89600160028110151561441f57fe5b60200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b15801561447657600080fd5b505af115801561448a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060808110156144af57600080fd5b81019080919050509150600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329e3ebe48985858e6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018085600260200280838360005b83811015614551578082015181840152602081019050614536565b5050505090500184600460200280838360005b8381101561457f578082015181840152602081019050614564565b5050505090500183600460200280838360005b838110156145ad578082015181840152602081019050614592565b505050509050018281526020019450505050506101e060405180830381600087803b1580156145db57600080fd5b505af11580156145ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101e081101561461557600080fd5b8101908091908260800191905050809650819750505061480860016147f6600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356e3df978c600060028110151561468057fe5b60200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156146d757600080fd5b505af11580156146eb573d6000803e3d6000fd5b505050506040513d602081101561470157600080fd5b8101908080519060200190929190505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356e3df978d600160028110151561475f57fe5b60200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156147b657600080fd5b505af11580156147ca573d6000803e3d6000fd5b505050506040513d60208110156147e057600080fd5b8101908080519060200190929190505050614d52565b61ffff16614d7690919063ffffffff16565b93505b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630a7703d48d868b8a8a6040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018561ffff1661ffff16815260200184600260200280838360005b838110156148e45780820151818401526020810190506148c9565b5050505090500183600460200280838360005b838110156149125780820151818401526020810190506148f7565b5050505090500182600b60200280838360005b83811015614940578082015181840152602081019050614925565b5050505090500195505050505050602060405180830381600087803b15801561496857600080fd5b505af115801561497c573d6000803e3d6000fd5b505050506040513d602081101561499257600080fd5b81019080805190602001909291905050509850600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663abe7f1ab8d8d6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015614a6a57600080fd5b505af1158015614a7e573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347327ae38a6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015614b1357600080fd5b505af1158015614b27573d6000803e3d6000fd5b505050506040513d6020811015614b3d57600080fd5b81019080805190602001909291905050509050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cebab53d8a836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018263ffffffff1663ffffffff16815260200192505050600060405180830381600087803b158015614bf557600080fd5b505af1158015614c09573d6000803e3d6000fd5b5050505050505050505050509392505050565b6000808284019050838110151515614c3057fe5b8091505092915050565b60008082840190508360ff168160ff1610151515614c5457fe5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515614d03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f696e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b50565b60008082840190508363ffffffff168163ffffffff1610151515614d2657fe5b8091505092915050565b60008163ffffffff168363ffffffff16811515614d4957fe5b04905092915050565b60008161ffff168361ffff161115614d6c57829050614d70565b8190505b92915050565b60008082840190508361ffff168161ffff1610151515614d9257fe5b8091505092915050565b828054828255906000526020600020908101928215614e15579160200282015b82811115614e145782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190614dbc565b5b509050614e229190614eb3565b5090565b61014060405190810160405280600a90602082028038833980820191505090505090565b6040805190810160405280600290602082028038833980820191505090505090565b61016060405190810160405280600b90602082028038833980820191505090505090565b608060405190810160405280600490602082028038833980820191505090505090565b614ef391905b80821115614eef57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101614eb9565b5090565b905600a165627a7a7230582085ff92c12c4a63ac2102a16fea73d94a9b06f9f9fc1b13fa2e1583db8062b7220029
Deployed Bytecode
0x608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063068d1fb81461017a57806312e3fe101461019157806314521d3c146101fc5780631cc1147f1461023357806335c0cbaf146102605780633c6f730e1461029857806345ada01f146102e5578063466d3d381461034a57806348939e4014610391578063591aab0f146103c357806365fc125314610408578063686623011461046e57806369c0ad931461049b5780637c3289801461050157806380deece51461052e5780638da5cb5b14610581578063978ee4e0146105d857806399d76e491461062f578063a2f36cfd14610690578063b0866bc7146106e3578063b75c4f8014610747578063bf7de620146107b3578063c718640a14610800578063d2d21e851461083a578063dc24838a146108c0578063e6458f6e14610929578063ee55f77b14610995578063f2fde38b14610a2d578063feb40f7e14610a70575b600080fd5b34801561018657600080fd5b5061018f610b59565b005b34801561019d57600080fd5b506101e6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610c76565b6040518082815260200191505060405180910390f35b34801561020857600080fd5b506102316004803603810190808035906020019092919080359060200190929190505050610f98565b005b34801561023f57600080fd5b5061025e600480360381019080803590602001909291905050506110ca565b005b34801561026c57600080fd5b506102966004803603810190808035906020019092919080610140019091929192905050506111f3565b005b3480156102a457600080fd5b506102c3600480360381019080803590602001909291905050506114bc565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156102f157600080fd5b50610330600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611591565b604051808215151515815260200191505060405180910390f35b34801561035657600080fd5b5061038f60048036038101908080359060200190929190803560ff169060200190929190803560ff16906020019092919050505061169b565b005b34801561039d57600080fd5b506103a66117e2565b604051808381526020018281526020019250505060405180910390f35b3480156103cf57600080fd5b506103ee600480360381019080803590602001909291905050506118b7565b604051808215151515815260200191505060405180910390f35b34801561041457600080fd5b5061046c6004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061198c565b005b34801561047a57600080fd5b5061049960048036038101908080359060200190929190505050611a73565b005b3480156104a757600080fd5b506104ff60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611ec7565b005b34801561050d57600080fd5b5061052c600480360381019080803590602001909291905050506121ad565b005b34801561053a57600080fd5b506105436122d6565b6040518082600a60200280838360005b8381101561056e578082015181840152602081019050610553565b5050505090500191505060405180910390f35b34801561058d57600080fd5b506105966123ac565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105e457600080fd5b5061062d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506123d1565b005b34801561063b57600080fd5b5061067260048036038101908080359060200190929190803590602001908201803590602001919091929391929390505050612538565b60405180826000191660001916815260200191505060405180910390f35b34801561069c57600080fd5b506106a56126ae565b6040518082600260200280838360005b838110156106d05780820151818401526020810190506106b5565b5050505090500191505060405180910390f35b3480156106ef57600080fd5b50610731600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050612781565b6040518082815260200191505060405180910390f35b34801561075357600080fd5b5061075c612954565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561079f578082015181840152602081019050610784565b505050509050019250505060405180910390f35b3480156107bf57600080fd5b506107fe60048036038101908080359060200190929190803563ffffffff169060200190929190803563ffffffff1690602001909291905050506129e2565b005b34801561080c57600080fd5b5061083860048036038101908080359060200190929190803560ff169060200190929190505050612b35565b005b34801561084657600080fd5b5061086560048036038101908080359060200190929190505050612c6d565b60405180851515151581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390f35b3480156108cc57600080fd5b506108eb60048036038101908080359060200190929190505050612ec8565b6040518082600a60200280838360005b838110156109165780820151818401526020810190506108fb565b5050505090500191505060405180910390f35b34801561093557600080fd5b5061093e612fab565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610981578082015181840152602081019050610966565b505050509050019250505060405180910390f35b3480156109a157600080fd5b506109c060048036038101908080359060200190929190505050613039565b6040518083600a60200280838360005b838110156109eb5780820151818401526020810190506109d0565b5050505090500182600a60200280838360005b83811015610a195780820151818401526020810190506109fe565b505050509050019250505060405180910390f35b348015610a3957600080fd5b50610a6e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613564565b005b348015610a7c57600080fd5b50610a9b600480360381019080803590602001909291905050506136ef565b604051808661ffff1661ffff1681526020018563ffffffff1663ffffffff16815260200184600260200280838360005b83811015610ae6578082015181840152602081019050610acb565b5050505090500183600b60200280838360005b83811015610b14578082015181840152602081019050610af9565b5050505090500182600b60200280838360005b83811015610b42578082015181840152602081019050610b27565b505050509050019550505050505060405180910390f35b610b6233613e68565b1515610bd6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f146da5b6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b158015610c5c57600080fd5b505af1158015610c70573d6000803e3d6000fd5b50505050565b6000610c8133613e68565b1515610cf5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663df388c65846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015610d8657600080fd5b505af1158015610d9a573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663df388c65836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015610e2f57600080fd5b505af1158015610e43573d6000803e3d6000fd5b50505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330e92ac38560408051908101604052808781526020018681525060006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600260200280838360005b83811015610f25578082015181840152602081019050610f0a565b505050509050018260ff1681526020019350505050602060405180830381600087803b158015610f5457600080fd5b505af1158015610f68573d6000803e3d6000fd5b505050506040513d6020811015610f7e57600080fd5b810190808051906020019092919050505090509392505050565b610fa133613e68565b1515611015576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663243a7c7b83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050600060405180830381600087803b1580156110ae57600080fd5b505af11580156110c2573d6000803e3d6000fd5b505050505050565b6110d333613e68565b1515611147576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fcfa5464826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b1580156111d857600080fd5b505af11580156111ec573d6000803e3d6000fd5b5050505050565b60006111fe33613e68565b1515611272576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b8fcb50c84846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182600a60200280828437820191505092505050600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347327ae3846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156113bd57600080fd5b505af11580156113d1573d6000803e3d6000fd5b505050506040513d60208110156113e757600080fd5b81019080805190602001909291905050509050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cebab53d84836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018263ffffffff1663ffffffff16815260200192505050600060405180830381600087803b15801561149f57600080fd5b505af11580156114b3573d6000803e3d6000fd5b50505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c22335b3836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561154f57600080fd5b505af1158015611563573d6000803e3d6000fd5b505050506040513d602081101561157957600080fd5b81019080805190602001909291905050509050919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e327a6af84846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561165857600080fd5b505af115801561166c573d6000803e3d6000fd5b505050506040513d602081101561168257600080fd5b8101908080519060200190929190505050905092915050565b6116a433613e68565b1515611718576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ecef65f8484846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018360ff1660ff1681526020018260ff1660ff1681526020019350505050600060405180830381600087803b1580156117c557600080fd5b505af11580156117d9573d6000803e3d6000fd5b50505050505050565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663430fe9c16040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016040805180830381600087803b15801561186a57600080fd5b505af115801561187e573d6000803e3d6000fd5b505050506040513d604081101561189457600080fd5b810190808051906020019092919080519060200190929190505050915091509091565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e871097836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561194a57600080fd5b505af115801561195e573d6000803e3d6000fd5b505050506040513d602081101561197457600080fd5b81019080805190602001909291905050509050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b8060039080519060200190611a66929190614d9c565b50611a7081613ebe565b50565b611a7c33613e68565b1515611af0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8ed0dfb82600160006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018360ff1681526020018263ffffffff1681526020019350505050600060405180830381600087803b158015611b9c57600080fd5b505af1158015611bb0573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8ed0dfb82600260006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018360ff1681526020018263ffffffff1681526020019350505050600060405180830381600087803b158015611c6057600080fd5b505af1158015611c74573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8ed0dfb82600360006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018360ff1681526020018263ffffffff1681526020019350505050600060405180830381600087803b158015611d2457600080fd5b505af1158015611d38573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8ed0dfb82600460006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018360ff1681526020018263ffffffff1681526020019350505050600060405180830381600087803b158015611de857600080fd5b505af1158015611dfc573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8ed0dfb82600560006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018360ff1681526020018263ffffffff1681526020019350505050600060405180830381600087803b158015611eac57600080fd5b505af1158015611ec0573d6000803e3d6000fd5b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f8b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b611f9481613f6c565b806000815181101515611fa357fe5b90602001906020020151600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806001815181101515611ffc57fe5b90602001906020020151600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600281518110151561205557fe5b90602001906020020151600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060038151811015156120ae57fe5b90602001906020020151600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481518110151561210757fe5b90602001906020020151600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600581518110151561216057fe5b90602001906020020151600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6121b633613e68565b151561222a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631831107d826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b1580156122bb57600080fd5b505af11580156122cf573d6000803e3d6000fd5b5050505050565b6122de614e26565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380deece56040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161014060405180830381600087803b15801561236557600080fd5b505af1158015612379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061014081101561239f57600080fd5b8101908091905050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6123da33613e68565b151561244e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630b0e13f58484846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b15801561251b57600080fd5b505af115801561252f573d6000803e3d6000fd5b50505050505050565b600061254333613e68565b15156125b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe55932a8585856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018060200182810382528484828181526020019250808284378201915050945050505050602060405180830381600087803b15801561266a57600080fd5b505af115801561267e573d6000803e3d6000fd5b505050506040513d602081101561269457600080fd5b810190808051906020019092919050505090509392505050565b6126b6614e4a565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632542364d6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016040805180830381600087803b15801561273b57600080fd5b505af115801561274f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250604081101561277457600080fd5b8101908091905050905090565b600061278c33613e68565b1515612800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330e92ac3846040805190810160405280600081526020016000815250856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600260200280838360005b838110156128df5780820151818401526020810190506128c4565b505050509050018260ff1660ff1681526020019350505050602060405180830381600087803b15801561291157600080fd5b505af1158015612925573d6000803e3d6000fd5b505050506040513d602081101561293b57600080fd5b8101908080519060200190929190505050905092915050565b606060028054806020026020016040519081016040528092919081815260200182805480156129d857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161298e575b5050505050905090565b6129eb33613e68565b1515612a5f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166387115a9d8484846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018363ffffffff1663ffffffff1681526020018263ffffffff1663ffffffff1681526020019350505050600060405180830381600087803b158015612b1857600080fd5b505af1158015612b2c573d6000803e3d6000fd5b50505050505050565b612b3e33613e68565b1515612bb2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166355c0820083836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018260ff1660ff16815260200192505050600060405180830381600087803b158015612c5157600080fd5b505af1158015612c65573d6000803e3d6000fd5b505050505050565b6000806000806000612c7e33613e68565b1515612cf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631003e2d2876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050606060405180830381600087803b158015612d8357600080fd5b505af1158015612d97573d6000803e3d6000fd5b505050506040513d6060811015612dad57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050508093508195508297505050508415612ec057600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015612e7557600080fd5b505af1158015612e89573d6000803e3d6000fd5b505050506040513d6020811015612e9f57600080fd5b81019080805190602001909291905050509150612ebd828483614088565b93505b509193509193565b612ed0614e26565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c0d8012c836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505061014060405180830381600087803b158015612f6257600080fd5b505af1158015612f76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610140811015612f9c57600080fd5b81019080919050509050919050565b6060600380548060200260200160405190810160405280929190818152602001828054801561302f57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612fe5575b5050505050905090565b613041614e26565b613049614e26565b6000613053614e4a565b6000606061306b600188614c1c90919063ffffffff16565b91505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d321fe296040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156130f457600080fd5b505af1158015613108573d6000803e3d6000fd5b505050506040513d602081101561311e57600080fd5b810190808051906020019092919050505082111580156131415750600a8460ff16105b1561329357600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663242a0087836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506040805180830381600087803b1580156131d657600080fd5b505af11580156131ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250604081101561320f57600080fd5b810190809190505092508683600060028110151561322957fe5b6020020151148061324c57508683600160028110151561324557fe5b6020020151145b156132865781868560ff16600a8110151561326357fe5b60200201818152505061328360018560ff16614c3a90919063ffffffff16565b93505b818060010192505061306e565b60009350600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166366234b576040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15801561331d57600080fd5b505af1158015613331573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561335b57600080fd5b81019080805164010000000081111561337357600080fd5b8281019050602081018481111561338957600080fd5b81518560208202830111640100000000821117156133a657600080fd5b50509291905050509050600091505b8051821080156133c85750600a8460ff16105b1561355b57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639507d39a828481518110151561341957fe5b906020019060200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050606060405180830381600087803b15801561347557600080fd5b505af1158015613489573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060608110156134ae57600080fd5b81019080919082604001805190602001909291905050505080935050868360006002811015156134da57fe5b602002015114806134fd5750868360016002811015156134f657fe5b6020020151145b1561354e57808281518110151561351057fe5b90602001906020020151858560ff16600a8110151561352b57fe5b60200201818152505061354b60018560ff16614c3a90919063ffffffff16565b93505b81806001019250506133b5565b50505050915091565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613628576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b61363181614c5e565b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806136fa614e4a565b613702614e6c565b61370a614e6c565b613712614e4a565b600061371c614e6c565b613724614e6c565b600080600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639507d39a8f6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050606060405180830381600087803b1580156137bb57600080fd5b505af11580156137cf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060608110156137f457600080fd5b81019080919082604001805190602001909291905050508098508199505050600088600060028110151561382457fe5b60200201511480156138495750600088600160028110151561384257fe5b6020020151145b156138a0576064868860ff16600b8110151561386157fe5b602002019060ff16908160ff16815250506064858860ff16600b8110151561388557fe5b602002019060ff16908160ff1681525050610e109350613e48565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663deb27fc58960006002811015156138ed57fe5b60200201516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505061016060405180830381600087803b15801561394557600080fd5b505af1158015613959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061016081101561397f57600080fd5b81019080919050509550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663deb27fc58960016002811015156139d657fe5b60200201516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505061016060405180830381600087803b158015613a2e57600080fd5b505af1158015613a42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610160811015613a6857600080fd5b81019080919050509450613c606002613c4c600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347327ae38c6001600281101515613ac757fe5b60200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015613b1e57600080fd5b505af1158015613b32573d6000803e3d6000fd5b505050506040513d6020811015613b4857600080fd5b8101908080519060200190929190505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347327ae38d6000600281101515613ba657fe5b60200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015613bfd57600080fd5b505af1158015613c11573d6000803e3d6000fd5b505050506040513d6020811015613c2757600080fd5b810190808051906020019092919050505063ffffffff16614d0690919063ffffffff16565b63ffffffff16614d3090919063ffffffff16565b9350600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356e3df97896000600281101515613caf57fe5b60200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015613d0657600080fd5b505af1158015613d1a573d6000803e3d6000fd5b505050506040513d6020811015613d3057600080fd5b81019080805190602001909291905050509150600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356e3df97896001600281101515613d9057fe5b60200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015613de757600080fd5b505af1158015613dfb573d6000803e3d6000fd5b505050506040513d6020811015613e1157600080fd5b81019080805190602001909291905050509050613e456001613e338484614d52565b61ffff16614d7690919063ffffffff16565b92505b82848988889c509c509c509c509c50505050505050505091939590929450565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008090505b8151811015613f6857613eed8282815181101515613ede57fe5b90602001906020020151614c5e565b60018060008484815181101515613f0057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050613ec4565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515614032576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b600090505b815181101561406d57614060828281518110151561405157fe5b90602001906020020151614c5e565b8080600101915050614037565b8160029080519060200190614083929190614d9c565b505050565b6000614092614e4a565b600061409c614e90565b6140a4614e6c565b60006140ae614e90565b6140b6614e90565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639507d39a8c6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050606060405180830381600087803b15801561414957600080fd5b505af115801561415d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250606081101561418257600080fd5b8101908091908260400180519060200190929190505050809850819950505060008860006002811015156141b257fe5b60200201511480156141d7575060008860016002811015156141d057fe5b6020020151145b156142eb5760009350600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663574f0005888c6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360ff1660ff16815260200182815260200192505050608060405180830381600087803b15801561427f57600080fd5b505af1158015614293573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060808110156142b857600080fd5b810190809190505095506028858860ff16600b811015156142d557fe5b602002019060ff16908160ff168152505061480b565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c2210bb89600060028110151561433857fe5b60200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b15801561438f57600080fd5b505af11580156143a3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060808110156143c857600080fd5b81019080919050509250600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c2210bb89600160028110151561441f57fe5b60200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b15801561447657600080fd5b505af115801561448a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060808110156144af57600080fd5b81019080919050509150600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329e3ebe48985858e6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018085600260200280838360005b83811015614551578082015181840152602081019050614536565b5050505090500184600460200280838360005b8381101561457f578082015181840152602081019050614564565b5050505090500183600460200280838360005b838110156145ad578082015181840152602081019050614592565b505050509050018281526020019450505050506101e060405180830381600087803b1580156145db57600080fd5b505af11580156145ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101e081101561461557600080fd5b8101908091908260800191905050809650819750505061480860016147f6600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356e3df978c600060028110151561468057fe5b60200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156146d757600080fd5b505af11580156146eb573d6000803e3d6000fd5b505050506040513d602081101561470157600080fd5b8101908080519060200190929190505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356e3df978d600160028110151561475f57fe5b60200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156147b657600080fd5b505af11580156147ca573d6000803e3d6000fd5b505050506040513d60208110156147e057600080fd5b8101908080519060200190929190505050614d52565b61ffff16614d7690919063ffffffff16565b93505b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630a7703d48d868b8a8a6040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018561ffff1661ffff16815260200184600260200280838360005b838110156148e45780820151818401526020810190506148c9565b5050505090500183600460200280838360005b838110156149125780820151818401526020810190506148f7565b5050505090500182600b60200280838360005b83811015614940578082015181840152602081019050614925565b5050505090500195505050505050602060405180830381600087803b15801561496857600080fd5b505af115801561497c573d6000803e3d6000fd5b505050506040513d602081101561499257600080fd5b81019080805190602001909291905050509850600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663abe7f1ab8d8d6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015614a6a57600080fd5b505af1158015614a7e573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347327ae38a6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015614b1357600080fd5b505af1158015614b27573d6000803e3d6000fd5b505050506040513d6020811015614b3d57600080fd5b81019080805190602001909291905050509050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cebab53d8a836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018263ffffffff1663ffffffff16815260200192505050600060405180830381600087803b158015614bf557600080fd5b505af1158015614c09573d6000803e3d6000fd5b5050505050505050505050509392505050565b6000808284019050838110151515614c3057fe5b8091505092915050565b60008082840190508360ff168160ff1610151515614c5457fe5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515614d03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f696e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b50565b60008082840190508363ffffffff168163ffffffff1610151515614d2657fe5b8091505092915050565b60008163ffffffff168363ffffffff16811515614d4957fe5b04905092915050565b60008161ffff168361ffff161115614d6c57829050614d70565b8190505b92915050565b60008082840190508361ffff168161ffff1610151515614d9257fe5b8091505092915050565b828054828255906000526020600020908101928215614e15579160200282015b82811115614e145782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190614dbc565b5b509050614e229190614eb3565b5090565b61014060405190810160405280600a90602082028038833980820191505090505090565b6040805190810160405280600290602082028038833980820191505090505090565b61016060405190810160405280600b90602082028038833980820191505090505090565b608060405190810160405280600490602082028038833980820191505090505090565b614ef391905b80821115614eef57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101614eb9565b5090565b905600a165627a7a7230582085ff92c12c4a63ac2102a16fea73d94a9b06f9f9fc1b13fa2e1583db8062b7220029
Swarm Source
bzzr://85ff92c12c4a63ac2102a16fea73d94a9b06f9f9fc1b13fa2e1583db8062b722
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.