Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
2,201,696,959 TST
Holders
2,524
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
This contract contains unverified libraries: ECRecovery
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
TrustShoreToken
Compiler Version
v0.5.0+commit.1d4f565a
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-06-24 */ pragma solidity ^0.5.0; library ECRecovery { /** * @dev Recover signer address from a message by using his signature * @param hash bytes32 message, the hash is the signed message. What is recovered is the signer address. * @param sig bytes signature, the signature is generated using web3.eth.sign() */ function recover(bytes32 hash, bytes memory sig) public pure returns (address) { bytes32 r; bytes32 s; uint8 v; //Check the signature length if (sig.length != 65) { return (address(0)); } // Divide the signature in r, s and v variables assembly { r := mload(add(sig, 32)) s := mload(add(sig, 64)) v := byte(0, mload(add(sig, 96))) } // Version of signature should be 27 or 28, but 0 and 1 are also possible versions if (v < 27) { v += 27; } // If the version is correct return the signer address if (v != 27 && v != 28) { return (address(0)); } else { return ecrecover(hash, v, r, s); } } } /** * @title Roles * @dev Library for managing addresses assigned to a Role. */ library Roles { struct Role { mapping (address => bool) bearer; } /** * @dev Give an account access to this role. */ function add(Role storage role, address account) internal { require(!has(role, account), "Roles: account already has role"); role.bearer[account] = true; } /** * @dev Remove an account's access to this role. */ function remove(Role storage role, address account) internal { require(has(role, account), "Roles: account does not have role"); role.bearer[account] = false; } /** * @dev Check if an account has this role. * @return bool */ function has(Role storage role, address account) internal view returns (bool) { require(account != address(0), "Roles: account is the zero address"); return role.bearer[account]; } } library SafeMath { /** * @dev Multiplies two unsigned integers, reverts on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, "SafeMath: division by zero"); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); uint256 c = a - b; return c; } /** * @dev Adds two unsigned integers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "SafeMath: modulo by zero"); return a % b; } } interface IERC20 { function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } contract ERC20 is IERC20 { using SafeMath for uint256; mapping (address => uint256) internal _balances; mapping (address => mapping (address => uint256)) internal _allowances; uint256 internal _totalSupply; constructor() internal { } function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address who) public view returns (uint256) { return _balances[who]; } function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } function transfer(address to, uint256 value) public returns (bool) { _transfer(msg.sender, to, value); return true; } function approve(address spender, uint256 value) public returns (bool) { _approve(msg.sender, spender, value); return true; } function transferFrom(address from, address to, uint256 value) public returns (bool) { _transfer(from, to, value); _approve(from, msg.sender, _allowances[from][msg.sender].sub(value)); return true; } function _transfer(address _from, address to, uint256 value) internal { require(_from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _balances[_from] = _balances[_from].sub(value); _balances[to] = _balances[to].add(value); emit Transfer(_from, to, value); } function _approve(address owner, address spender, uint256 value) internal { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = value; emit Approval(owner, spender, value); } } contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); using SafeMath for uint256; uint256 public startdate; constructor() internal { owner = msg.sender; startdate = now; } modifier onlyOwner() { require(msg.sender == owner,"Ownable: caller is not owner."); _; } function transferOwnership(address newOwner) public; function _transferOwnership(address newOwner) internal onlyOwner { require(newOwner != address(0), "Ownable: address is zero."); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } contract MinterRole { using Roles for Roles.Role; event MinterAdded(address indexed account); event MinterRemoved(address indexed account); Roles.Role private _minters; constructor () internal { _addMinter(msg.sender); } modifier onlyMinter() { require(isMinter(msg.sender), "MinterRole: caller does not have the Minter role."); _; } function isMinter(address account) public view returns (bool) { return _minters.has(account); } function renounceMinter() public; function _addMinter(address account) internal { _minters.add(account); emit MinterAdded(account); } function _removeMinter(address account) internal { _minters.remove(account); emit MinterRemoved(account); } } contract Mintable is MinterRole{ uint256 private _cap; event Mint(address indexed minter, address receiver, uint256 value); constructor (uint256 cap) internal { require(cap > 0, "ERC20Capped: cap is 0"); _cap = cap; } function renounceMinter() public; function addMinter(address minter) public; function removeMinter(address minter) public; function cap() public view returns (uint256) { return _cap; } function mint(address to, uint256 value) public onlyMinter returns (bool) { _mint(to, value); emit Mint(msg.sender, to, value); return true; } function _mint(address account, uint256 value) internal; } contract Pausable { event Paused(address account); event Unpaused(address account); bool private _paused; constructor () internal { _paused = false; } function paused() public view returns (bool) { return _paused; } modifier whenNotPaused() { require(!_paused, "Pausable: paused"); _; } modifier whenPaused() { require(_paused, "Pausable: not paused"); _; } function _pause() internal whenNotPaused { _paused = true; emit Paused(msg.sender); } function _unpause() internal whenPaused { _paused = false; emit Unpaused(msg.sender); } function pause() public; function unpause() public; } contract Burnable { event Burn(address burner, uint256 value); constructor () internal {} function burn(address account, uint256 value) public; function _burn(address account, uint256 value) internal{ emit Burn(account, value); } } contract Lockable { uint256 internal _totalLocked = 0; event Lock(address beneficiary, uint256 amount, uint256 releaseTime); mapping(address => uint256) internal _lock_list_period; mapping(address => bool) internal _lock_list; mapping(address => uint256) internal _revocable; modifier notLocked() { require(_lock_list[msg.sender] == true, "Lockable: sender address is locked."); _; } function totalLocked() public view returns (uint256){ return _totalLocked; } function mintLockedToken(address addr, uint256 tokens, uint256 _duration) public; function releaseLockedToken() public returns (bool); function isLocked(address addr) public view returns (bool) { return _lock_list[addr]; } function lockedPeriod(address addr) public view returns (uint256) { return _lock_list_period[addr]; } function lockedBalance(address addr) public view returns (uint256) { return _revocable[addr]; } } contract DelegatorRole { using Roles for Roles.Role; event DelegatorAdded(address indexed account); event DelegatorRemoved(address indexed account); Roles.Role private _delegators; constructor () internal { _addDelegator(msg.sender); } modifier onlyDelegator() { require(isDelegator(msg.sender), "DelegatorRole: caller does not have the Delegator role."); _; } function isDelegator(address account) public view returns (bool) { return _delegators.has(account); } function renounceDelegator() public; function _addDelegator(address account) internal { _delegators.add(account); emit DelegatorAdded(account); } function _removeDelegator(address account) internal { _delegators.remove(account); emit DelegatorRemoved(account); } } contract Delegatable is DelegatorRole{ using ECRecovery for bytes32; using SafeMath for uint; uint16 private _feeRate; address private _feeCollector; mapping(address => uint256) internal _nonces; event Delegated(address delegator, address sender, address receiver, uint256 value, uint256 nonce); constructor () internal{ _feeRate = 10; //0.01% _feeCollector = msg.sender; } function setFeeRate(uint16 _rate) public; function setFeeCollector(address _collector) public; function addDelegator(address minter) public; function removeDelegator(address minter) public; function renounceDelegator() public; function _setFeeRate(uint16 _rate) internal{ _feeRate = _rate; } function _setFeeCollector(address _collector) internal{ _feeCollector = _collector; } function feeRate() public view returns (uint16){ return _feeRate; } function feeCollector() public view returns (address){ return _feeCollector; } function nonceOf(address _addr) public view returns (uint256 nonce){ return _nonces[_addr]; } function _delegatedTransfer(address _from, address _to, uint256 _value, uint256 _fee) internal returns(bool success); function delegatedTransfer(address _from, address _to, uint256 _value, uint256 _nonce, bytes calldata _signature) external onlyDelegator returns(bool success){ require(_nonce == nonceOf(_from), "Delegatable: nonce is not correct"); bytes32 hash = keccak256(abi.encodePacked( "\x19Ethereum Signed Message:\n32", keccak256(abi.encodePacked(_from, _to, _value, _nonce))) ); address sender = hash.recover(_signature); // fee uint _fee = _value.mul(_feeRate).div(uint(100000)); if(_from == sender){ if(_delegatedTransfer(_from, _to, _value, _fee)){ uint256 newNonce = nonceOf(_from).add(uint256(1)); _nonces[_from] = newNonce; emit Delegated(msg.sender, _from, _to, _value, newNonce); return true; } else{ return false; } } else { return false; } } } contract TrustShoreToken is ERC20, Ownable, Mintable, Pausable, Burnable, Lockable, Delegatable{ string private _name = "TrustShore"; string private _symbol = "TST"; uint8 private _decimals = 18; constructor (uint256 cap) public Mintable(cap){ } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } //Override Mintable function _mint(address account, uint256 value) internal { require(account != address(0), "Mintable: mint to the zero address."); require(totalSupply().add(value).add(totalLocked()) <= cap(), "Mintable: cap exceeded."); _totalSupply = _totalSupply.add(value); _balances[account] = _balances[account].add(value); emit Transfer(address(0), account, value); } function renounceMinter() public { require(msg.sender != owner, "Mintable: Owner cannot renounce. Transfer owner first."); super._removeMinter(msg.sender); } function addMinter(address minter) public onlyOwner{ super._addMinter(minter); } function removeMinter(address minter) public onlyOwner{ super._removeMinter(minter); } //Override Ownerble function transferOwnership(address newOwner) public{ require(msg.sender == owner, "Ownable: only owner transfer ownership"); addMinter(newOwner); addDelegator(newOwner); removeMinter(owner); removeDelegator(owner); super._transferOwnership(newOwner); } //Override Pausable function pause() public onlyOwner { require(!paused(), "Pausable: Already paused."); super._pause(); } function unpause() public onlyOwner { require(paused(), "Pausable: Not paused."); super._unpause(); } function transfer(address to, uint256 value) public returns (bool) { require(!paused(), "Pausable: token transfer is paused."); super._transfer(msg.sender, to, value); return true; } function transferFrom(address from, address to, uint256 value) public whenNotPaused returns (bool) { require(value > 0, "transferFrom: value is must be greater than zero."); require(balanceOf(from) >= value, "transferFrom: balance of from address is not enough"); require(_allowances[from][msg.sender] >= value, "transferFrom: sender are not allowed to send."); return super.transferFrom(from, to, value); } function approve(address spender, uint256 value) public whenNotPaused returns (bool) { return super.approve(spender, value); } //Override Burnable function burn(address account, uint256 value) public onlyOwner { require(account != address(0), "Burnable: burn from the zero address"); require(_balances[account] >= value, "Burnable: not enough tokens"); _totalSupply = _totalSupply.sub(value); _balances[account] = _balances[account].sub(value); super._burn(account, value); emit Transfer(account, address(0), value); } //Apply SafeTransfer function safeTransfer(address to, uint256 value) public { require(!_isContract(to),"SafeTransfer: receiver is contract"); transfer(to,value); } function safeTransferFrom(address from, address to, uint256 value) public { require(!_isContract(from),"SafeTransfer: sender is contract"); require(!_isContract(to),"SafeTransfer: receiver is contract"); transferFrom(from, to, value); } function safeApprove(address spender, uint256 value) public { require(value != 0, "SafeTransfer: approve from non-zero to non-zero allowance"); require(!_isContract(spender),"SafeTransfer: spender is contract"); approve(spender, value); } function _isContract(address _addr) private view returns (bool is_contract){ uint length; assembly { length := extcodesize(_addr) } return (length>0); } //Override Lockable function mintLockedToken(address addr, uint256 tokens, uint256 _duration) public { require(msg.sender == owner, "Lockable: only owner can lock token "); require(_totalSupply.add(totalLocked()).add(tokens) <= cap(), "Lockable: locked tokens can not exceed total cap."); require(_lock_list[addr] == false, "Lockable: this address is already locked"); uint256 releaseTime = block.timestamp.add(_duration.mul(1 minutes)); //if(_lock_list[addr] == true) { // _totalLocked.sub(_revocable[addr]); //} _lock_list_period[addr] = releaseTime; _lock_list[addr] = true; _revocable[addr] = tokens; _totalLocked = _totalLocked.add(tokens); emit Lock(addr, tokens, releaseTime); } function releaseLockedToken() public returns (bool) { require(_lock_list[msg.sender] == true); require(_revocable[msg.sender] > 0); uint256 releaseTime = _lock_list_period[msg.sender]; uint256 currentTime = block.timestamp; if(currentTime > releaseTime) { uint256 tokens = _revocable[msg.sender]; _lock_list_period[msg.sender] = 0; _lock_list[msg.sender] = false; _revocable[msg.sender] = 0; _totalSupply = _totalSupply.add(tokens); _balances[msg.sender] = _balances[msg.sender].add(tokens); return true; } else { return false; } } //Override Delegatable function setFeeRate(uint16 _rate) public{ require(msg.sender == owner, "Delegatable: only owner change the fee rate"); _setFeeRate(_rate); } function setFeeCollector(address _collector) public{ require(msg.sender == owner, "Delegatable: only owner change the fee collector"); _setFeeCollector(_collector); } function renounceDelegator() public { require(msg.sender != owner, "Delegatable : Owner cannot renounce. Transfer owner first."); super._removeDelegator(msg.sender); } function _delegatedTransfer(address _from, address _to, uint256 _value, uint256 _fee) internal returns(bool success){ uint _amount = _value.add(_fee); if (balanceOf(_from) < _amount) return false; _balances[_from] = balanceOf(_from).sub(_amount); _balances[_to] = balanceOf(_to).add(_value); _balances[feeCollector()] = balanceOf(feeCollector()).add(_fee); emit Transfer(_from, _to, _value); emit Transfer(_from, feeCollector(), _fee); return true; } function addDelegator(address delegator) public onlyOwner{ super._addDelegator(delegator); } function removeDelegator(address delegator) public onlyOwner{ super._removeDelegator(delegator); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"delegator","type":"address"}],"name":"addDelegator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_rate","type":"uint16"}],"name":"setFeeRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minter","type":"address"}],"name":"removeMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"safeTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"isLocked","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalLocked","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"tokens","type":"uint256"},{"name":"_duration","type":"uint256"}],"name":"mintLockedToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeRate","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"minter","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"lockedBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_collector","type":"address"}],"name":"setFeeCollector","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isMinter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"releaseLockedToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceDelegator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeCollector","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"lockedPeriod","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_nonce","type":"uint256"},{"name":"_signature","type":"bytes"}],"name":"delegatedTransfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"startdate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"nonceOf","outputs":[{"name":"nonce","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"safeApprove","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isDelegator","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"delegator","type":"address"}],"name":"removeDelegator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"cap","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"delegator","type":"address"},{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"receiver","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"nonce","type":"uint256"}],"name":"Delegated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"DelegatorAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"DelegatorRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"releaseTime","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"minter","type":"address"},{"indexed":false,"name":"receiver","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
608060405260006008556040805190810160405280600a81526020017f547275737453686f726500000000000000000000000000000000000000000000815250600f90805190602001906200005692919062000567565b506040805190810160405280600381526020017f545354000000000000000000000000000000000000000000000000000000000081525060109080519060200190620000a492919062000567565b506012601160006101000a81548160ff021916908360ff160217905550348015620000ce57600080fd5b506040516020806200552983398101806040526020811015620000f057600080fd5b81019080805190602001909291905050508033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600481905550620001643362000280640100000000026401000000009004565b600081111515620001dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f45524332304361707065643a206361702069732030000000000000000000000081525060200191505060405180910390fd5b80600681905550506000600760006101000a81548160ff0219169083151502179055506200021a33620002ea640100000000026401000000009004565b600a600d60006101000a81548161ffff021916908361ffff16021790555033600d60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000616565b620002a4816005620003546401000000000262004cf8179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6200030e81600c620003546401000000000262004cf8179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167fcf370ba38508da841f48b9981508fd166e3294ca16c4978a7a7bc38123ba582b60405160405180910390a250565b6200036f828262000443640100000000026401000000009004565b151515620003e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151562000510576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f526f6c65733a206163636f756e7420697320746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005aa57805160ff1916838001178555620005db565b82800160010185558215620005db579182015b82811115620005da578251825591602001919060010190620005bd565b5b509050620005ea9190620005ee565b5090565b6200061391905b808211156200060f576000816000905550600101620005f5565b5090565b90565b614f0380620006266000396000f3fe6080604052600436106101f9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101fe578063095ea7b31461028e57806318160ddd1461030157806321fb4c351461032c57806323b872dd1461037d57806329ff0773146104105780633092afd51461044f578063313ce567146104a0578063355274ea146104d15780633f4ba83a146104fc57806340c10f1914610513578063423f6cef1461058657806342842e0e146105e15780634a4fbeec1461065c57806356891412146106c55780635c975abb146106f05780636a635fb81461071f57806370a08231146107845780638456cb59146107e95780638da5cb5b1461080057806395d89b4114610857578063978bbdb9146108e7578063983b2d561461091a578063986502751461096b5780639ae697bf146109825780639dc29fac146109e7578063a42dce8014610a42578063a9059cbb14610a93578063aa271e1a14610b06578063ae1be1e414610b6f578063b93192f714610b9e578063c415b95c14610bb5578063c689211614610c0c578063cc375b8a14610c71578063cde9f2ea14610d63578063dd62ed3e14610d8e578063ed2a2d6414610e13578063f2fde38b14610e78578063fbc6d1cb14610ec9578063fd8ab48214610f24578063fe5a2bcf14610f8d575b600080fd5b34801561020a57600080fd5b50610213610fde565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610253578082015181840152602081019050610238565b50505050905090810190601f1680156102805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029a57600080fd5b506102e7600480360360408110156102b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611080565b604051808215151515815260200191505060405180910390f35b34801561030d57600080fd5b50610316611119565b6040518082815260200191505060405180910390f35b34801561033857600080fd5b5061037b6004803603602081101561034f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611123565b005b34801561038957600080fd5b506103f6600480360360608110156103a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111f4565b604051808215151515815260200191505060405180910390f35b34801561041c57600080fd5b5061044d6004803603602081101561043357600080fd5b81019080803561ffff1690602001909291905050506114ed565b005b34801561045b57600080fd5b5061049e6004803603602081101561047257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115e4565b005b3480156104ac57600080fd5b506104b56116b5565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104dd57600080fd5b506104e66116cc565b6040518082815260200191505060405180910390f35b34801561050857600080fd5b506105116116d6565b005b34801561051f57600080fd5b5061056c6004803603604081101561053657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611821565b604051808215151515815260200191505060405180910390f35b34801561059257600080fd5b506105df600480360360408110156105a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061195c565b005b3480156105ed57600080fd5b5061065a6004803603606081101561060457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a0f565b005b34801561066857600080fd5b506106ab6004803603602081101561067f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b42565b604051808215151515815260200191505060405180910390f35b3480156106d157600080fd5b506106da611b98565b6040518082815260200191505060405180910390f35b3480156106fc57600080fd5b50610705611ba2565b604051808215151515815260200191505060405180910390f35b34801561072b57600080fd5b506107826004803603606081101561074257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611bb9565b005b34801561079057600080fd5b506107d3600480360360208110156107a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612002565b6040518082815260200191505060405180910390f35b3480156107f557600080fd5b506107fe61204a565b005b34801561080c57600080fd5b50610815612196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561086357600080fd5b5061086c6121bc565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108ac578082015181840152602081019050610891565b50505050905090810190601f1680156108d95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108f357600080fd5b506108fc61225e565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561092657600080fd5b506109696004803603602081101561093d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612276565b005b34801561097757600080fd5b50610980612347565b005b34801561098e57600080fd5b506109d1600480360360208110156109a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061243e565b6040518082815260200191505060405180910390f35b3480156109f357600080fd5b50610a4060048036036040811015610a0a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612487565b005b348015610a4e57600080fd5b50610a9160048036036020811015610a6557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127ef565b005b348015610a9f57600080fd5b50610aec60048036036040811015610ab657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506128e6565b604051808215151515815260200191505060405180910390f35b348015610b1257600080fd5b50610b5560048036036020811015610b2957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129a0565b604051808215151515815260200191505060405180910390f35b348015610b7b57600080fd5b50610b846129bd565b604051808215151515815260200191505060405180910390f35b348015610baa57600080fd5b50610bb3612ca7565b005b348015610bc157600080fd5b50610bca612d9e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c1857600080fd5b50610c5b60048036036020811015610c2f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dc8565b6040518082815260200191505060405180910390f35b348015610c7d57600080fd5b50610d49600480360360a0811015610c9457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610d0557600080fd5b820183602082011115610d1757600080fd5b80359060200191846001830284011164010000000083111715610d3957600080fd5b9091929391929390505050612e11565b604051808215151515815260200191505060405180910390f35b348015610d6f57600080fd5b50610d78613331565b6040518082815260200191505060405180910390f35b348015610d9a57600080fd5b50610dfd60048036036040811015610db157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613337565b6040518082815260200191505060405180910390f35b348015610e1f57600080fd5b50610e6260048036036020811015610e3657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133be565b6040518082815260200191505060405180910390f35b348015610e8457600080fd5b50610ec760048036036020811015610e9b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613407565b005b348015610ed557600080fd5b50610f2260048036036040811015610eec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613566565b005b348015610f3057600080fd5b50610f7360048036036020811015610f4757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136b8565b604051808215151515815260200191505060405180910390f35b348015610f9957600080fd5b50610fdc60048036036020811015610fb057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136d5565b005b6060600f8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110765780601f1061104b57610100808354040283529160200191611076565b820191906000526020600020905b81548152906001019060200180831161105957829003601f168201915b5050505050905090565b6000600760009054906101000a900460ff16151515611107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b61111183836137a6565b905092915050565b6000600254905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b6111f1816137bd565b50565b6000600760009054906101000a900460ff1615151561127b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600082111515611319576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f7472616e7366657246726f6d3a2076616c7565206973206d757374206265206781526020017f726561746572207468616e207a65726f2e00000000000000000000000000000081525060400191505060405180910390fd5b8161132385612002565b101515156113bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001807f7472616e7366657246726f6d3a2062616c616e6365206f662066726f6d20616481526020017f6472657373206973206e6f7420656e6f7567680000000000000000000000000081525060400191505060405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156114d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f7472616e7366657246726f6d3a2073656e64657220617265206e6f7420616c6c81526020017f6f77656420746f2073656e642e0000000000000000000000000000000000000081525060400191505060405180910390fd5b6114e4848484613817565b90509392505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f44656c6567617461626c653a206f6e6c79206f776e6572206368616e6765207481526020017f686520666565207261746500000000000000000000000000000000000000000081525060400191505060405180910390fd5b6115e1816138c8565b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b6116b2816138e8565b50565b6000601160009054906101000a900460ff16905090565b6000600654905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561179b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b6117a3611ba2565b1515611817576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f5061757361626c653a204e6f74207061757365642e000000000000000000000081525060200191505060405180910390fd5b61181f613942565b565b600061182c336129a0565b15156118c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766581526020017f20746865204d696e74657220726f6c652e00000000000000000000000000000081525060400191505060405180910390fd5b6118d08383613a46565b3373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f88484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a26001905092915050565b61196582613cda565b151515611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f536166655472616e736665723a20726563656976657220697320636f6e74726181526020017f637400000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611a0a82826128e6565b505050565b611a1883613cda565b151515611a8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f536166655472616e736665723a2073656e64657220697320636f6e747261637481525060200191505060405180910390fd5b611a9682613cda565b151515611b31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f536166655472616e736665723a20726563656976657220697320636f6e74726181526020017f637400000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611b3c8383836111f4565b50505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600854905090565b6000600760009054906101000a900460ff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ca4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4c6f636b61626c653a206f6e6c79206f776e65722063616e206c6f636b20746f81526020017f6b656e200000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611cac6116cc565b611cda83611ccc611cbb611b98565b600254613ced90919063ffffffff16565b613ced90919063ffffffff16565b11151515611d76576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f4c6f636b61626c653a206c6f636b656420746f6b656e732063616e206e6f742081526020017f65786365656420746f74616c206361702e00000000000000000000000000000081525060400191505060405180910390fd5b60001515600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515611e64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f4c6f636b61626c653a2074686973206164647265737320697320616c7265616481526020017f79206c6f636b656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000611e8c611e7d603c84613d7790919063ffffffff16565b42613ced90919063ffffffff16565b905080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f8383600854613ced90919063ffffffff16565b6008819055507f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b848483604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a150505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561210f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b612117611ba2565b15151561218c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5061757361626c653a20416c7265616479207061757365642e0000000000000081525060200191505060405180910390fd5b612194613e44565b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060108054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122545780601f1061222957610100808354040283529160200191612254565b820191906000526020600020905b81548152906001019060200180831161223757829003601f168201915b5050505050905090565b6000600d60009054906101000a900461ffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561233b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b61234481613f49565b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515612433576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f4d696e7461626c653a204f776e65722063616e6e6f742072656e6f756e63652e81526020017f205472616e73666572206f776e65722066697273742e0000000000000000000081525060400191505060405180910390fd5b61243c336138e8565b565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561254c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612617576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4275726e61626c653a206275726e2066726f6d20746865207a65726f2061646481526020017f726573730000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156126cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4275726e61626c653a206e6f7420656e6f75676820746f6b656e73000000000081525060200191505060405180910390fd5b6126e281600254613fa390919063ffffffff16565b600281905550612739816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fa390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612785828261402e565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f44656c6567617461626c653a206f6e6c79206f776e6572206368616e6765207481526020017f68652066656520636f6c6c6563746f720000000000000000000000000000000081525060400191505060405180910390fd5b6128e38161409d565b50565b60006128f0611ba2565b15151561298b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5061757361626c653a20746f6b656e207472616e73666572206973207061757381526020017f65642e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6129963384846140e1565b6001905092915050565b60006129b682600561440790919063ffffffff16565b9050919050565b600060011515600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515612a1e57600080fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515612a6c57600080fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600042905081811115612c9d576000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bf881600254613ced90919063ffffffff16565b600281905550612c4f816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ced90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019350505050612ca4565b6000925050505b90565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515612d93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001807f44656c6567617461626c65203a204f776e65722063616e6e6f742072656e6f7581526020017f6e63652e205472616e73666572206f776e65722066697273742e00000000000081525060400191505060405180910390fd5b612d9c3361452a565b565b6000600d60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000612e1c336136b8565b1515612eb6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001807f44656c656761746f72526f6c653a2063616c6c657220646f6573206e6f74206881526020017f617665207468652044656c656761746f7220726f6c652e00000000000000000081525060400191505060405180910390fd5b612ebf876133be565b84141515612f5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f44656c6567617461626c653a206e6f6e6365206973206e6f7420636f7272656381526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600087878787604051602001808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018381526020018281526020019450505050506040516020818303038152906040528051906020012060405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182815260200191505060405160208183030381529060405280519060200120905060008173650577d054bddbb85b1d6096486109dfef2fd5e76319045a25909187876040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060206040518083038186803b15801561310557600080fd5b505af4158015613119573d6000803e3d6000fd5b505050506040513d602081101561312f57600080fd5b810190808051906020019092919050505090506000613180620186a0613172600d60009054906101000a900461ffff1661ffff168b613d7790919063ffffffff16565b61458490919063ffffffff16565b90508173ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16141561331f576131c28a8a8a84614617565b156133135760006131e560016131d78d6133be565b613ced90919063ffffffff16565b905080600e60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f490c5128356df402cae6bc56c9b55bff927877eca4f8220a5606443e06f25db9338c8c8c85604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019550505050505060405180910390a16001945050505050613327565b60009350505050613327565b600093505050505b9695505050505050565b60045481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156134f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4f776e61626c653a206f6e6c79206f776e6572207472616e73666572206f776e81526020017f657273686970000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6134fb81612276565b61350481611123565b61352f600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166115e4565b61355a600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166136d5565b6135638161484d565b50565b60008114151515613605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001807f536166655472616e736665723a20617070726f76652066726f6d206e6f6e2d7a81526020017f65726f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000081525060400191505060405180910390fd5b61360e82613cda565b1515156136a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166655472616e736665723a207370656e64657220697320636f6e7472616381526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6136b38282611080565b505050565b60006136ce82600c61440790919063ffffffff16565b9050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561379a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b6137a38161452a565b50565b60006137b3338484614a77565b6001905092915050565b6137d181600c614cf890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcf370ba38508da841f48b9981508fd166e3294ca16c4978a7a7bc38123ba582b60405160405180910390a250565b60006138248484846140e1565b6138bd84336138b885600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fa390919063ffffffff16565b614a77565b600190509392505050565b80600d60006101000a81548161ffff021916908361ffff16021790555050565b6138fc816005614dd590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b600760009054906101000a900460ff1615156139c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600760006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515613b11576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f4d696e7461626c653a206d696e7420746f20746865207a65726f20616464726581526020017f73732e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b613b196116cc565b613b4c613b24611b98565b613b3e84613b30611119565b613ced90919063ffffffff16565b613ced90919063ffffffff16565b11151515613bc2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4d696e7461626c653a206361702065786365656465642e00000000000000000081525060200191505060405180910390fd5b613bd781600254613ced90919063ffffffff16565b600281905550613c2e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ced90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080823b905060008111915050919050565b6000808284019050838110151515613d6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415613d8a5760009050613e3e565b60008284029050828482811515613d9d57fe5b04141515613e39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81526020017f770000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b809150505b92915050565b600760009054906101000a900460ff16151515613ec9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600760006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b613f5d816005614cf890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b600082821115151561401d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b7fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b80600d60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156141ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f45524332303a207472616e736665722066726f6d20746865207a65726f20616481526020017f647265737300000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515614277576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a207472616e7366657220746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6142c8816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fa390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061435b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ced90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156144d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f526f6c65733a206163636f756e7420697320746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61453e81600c614dd590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fb58714f6ca7ab0d3965b234a513e4f738507828a16b2d716b712b93f6642461360405160405180910390a250565b600080821115156145fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b6000828481151561460a57fe5b0490508091505092915050565b60008061462d8385613ced90919063ffffffff16565b90508061463987612002565b1015614649576000915050614845565b6146648161465688612002565b613fa390919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146c1846146b387612002565b613ced90919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061472583614717614712612d9e565b612002565b613ced90919063ffffffff16565b600080614730612d9e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a36147db612d9e565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150505b949350505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515614912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156149b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4f776e61626c653a2061646472657373206973207a65726f2e0000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515614b42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481526020017f726573730000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515614c0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f45524332303a20617070726f766520746f20746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b614d028282614407565b151515614d77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b614ddf8282614407565b1515614e79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c81526020017f650000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea165627a7a72305820502683953ef938f1c26c7f4c09d9b562bce996cd1b65714a1984e4bf6a3f2d6d0029000000000000000000000000000000000000000043dacaf91c1a84ff08000000
Deployed Bytecode
0x6080604052600436106101f9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101fe578063095ea7b31461028e57806318160ddd1461030157806321fb4c351461032c57806323b872dd1461037d57806329ff0773146104105780633092afd51461044f578063313ce567146104a0578063355274ea146104d15780633f4ba83a146104fc57806340c10f1914610513578063423f6cef1461058657806342842e0e146105e15780634a4fbeec1461065c57806356891412146106c55780635c975abb146106f05780636a635fb81461071f57806370a08231146107845780638456cb59146107e95780638da5cb5b1461080057806395d89b4114610857578063978bbdb9146108e7578063983b2d561461091a578063986502751461096b5780639ae697bf146109825780639dc29fac146109e7578063a42dce8014610a42578063a9059cbb14610a93578063aa271e1a14610b06578063ae1be1e414610b6f578063b93192f714610b9e578063c415b95c14610bb5578063c689211614610c0c578063cc375b8a14610c71578063cde9f2ea14610d63578063dd62ed3e14610d8e578063ed2a2d6414610e13578063f2fde38b14610e78578063fbc6d1cb14610ec9578063fd8ab48214610f24578063fe5a2bcf14610f8d575b600080fd5b34801561020a57600080fd5b50610213610fde565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610253578082015181840152602081019050610238565b50505050905090810190601f1680156102805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029a57600080fd5b506102e7600480360360408110156102b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611080565b604051808215151515815260200191505060405180910390f35b34801561030d57600080fd5b50610316611119565b6040518082815260200191505060405180910390f35b34801561033857600080fd5b5061037b6004803603602081101561034f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611123565b005b34801561038957600080fd5b506103f6600480360360608110156103a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111f4565b604051808215151515815260200191505060405180910390f35b34801561041c57600080fd5b5061044d6004803603602081101561043357600080fd5b81019080803561ffff1690602001909291905050506114ed565b005b34801561045b57600080fd5b5061049e6004803603602081101561047257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115e4565b005b3480156104ac57600080fd5b506104b56116b5565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104dd57600080fd5b506104e66116cc565b6040518082815260200191505060405180910390f35b34801561050857600080fd5b506105116116d6565b005b34801561051f57600080fd5b5061056c6004803603604081101561053657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611821565b604051808215151515815260200191505060405180910390f35b34801561059257600080fd5b506105df600480360360408110156105a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061195c565b005b3480156105ed57600080fd5b5061065a6004803603606081101561060457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a0f565b005b34801561066857600080fd5b506106ab6004803603602081101561067f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b42565b604051808215151515815260200191505060405180910390f35b3480156106d157600080fd5b506106da611b98565b6040518082815260200191505060405180910390f35b3480156106fc57600080fd5b50610705611ba2565b604051808215151515815260200191505060405180910390f35b34801561072b57600080fd5b506107826004803603606081101561074257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611bb9565b005b34801561079057600080fd5b506107d3600480360360208110156107a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612002565b6040518082815260200191505060405180910390f35b3480156107f557600080fd5b506107fe61204a565b005b34801561080c57600080fd5b50610815612196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561086357600080fd5b5061086c6121bc565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108ac578082015181840152602081019050610891565b50505050905090810190601f1680156108d95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108f357600080fd5b506108fc61225e565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561092657600080fd5b506109696004803603602081101561093d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612276565b005b34801561097757600080fd5b50610980612347565b005b34801561098e57600080fd5b506109d1600480360360208110156109a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061243e565b6040518082815260200191505060405180910390f35b3480156109f357600080fd5b50610a4060048036036040811015610a0a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612487565b005b348015610a4e57600080fd5b50610a9160048036036020811015610a6557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127ef565b005b348015610a9f57600080fd5b50610aec60048036036040811015610ab657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506128e6565b604051808215151515815260200191505060405180910390f35b348015610b1257600080fd5b50610b5560048036036020811015610b2957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129a0565b604051808215151515815260200191505060405180910390f35b348015610b7b57600080fd5b50610b846129bd565b604051808215151515815260200191505060405180910390f35b348015610baa57600080fd5b50610bb3612ca7565b005b348015610bc157600080fd5b50610bca612d9e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c1857600080fd5b50610c5b60048036036020811015610c2f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dc8565b6040518082815260200191505060405180910390f35b348015610c7d57600080fd5b50610d49600480360360a0811015610c9457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610d0557600080fd5b820183602082011115610d1757600080fd5b80359060200191846001830284011164010000000083111715610d3957600080fd5b9091929391929390505050612e11565b604051808215151515815260200191505060405180910390f35b348015610d6f57600080fd5b50610d78613331565b6040518082815260200191505060405180910390f35b348015610d9a57600080fd5b50610dfd60048036036040811015610db157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613337565b6040518082815260200191505060405180910390f35b348015610e1f57600080fd5b50610e6260048036036020811015610e3657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133be565b6040518082815260200191505060405180910390f35b348015610e8457600080fd5b50610ec760048036036020811015610e9b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613407565b005b348015610ed557600080fd5b50610f2260048036036040811015610eec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613566565b005b348015610f3057600080fd5b50610f7360048036036020811015610f4757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136b8565b604051808215151515815260200191505060405180910390f35b348015610f9957600080fd5b50610fdc60048036036020811015610fb057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136d5565b005b6060600f8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110765780601f1061104b57610100808354040283529160200191611076565b820191906000526020600020905b81548152906001019060200180831161105957829003601f168201915b5050505050905090565b6000600760009054906101000a900460ff16151515611107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b61111183836137a6565b905092915050565b6000600254905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b6111f1816137bd565b50565b6000600760009054906101000a900460ff1615151561127b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600082111515611319576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f7472616e7366657246726f6d3a2076616c7565206973206d757374206265206781526020017f726561746572207468616e207a65726f2e00000000000000000000000000000081525060400191505060405180910390fd5b8161132385612002565b101515156113bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001807f7472616e7366657246726f6d3a2062616c616e6365206f662066726f6d20616481526020017f6472657373206973206e6f7420656e6f7567680000000000000000000000000081525060400191505060405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156114d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f7472616e7366657246726f6d3a2073656e64657220617265206e6f7420616c6c81526020017f6f77656420746f2073656e642e0000000000000000000000000000000000000081525060400191505060405180910390fd5b6114e4848484613817565b90509392505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f44656c6567617461626c653a206f6e6c79206f776e6572206368616e6765207481526020017f686520666565207261746500000000000000000000000000000000000000000081525060400191505060405180910390fd5b6115e1816138c8565b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b6116b2816138e8565b50565b6000601160009054906101000a900460ff16905090565b6000600654905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561179b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b6117a3611ba2565b1515611817576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f5061757361626c653a204e6f74207061757365642e000000000000000000000081525060200191505060405180910390fd5b61181f613942565b565b600061182c336129a0565b15156118c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766581526020017f20746865204d696e74657220726f6c652e00000000000000000000000000000081525060400191505060405180910390fd5b6118d08383613a46565b3373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f88484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a26001905092915050565b61196582613cda565b151515611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f536166655472616e736665723a20726563656976657220697320636f6e74726181526020017f637400000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611a0a82826128e6565b505050565b611a1883613cda565b151515611a8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f536166655472616e736665723a2073656e64657220697320636f6e747261637481525060200191505060405180910390fd5b611a9682613cda565b151515611b31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f536166655472616e736665723a20726563656976657220697320636f6e74726181526020017f637400000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611b3c8383836111f4565b50505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600854905090565b6000600760009054906101000a900460ff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ca4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4c6f636b61626c653a206f6e6c79206f776e65722063616e206c6f636b20746f81526020017f6b656e200000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611cac6116cc565b611cda83611ccc611cbb611b98565b600254613ced90919063ffffffff16565b613ced90919063ffffffff16565b11151515611d76576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f4c6f636b61626c653a206c6f636b656420746f6b656e732063616e206e6f742081526020017f65786365656420746f74616c206361702e00000000000000000000000000000081525060400191505060405180910390fd5b60001515600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515611e64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f4c6f636b61626c653a2074686973206164647265737320697320616c7265616481526020017f79206c6f636b656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000611e8c611e7d603c84613d7790919063ffffffff16565b42613ced90919063ffffffff16565b905080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f8383600854613ced90919063ffffffff16565b6008819055507f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b848483604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a150505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561210f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b612117611ba2565b15151561218c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5061757361626c653a20416c7265616479207061757365642e0000000000000081525060200191505060405180910390fd5b612194613e44565b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060108054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122545780601f1061222957610100808354040283529160200191612254565b820191906000526020600020905b81548152906001019060200180831161223757829003601f168201915b5050505050905090565b6000600d60009054906101000a900461ffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561233b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b61234481613f49565b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515612433576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f4d696e7461626c653a204f776e65722063616e6e6f742072656e6f756e63652e81526020017f205472616e73666572206f776e65722066697273742e0000000000000000000081525060400191505060405180910390fd5b61243c336138e8565b565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561254c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612617576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4275726e61626c653a206275726e2066726f6d20746865207a65726f2061646481526020017f726573730000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156126cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4275726e61626c653a206e6f7420656e6f75676820746f6b656e73000000000081525060200191505060405180910390fd5b6126e281600254613fa390919063ffffffff16565b600281905550612739816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fa390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612785828261402e565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f44656c6567617461626c653a206f6e6c79206f776e6572206368616e6765207481526020017f68652066656520636f6c6c6563746f720000000000000000000000000000000081525060400191505060405180910390fd5b6128e38161409d565b50565b60006128f0611ba2565b15151561298b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5061757361626c653a20746f6b656e207472616e73666572206973207061757381526020017f65642e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6129963384846140e1565b6001905092915050565b60006129b682600561440790919063ffffffff16565b9050919050565b600060011515600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515612a1e57600080fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515612a6c57600080fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600042905081811115612c9d576000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bf881600254613ced90919063ffffffff16565b600281905550612c4f816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ced90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019350505050612ca4565b6000925050505b90565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515612d93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001807f44656c6567617461626c65203a204f776e65722063616e6e6f742072656e6f7581526020017f6e63652e205472616e73666572206f776e65722066697273742e00000000000081525060400191505060405180910390fd5b612d9c3361452a565b565b6000600d60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000612e1c336136b8565b1515612eb6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001807f44656c656761746f72526f6c653a2063616c6c657220646f6573206e6f74206881526020017f617665207468652044656c656761746f7220726f6c652e00000000000000000081525060400191505060405180910390fd5b612ebf876133be565b84141515612f5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f44656c6567617461626c653a206e6f6e6365206973206e6f7420636f7272656381526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600087878787604051602001808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018381526020018281526020019450505050506040516020818303038152906040528051906020012060405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182815260200191505060405160208183030381529060405280519060200120905060008173650577d054bddbb85b1d6096486109dfef2fd5e76319045a25909187876040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060206040518083038186803b15801561310557600080fd5b505af4158015613119573d6000803e3d6000fd5b505050506040513d602081101561312f57600080fd5b810190808051906020019092919050505090506000613180620186a0613172600d60009054906101000a900461ffff1661ffff168b613d7790919063ffffffff16565b61458490919063ffffffff16565b90508173ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16141561331f576131c28a8a8a84614617565b156133135760006131e560016131d78d6133be565b613ced90919063ffffffff16565b905080600e60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f490c5128356df402cae6bc56c9b55bff927877eca4f8220a5606443e06f25db9338c8c8c85604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019550505050505060405180910390a16001945050505050613327565b60009350505050613327565b600093505050505b9695505050505050565b60045481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156134f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4f776e61626c653a206f6e6c79206f776e6572207472616e73666572206f776e81526020017f657273686970000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6134fb81612276565b61350481611123565b61352f600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166115e4565b61355a600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166136d5565b6135638161484d565b50565b60008114151515613605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001807f536166655472616e736665723a20617070726f76652066726f6d206e6f6e2d7a81526020017f65726f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000081525060400191505060405180910390fd5b61360e82613cda565b1515156136a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166655472616e736665723a207370656e64657220697320636f6e7472616381526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6136b38282611080565b505050565b60006136ce82600c61440790919063ffffffff16565b9050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561379a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b6137a38161452a565b50565b60006137b3338484614a77565b6001905092915050565b6137d181600c614cf890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcf370ba38508da841f48b9981508fd166e3294ca16c4978a7a7bc38123ba582b60405160405180910390a250565b60006138248484846140e1565b6138bd84336138b885600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fa390919063ffffffff16565b614a77565b600190509392505050565b80600d60006101000a81548161ffff021916908361ffff16021790555050565b6138fc816005614dd590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b600760009054906101000a900460ff1615156139c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600760006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515613b11576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f4d696e7461626c653a206d696e7420746f20746865207a65726f20616464726581526020017f73732e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b613b196116cc565b613b4c613b24611b98565b613b3e84613b30611119565b613ced90919063ffffffff16565b613ced90919063ffffffff16565b11151515613bc2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4d696e7461626c653a206361702065786365656465642e00000000000000000081525060200191505060405180910390fd5b613bd781600254613ced90919063ffffffff16565b600281905550613c2e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ced90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080823b905060008111915050919050565b6000808284019050838110151515613d6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415613d8a5760009050613e3e565b60008284029050828482811515613d9d57fe5b04141515613e39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81526020017f770000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b809150505b92915050565b600760009054906101000a900460ff16151515613ec9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600760006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b613f5d816005614cf890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b600082821115151561401d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b7fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b80600d60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156141ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f45524332303a207472616e736665722066726f6d20746865207a65726f20616481526020017f647265737300000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515614277576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a207472616e7366657220746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6142c8816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fa390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061435b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ced90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156144d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f526f6c65733a206163636f756e7420697320746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61453e81600c614dd590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fb58714f6ca7ab0d3965b234a513e4f738507828a16b2d716b712b93f6642461360405160405180910390a250565b600080821115156145fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b6000828481151561460a57fe5b0490508091505092915050565b60008061462d8385613ced90919063ffffffff16565b90508061463987612002565b1015614649576000915050614845565b6146648161465688612002565b613fa390919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146c1846146b387612002565b613ced90919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061472583614717614712612d9e565b612002565b613ced90919063ffffffff16565b600080614730612d9e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a36147db612d9e565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150505b949350505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515614912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156149b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4f776e61626c653a2061646472657373206973207a65726f2e0000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515614b42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481526020017f726573730000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515614c0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f45524332303a20617070726f766520746f20746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b614d028282614407565b151515614d77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b614ddf8282614407565b1515614e79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c81526020017f650000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea165627a7a72305820502683953ef938f1c26c7f4c09d9b562bce996cd1b65714a1984e4bf6a3f2d6d0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000043dacaf91c1a84ff08000000
-----Decoded View---------------
Arg [0] : cap (uint256): 21000000000000000000000000000
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000043dacaf91c1a84ff08000000
Deployed Bytecode Sourcemap
14218:7204:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14498:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14498:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14498:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16929:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16929:140:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16929:140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4957:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4957:91:0;;;;;;;;;;;;;;;;;;;;;;;21191:108;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21191:108:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21191:108:0;;;;;;;;;;;;;;;;;;;;;;16471:450;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16471:450:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16471:450:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20075:163;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20075:163:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20075:163:0;;;;;;;;;;;;;;;;;;;;;;15507:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15507:100:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15507:100:0;;;;;;;;;;;;;;;;;;;;;;14684:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14684:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8552:75;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8552:75:0;;;;;;;;;;;;;;;;;;;;;;;16117:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16117:124:0;;;;;;8635:174;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8635:174:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8635:174:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17566:166;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17566:166:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17566:166:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17740:268;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17740:268:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17740:268:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10630:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10630:101:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10630:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10383:90;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10383:90:0;;;;;;;;;;;;;;;;;;;;;;;9076:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9076:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;18533:789;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18533:789:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18533:789:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5056:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5056:102:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5056:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15984:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15984:125:0;;;;;;6612:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6612:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;14589:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14589:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14589:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12771:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12771:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;15403:96;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15403:96:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15403:96:0;;;;;;;;;;;;;;;;;;;;;;15215:180;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15215:180:0;;;;;;10862:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10862:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10862:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17102:430;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17102:430:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17102:430:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20246:189;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20246:189:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20246:189:0;;;;;;;;;;;;;;;;;;;;;;16249:214;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16249:214:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16249:214:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7716:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7716:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7716:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19330:709;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19330:709:0;;;;;;;;;;;;;;;;;;;;;;;;;;;20443:190;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20443:190:0;;;;;;12860:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12860:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;10739:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10739:115:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10739:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13200:1011;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13200:1011:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;13200:1011:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;13200:1011:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13200:1011:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;13200:1011:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6762:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6762:24:0;;;;;;;;;;;;;;;;;;;;;;;5166:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5166:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5166:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12960:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12960:107:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12960:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15640:311;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15640:311:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15640:311:0;;;;;;;;;;;;;;;;;;;;;;18016:270;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18016:270:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18016:270:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11421:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11421:115:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11421:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21307:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21307:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21307:112:0;;;;;;;;;;;;;;;;;;;;;;14498:83;14535:13;14568:5;14561:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14498:83;:::o;16929:140::-;17008:4;9207:7;;;;;;;;;;;9206:8;9198:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17032:29;17046:7;17055:5;17032:13;:29::i;:::-;17025:36;;16929:140;;;;:::o;4957:91::-;5001:7;5028:12;;5021:19;;4957:91;:::o;21191:108::-;6943:5;;;;;;;;;;;6929:19;;:10;:19;;;6921:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21259:30;21279:9;21259:19;:30::i;:::-;21191:108;:::o;16471:450::-;16564:4;9207:7;;;;;;;;;;;9206:8;9198:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16597:1;16589:5;:9;16581:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16690:5;16671:15;16681:4;16671:9;:15::i;:::-;:24;;16663:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16803:5;16770:11;:17;16782:4;16770:17;;;;;;;;;;;;;;;:29;16788:10;16770:29;;;;;;;;;;;;;;;;:38;;16762:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16878:35;16897:4;16903:2;16907:5;16878:18;:35::i;:::-;16871:42;;16471:450;;;;;:::o;20075:163::-;20148:5;;;;;;;;;;;20134:19;;:10;:19;;;20126:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20212:18;20224:5;20212:11;:18::i;:::-;20075:163;:::o;15507:100::-;6943:5;;;;;;;;;;;6929:19;;:10;:19;;;6921:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15572:27;15592:6;15572:19;:27::i;:::-;15507:100;:::o;14684:83::-;14725:5;14750:9;;;;;;;;;;;14743:16;;14684:83;:::o;8552:75::-;8588:7;8615:4;;8608:11;;8552:75;:::o;16117:124::-;6943:5;;;;;;;;;;;6929:19;;:10;:19;;;6921:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16172:8;:6;:8::i;:::-;16164:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16217:16;:14;:16::i;:::-;16117:124::o;8635:174::-;8703:4;7614:20;7623:10;7614:8;:20::i;:::-;7606:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8720:16;8726:2;8730:5;8720;:16::i;:::-;8757:10;8752:27;;;8769:2;8773:5;8752:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;8797:4;8790:11;;8635:174;;;;:::o;17566:166::-;17642:15;17654:2;17642:11;:15::i;:::-;17641:16;17633:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17706:18;17715:2;17718:5;17706:8;:18::i;:::-;;17566:166;;:::o;17740:268::-;17834:17;17846:4;17834:11;:17::i;:::-;17833:18;17825:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17907:15;17919:2;17907:11;:15::i;:::-;17906:16;17898:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17971:29;17984:4;17990:2;17994:5;17971:12;:29::i;:::-;;17740:268;;;:::o;10630:101::-;10683:4;10707:10;:16;10718:4;10707:16;;;;;;;;;;;;;;;;;;;;;;;;;10700:23;;10630:101;;;:::o;10383:90::-;10427:7;10453:12;;10446:19;;10383:90;:::o;9076:78::-;9115:4;9139:7;;;;;;;;;;;9132:14;;9076:78;:::o;18533:789::-;18647:5;;;;;;;;;;;18633:19;;:10;:19;;;18625:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18759:5;:3;:5::i;:::-;18712:43;18748:6;18712:31;18729:13;:11;:13::i;:::-;18712:12;;:16;;:31;;;;:::i;:::-;:35;;:43;;;;:::i;:::-;:52;;18704:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18857:5;18837:25;;:10;:16;18848:4;18837:16;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;18829:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18920:19;18942:45;18962:24;18976:9;18962;:13;;:24;;;;:::i;:::-;18942:15;:19;;:45;;;;:::i;:::-;18920:67;;19134:11;19108:17;:23;19126:4;19108:23;;;;;;;;;;;;;;;:37;;;;19175:4;19156:10;:16;19167:4;19156:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;19209:6;19190:10;:16;19201:4;19190:16;;;;;;;;;;;;;;;:25;;;;19241:24;19258:6;19241:12;;:16;;:24;;;;:::i;:::-;19226:12;:39;;;;19283:31;19288:4;19294:6;19302:11;19283:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18533:789;;;;:::o;5056:102::-;5109:7;5136:9;:14;5146:3;5136:14;;;;;;;;;;;;;;;;5129:21;;5056:102;;;:::o;15984:125::-;6943:5;;;;;;;;;;;6929:19;;:10;:19;;;6921:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16038:8;:6;:8::i;:::-;16037:9;16029:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16087:14;:12;:14::i;:::-;15984:125::o;6612:20::-;;;;;;;;;;;;;:::o;14589:87::-;14628:13;14661:7;14654:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14589:87;:::o;12771:81::-;12811:6;12836:8;;;;;;;;;;;12829:15;;12771:81;:::o;15403:96::-;6943:5;;;;;;;;;;;6929:19;;:10;:19;;;6921:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15465:24;15482:6;15465:16;:24::i;:::-;15403:96;:::o;15215:180::-;15281:5;;;;;;;;;;;15267:19;;:10;:19;;;;15259:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15356:31;15376:10;15356:19;:31::i;:::-;15215:180::o;10862:109::-;10920:7;10947:10;:16;10958:4;10947:16;;;;;;;;;;;;;;;;10940:23;;10862:109;;;:::o;17102:430::-;6943:5;;;;;;;;;;;6929:19;;:10;:19;;;6921:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17203:1;17184:21;;:7;:21;;;;17176:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17287:5;17265:9;:18;17275:7;17265:18;;;;;;;;;;;;;;;;:27;;17257:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17350:23;17367:5;17350:12;;:16;;:23;;;;:::i;:::-;17335:12;:38;;;;17405:29;17428:5;17405:9;:18;17415:7;17405:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;17384:9;:18;17394:7;17384:18;;;;;;;;;;;;;;;:50;;;;17445:27;17457:7;17466:5;17445:11;:27::i;:::-;17514:1;17488:36;;17497:7;17488:36;;;17518:5;17488:36;;;;;;;;;;;;;;;;;;17102:430;;:::o;20246:189::-;20330:5;;;;;;;;;;;20316:19;;:10;:19;;;20308:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20399:28;20416:10;20399:16;:28::i;:::-;20246:189;:::o;16249:214::-;16310:4;16336:8;:6;:8::i;:::-;16335:9;16327:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16395:38;16411:10;16423:2;16427:5;16395:15;:38::i;:::-;16451:4;16444:11;;16249:214;;;;:::o;7716:109::-;7772:4;7796:21;7809:7;7796:8;:12;;:21;;;;:::i;:::-;7789:28;;7716:109;;;:::o;19330:709::-;19376:4;19427;19401:30;;:10;:22;19412:10;19401:22;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;19393:39;;;;;;;;19476:1;19451:10;:22;19462:10;19451:22;;;;;;;;;;;;;;;;:26;19443:35;;;;;;;;19491:19;19513:17;:29;19531:10;19513:29;;;;;;;;;;;;;;;;19491:51;;19553:19;19575:15;19553:37;;19620:11;19606;:25;19603:429;;;19648:14;19665:10;:22;19676:10;19665:22;;;;;;;;;;;;;;;;19648:39;;19736:1;19704:17;:29;19722:10;19704:29;;;;;;;;;;;;;;;:33;;;;19777:5;19752:10;:22;19763:10;19752:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;19822:1;19797:10;:22;19808:10;19797:22;;;;;;;;;;;;;;;:26;;;;19853:24;19870:6;19853:12;;:16;;:24;;;;:::i;:::-;19838:12;:39;;;;19916:33;19942:6;19916:9;:21;19926:10;19916:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;19892:9;:21;19902:10;19892:21;;;;;;;;;;;;;;;:57;;;;19971:4;19964:11;;;;;;;19603:429;20015:5;20008:12;;;;19330:709;;:::o;20443:190::-;20512:5;;;;;;;;;;;20498:19;;:10;:19;;;;20490:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20591:34;20614:10;20591:22;:34::i;:::-;20443:190::o;12860:92::-;12905:7;12931:13;;;;;;;;;;;12924:20;;12860:92;:::o;10739:115::-;10796:7;10823:17;:23;10841:4;10823:23;;;;;;;;;;;;;;;;10816:30;;10739:115;;;:::o;13200:1011::-;13345:12;11310:23;11322:10;11310:11;:23::i;:::-;11302:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13387:14;13395:5;13387:7;:14::i;:::-;13377:6;:24;13369:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13452:12;13584:5;13591:3;13596:6;13604;13567:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13567:44:0;;;13557:55;;;;;;13477:136;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13477:136:0;;;13467:157;;;;;;13452:172;;13635:14;13652:4;:12;;;;13665:10;;13652:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;13652:24:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13652:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13652:24:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13652:24:0;;;;;;;;;;;;;;;;13635:41;;13705:9;13717:38;13747:6;13717:20;13728:8;;;;;;;;;;;13717:20;;:6;:10;;:20;;;;:::i;:::-;:24;;:38;;;;:::i;:::-;13705:50;;13780:6;13771:15;;:5;:15;;;13768:436;;;13805:44;13824:5;13831:3;13836:6;13844:4;13805:18;:44::i;:::-;13802:346;;;13869:16;13888:30;13915:1;13888:14;13896:5;13888:7;:14::i;:::-;:18;;:30;;;;:::i;:::-;13869:49;;13954:8;13937:7;:14;13945:5;13937:14;;;;;;;;;;;;;;;:25;;;;13986:51;13996:10;14008:5;14015:3;14020:6;14028:8;13986:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14063:4;14056:11;;;;;;;;13802:346;14127:5;14120:12;;;;;;;13768:436;14187:5;14180:12;;;;;11404:1;13200:1011;;;;;;;;:::o;6762:24::-;;;;:::o;5166:134::-;5238:7;5265:11;:18;5277:5;5265:18;;;;;;;;;;;;;;;:27;5284:7;5265:27;;;;;;;;;;;;;;;;5258:34;;5166:134;;;;:::o;12960:107::-;13013:13;13045:7;:14;13053:5;13045:14;;;;;;;;;;;;;;;;13038:21;;12960:107;;;:::o;15640:311::-;15724:5;;;;;;;;;;;15710:19;;:10;:19;;;15702:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15783:19;15793:8;15783:9;:19::i;:::-;15813:22;15826:8;15813:12;:22::i;:::-;15846:19;15859:5;;;;;;;;;;;15846:12;:19::i;:::-;15876:22;15892:5;;;;;;;;;;;15876:15;:22::i;:::-;15909:34;15934:8;15909:24;:34::i;:::-;15640:311;:::o;18016:270::-;18104:1;18095:5;:10;;18087:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18187:20;18199:7;18187:11;:20::i;:::-;18186:21;18178:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18255:23;18263:7;18272:5;18255:7;:23::i;:::-;;18016:270;;:::o;11421:115::-;11480:4;11504:24;11520:7;11504:11;:15;;:24;;;;:::i;:::-;11497:31;;11421:115;;;:::o;21307:112::-;6943:5;;;;;;;;;;;6929:19;;:10;:19;;;6921:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21378:33;21401:9;21378:22;:33::i;:::-;21307:112;:::o;5456:148::-;5521:4;5538:36;5547:10;5559:7;5568:5;5538:8;:36::i;:::-;5592:4;5585:11;;5456:148;;;;:::o;11588:131::-;11648:24;11664:7;11648:11;:15;;:24;;;;:::i;:::-;11703:7;11688:23;;;;;;;;;;;;11588:131;:::o;5612:231::-;5691:4;5708:26;5718:4;5724:2;5728:5;5708:9;:26::i;:::-;5745:68;5754:4;5760:10;5772:40;5806:5;5772:11;:17;5784:4;5772:17;;;;;;;;;;;;;;;:29;5790:10;5772:29;;;;;;;;;;;;;;;;:33;;:40;;;;:::i;:::-;5745:8;:68::i;:::-;5831:4;5824:11;;5612:231;;;;;:::o;12578:78::-;12643:5;12632:8;;:16;;;;;;;;;;;;;;;;;;12578:78;:::o;8004:130::-;8064:24;8080:7;8064:8;:15;;:24;;;;:::i;:::-;8118:7;8104:22;;;;;;;;;;;;8004:130;:::o;9480:110::-;9304:7;;;;;;;;;;;9296:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9541:5;9531:7;;:15;;;;;;;;;;;;;;;;;;9562:20;9571:10;9562:20;;;;;;;;;;;;;;;;;;;;;;9480:110::o;14800:407::-;14894:1;14875:21;;:7;:21;;;;14867:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15002:5;:3;:5::i;:::-;14955:43;14984:13;:11;:13::i;:::-;14955:24;14973:5;14955:13;:11;:13::i;:::-;:17;;:24;;;;:::i;:::-;:28;;:43;;;;:::i;:::-;:52;;14947:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15063:23;15080:5;15063:12;;:16;;:23;;;;:::i;:::-;15048:12;:38;;;;15118:29;15141:5;15118:9;:18;15128:7;15118:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;15097:9;:18;15107:7;15097:18;;;;;;;;;;;;;;;:50;;;;15184:7;15163:36;;15180:1;15163:36;;;15193:5;15163:36;;;;;;;;;;;;;;;;;;14800:407;;:::o;18294:206::-;18352:16;18380:11;18448:5;18436:18;18426:28;;18490:1;18483:6;:8;18475:17;;;18294:206;;;:::o;3525:181::-;3583:7;3603:9;3619:1;3615;:5;3603:17;;3644:1;3639;:6;;3631:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3697:1;3690:8;;;3525:181;;;;:::o;2177:470::-;2235:7;2484:1;2479;:6;2475:47;;;2509:1;2502:8;;;;2475:47;2534:9;2550:1;2546;:5;2534:17;;2579:1;2574;2570;:5;;;;;;;;:10;2562:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2638:1;2631:8;;;2177:470;;;;;:::o;9364:108::-;9207:7;;;;;;;;;;;9206:8;9198:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9426:4;9416:7;;:14;;;;;;;;;;;;;;;;;;9446:18;9453:10;9446:18;;;;;;;;;;;;;;;;;;;;;;9364:108::o;7874:122::-;7931:21;7944:7;7931:8;:12;;:21;;;;:::i;:::-;7980:7;7968:20;;;;;;;;;;;;7874:122;:::o;3253:184::-;3311:7;3344:1;3339;:6;;3331:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3391:9;3407:1;3403;:5;3391:17;;3428:1;3421:8;;;3253:184;;;;:::o;9829:99::-;9900:20;9905:7;9914:5;9900:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;9829:99;;:::o;12664:::-;12745:10;12729:13;;:26;;;;;;;;;;;;;;;;;;12664:99;:::o;5851:385::-;5957:1;5940:19;;:5;:19;;;;5932:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6034:1;6020:16;;:2;:16;;;;6012:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6108:27;6129:5;6108:9;:16;6118:5;6108:16;;;;;;;;;;;;;;;;:20;;:27;;;;:::i;:::-;6089:9;:16;6099:5;6089:16;;;;;;;;;;;;;;;:46;;;;6162:24;6180:5;6162:9;:13;6172:2;6162:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;6146:9;:13;6156:2;6146:13;;;;;;;;;;;;;;;:40;;;;6218:2;6202:26;;6211:5;6202:26;;;6222:5;6202:26;;;;;;;;;;;;;;;;;;5851:385;;;:::o;1853:203::-;1925:4;1969:1;1950:21;;:7;:21;;;;1942:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2028:4;:11;;:20;2040:7;2028:20;;;;;;;;;;;;;;;;;;;;;;;;;2021:27;;1853:203;;;;:::o;11727:139::-;11790:27;11809:7;11790:11;:18;;:27;;;;:::i;:::-;11850:7;11833:25;;;;;;;;;;;;11727:139;:::o;2782:333::-;2840:7;2939:1;2935;:5;2927:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2982:9;2998:1;2994;:5;;;;;;;;2982:17;;3106:1;3099:8;;;2782:333;;;;:::o;20641:542::-;20744:12;20768;20783:16;20794:4;20783:6;:10;;:16;;;;:::i;:::-;20768:31;;20835:7;20816:16;20826:5;20816:9;:16::i;:::-;:26;20812:57;;;20864:5;20857:12;;;;;20812:57;20899:29;20920:7;20899:16;20909:5;20899:9;:16::i;:::-;:20;;:29;;;;:::i;:::-;20880:9;:16;20890:5;20880:16;;;;;;;;;;;;;;;:48;;;;20956:26;20975:6;20956:14;20966:3;20956:9;:14::i;:::-;:18;;:26;;;;:::i;:::-;20939:9;:14;20949:3;20939:14;;;;;;;;;;;;;;;:43;;;;21021:35;21051:4;21021:25;21031:14;:12;:14::i;:::-;21021:9;:25::i;:::-;:29;;:35;;;;:::i;:::-;20993:9;:25;21003:14;:12;:14::i;:::-;20993:25;;;;;;;;;;;;;;;:63;;;;21088:3;21072:28;;21081:5;21072:28;;;21093:6;21072:28;;;;;;;;;;;;;;;;;;21132:14;:12;:14::i;:::-;21116:37;;21125:5;21116:37;;;21148:4;21116:37;;;;;;;;;;;;;;;;;;21171:4;21164:11;;;20641:542;;;;;;;:::o;7069:224::-;6943:5;;;;;;;;;;;6929:19;;:10;:19;;;6921:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7173:1;7153:22;;:8;:22;;;;7145:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7249:8;7221:37;;7242:5;;;;;;;;;;;7221:37;;;;;;;;;;;;7277:8;7269:5;;:16;;;;;;;;;;;;;;;;;;7069:224;:::o;6244:335::-;6354:1;6337:19;;:5;:19;;;;6329:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6435:1;6416:21;;:7;:21;;;;6408:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6519:5;6489:11;:18;6501:5;6489:18;;;;;;;;;;;;;;;:27;6508:7;6489:27;;;;;;;;;;;;;;;:35;;;;6556:7;6540:31;;6549:5;6540:31;;;6565:5;6540:31;;;;;;;;;;;;;;;;;;6244:335;;;:::o;1317:178::-;1395:18;1399:4;1405:7;1395:3;:18::i;:::-;1394:19;1386:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1483:4;1460;:11;;:20;1472:7;1460:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;1317:178;;:::o;1575:183::-;1655:18;1659:4;1665:7;1655:3;:18::i;:::-;1647:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1745:5;1722:4;:11;;:20;1734:7;1722:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1575:183;;:::o
Swarm Source
bzzr://502683953ef938f1c26c7f4c09d9b562bce996cd1b65714a1984e4bf6a3f2d6d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.