More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 2,486 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 60503674 | 4 days ago | IN | 0 AVAX | 0.00007475 | ||||
Transfer | 60307859 | 8 days ago | IN | 0 AVAX | 0.00000906 | ||||
Approve | 60247284 | 9 days ago | IN | 0 AVAX | 0.00012188 | ||||
Approve | 60207520 | 9 days ago | IN | 0 AVAX | 0.00007519 | ||||
Approve | 59794278 | 16 days ago | IN | 0 AVAX | 0.00011721 | ||||
Approve | 59656356 | 19 days ago | IN | 0 AVAX | 0.00011727 | ||||
Transfer | 58932690 | 35 days ago | IN | 0 AVAX | 0.00007867 | ||||
Transfer | 58928797 | 35 days ago | IN | 0 AVAX | 0.00007866 | ||||
Transfer | 58846279 | 37 days ago | IN | 0 AVAX | 0.00007867 | ||||
Transfer | 58840753 | 37 days ago | IN | 0 AVAX | 0.00007866 | ||||
Transfer | 58840426 | 37 days ago | IN | 0 AVAX | 0.00007867 | ||||
Transfer | 58815702 | 37 days ago | IN | 0 AVAX | 0.00007867 | ||||
Transfer | 58805983 | 37 days ago | IN | 0 AVAX | 0.00007866 | ||||
Transfer | 58803529 | 38 days ago | IN | 0 AVAX | 0.00007867 | ||||
Transfer | 58798540 | 38 days ago | IN | 0 AVAX | 0.0000786 | ||||
Transfer | 58760555 | 38 days ago | IN | 0 AVAX | 0.00007867 | ||||
Transfer | 58757844 | 39 days ago | IN | 0 AVAX | 0.00007867 | ||||
Transfer | 58720207 | 39 days ago | IN | 0 AVAX | 0.00007869 | ||||
Approve | 58506016 | 44 days ago | IN | 0 AVAX | 0.00014338 | ||||
Approve | 58111407 | 51 days ago | IN | 0 AVAX | 0.00038242 | ||||
Approve | 57521875 | 63 days ago | IN | 0 AVAX | 0.00007102 | ||||
Transfer | 57216442 | 69 days ago | IN | 0 AVAX | 0.00005245 | ||||
Approve | 57115547 | 71 days ago | IN | 0 AVAX | 0.00004691 | ||||
Approve | 57062575 | 73 days ago | IN | 0 AVAX | 0.00014254 | ||||
Approve | 56905747 | 76 days ago | IN | 0 AVAX | 0.00011769 |
Latest 4 internal transactions
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
13874133 | 1094 days ago | Contract Creation | 0 AVAX | |||
13874133 | 1094 days ago | Contract Creation | 0 AVAX | |||
13874133 | 1094 days ago | Contract Creation | 0 AVAX | |||
13874133 | 1094 days ago | Contract Creation | 0 AVAX |
Loading...
Loading
Contract Name:
Choccy
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at snowscan.xyz on 2022-04-25 */ /** ChoccyCoin Chocconomics: 100M supply, no tax **/ pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin guidelines: functions revert instead * of returning `false` on failure. This behavior is nonetheless conventional * and does not conflict with the expectations of ERC20 applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 { mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Sets the values for {name} and {symbol}. * * The defaut value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All three of these values are immutable: they can only be set once during * construction. */ constructor (string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overloaded; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual returns (bool) { _transfer(msg.sender, recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual returns (bool) { _approve(msg.sender, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public virtual returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][msg.sender]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, msg.sender, currentAllowance - amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[msg.sender][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(msg.sender, spender, currentAllowance - subtractedValue); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); _balances[account] = accountBalance - amount; _totalSupply -= amount; emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } } // SPDX-License-Identifier: MIT pragma solidity ^0.8.10; contract Choccy is ERC20 { address public devV; address public invV; address public vester; address public treasury; constructor() ERC20("ChoccyCoin", "CCY") { devV = address(new devVesting(15*(30 days), this, msg.sender, 10*1e6*1e18)); invV = address(new invVest(this, 12*(30 days))); vester = address(new Vester(this, 6*(30 days))); treasury = address(new Treasury(this, msg.sender, 1 days)); _mint(vester, 100 * (1e6) * (1e18) + 8855240700000000000000000); //100M supply + investor _transfer(vester, invV, 8855240700000000000000000); //investor vesting _transfer(vester, devV, 10*1e6*1e18); //10% dev fund _transfer(vester, treasury, 30*1e6*1e18); //30% treasury. _transfer(vester, msg.sender, 27*1e6*1e18); //27% liq. this leaves the rest for vesting (10%+30%+27% = 67%, 33 presold) } } contract devVesting { ERC20 public immutable token; uint public immutable amountStart; uint public immutable duration; uint public immutable start; address public immutable dev; //could let you transfer ownership of the token, but I don't see that happen often and it would increase the surface area constructor(uint _duration, ERC20 _token, address _dev, uint _amountStart){ duration = _duration; start = block.timestamp + 3 * (30 days); token = _token; dev = _dev; amountStart = _amountStart; } function takeFunds(uint amount) external{ require(msg.sender == dev); token.transfer(dev, amount); require(block.timestamp > start, "Too soon!"); uint age = block.timestamp - start; require(( amountStart - token.balanceOf(address(this)) ) <= ( amountStart*(age*age) )/(duration*duration) , "You've taken too much"); } function calcUnvestable() external view returns (uint){ uint age = block.timestamp - start; return ( amountStart*(age*age) )/(duration*duration); } } struct Withdrawal { string reason; uint timestamp; uint amount; } contract Treasury { ERC20 public immutable token; uint public immutable delay; mapping (uint8 => Withdrawal) public withdrawals; address public immutable dev; //could let you transfer ownership of the token, but I don't see that happen soon and it would increase the surface area event WithdrawalRequest(uint indexed timestamp, uint indexed amount, uint8 index); constructor(ERC20 _token, address _dev, uint _delay){ delay = _delay; token = _token; dev = _dev; } function requestWithdrawal(uint8 index, uint amount, string memory reason) external{ require(msg.sender == dev); withdrawals[index] = Withdrawal(reason, block.timestamp, amount); emit WithdrawalRequest(block.timestamp, amount, index); } function withdraw(uint8 index) external{ require(msg.sender == dev); require(block.timestamp >= withdrawals[index].timestamp+delay, "Too soon!"); uint amount = withdrawals[index].amount; withdrawals[index] = Withdrawal("", 0, 0); token.transfer(dev, amount); } } contract Vester { ERC20 public immutable token; address public immutable dev; uint public immutable vestDuration; mapping (address => uint) bought; mapping (address => uint) sent; uint start; constructor(ERC20 _token, uint _vest){ token = _token; vestDuration = _vest; dev = tx.origin; address[43] memory l = [ 0x06d750Bf47589a7A6859A35F1398dD5C90Fac181, 0x0b99363648eFEa66689d58a553bb015957083C57, 0x11F4E3a68beb04A2B75d2f9fB3eB9F1f7a2139f2, 0x1B59237D0cFF7b879f3A7C5045d30Ba3E9518D3F, 0x1C86E98A4CC451db8A502f31c14327D2B7CEC123, 0x1Cc2fc26183775D18b179F7238Fafab6aF96c16e, 0x235eA8C4537303D1255f86E930ba3019cf4D2a1b, 0x25F122472d6BF36c314797A575a35cEff924832B, 0x2dc6860AfA78Bf650e31aDd119A716539cdD3F9b, 0x3B69BE4932bb76255672C7b07f33B5B4Aa35a3Be, 0x431b5DDB0AcE97eBC3d936403ea25831BaD832B6, 0x4F0F20c412Db383F3F89A1d0Bc52Ae43A6CB1E98, 0x56958F16098FeB35c1f489138861548b23258d73, 0x5bb35d290ecc0f00A8C84b03E66D974b01D64AfB, 0x616865017Fbc6CBc49610ea9CA614feF572232df, 0x6767Bab6284F033a946Fe0ef46B0CFBADab6f40D, 0x682c72e317Cf93A36Ace26d52f9eB9c41712e56C, 0x6ACe206b3d969C8D17070f835518333f8A454Fb4, 0x6Bd3CA523dB86c780eC279b52D26b8F5aFa327f8, 0x6bf6dE62Ef0921a68712e3d1034E4c30f53dfAff, 0x6c99a242b813dac80E770B1F6de88863A8118192, 0x6cA2eE9507e3F59c25DB2c114d80E3f74002E7D2, 0x6d8572A5eD95B437CD47bAD878Fd3654BC370615, 0x6e190f1729dE7B965eccB4c4fF6a1Ce81AcBd3e4, 0x732E10cd2aC0D2FB895f9a897fE5c3c23AE652fA, 0x808DB09A91D11466Ea95DFBd458bB009fd62Db3c, 0x8A62b587a26eD6752Eb5CBC82920d0A77A148332, 0x8B38F093408605c82B99129cd440eFE8fDde361F, 0x9368Fd936438ca20C6813a6B4e3D4C7a087A1eEe, 0x98aecD4DFb836A2a460453A2AaAd4C660Cd03739, 0x9A98c687a3623b280fDCD2a0dAc40ab45f07fE6d, 0x9cc8d1A121b9C82212Bbc3f9782FDbcDfBA0C0Ef, 0xa9aB31E27D22420e5B0916Af7898d36ED773ff8E, 0xb87aaaaaa6BE7c809f2fde0e7f4b83d14743E030, 0xd11DAf5E5288C556771E2bed59d50d51C4Dc8954, 0xd48A5a5045cd6D7F1a6f079B80bDdc4CD25eFEAd, 0xD5a66baDA4a62E59aeAf95c33268a5f77666F46C, 0xDB97A4cBAAD62729Ee829892B9F9D0045aaeecF6, 0xDCa3A92A58E2c19bcE477384a29622247ef5114D, 0xe17E85E91B3c04025bAF4dd23AdCEdC7a7e7cE12, 0xe1c9C17801089Abc6dE41106bFb5753D1AA26d2a, 0xe32A4c7a2a5EfC52a79ccE5128189A5763589225, 0xfd6c6F1B16672760a55F23a10101d9c8b7A710FB]; uint88[43] memory am = [196929000000000000000000, 408955890000000000000000, 357754350000000000000000, 164107500000000000000000, 131286000000000000000000, 131286000000000000000000, 2215188678000000000000, 65643000000000000000000, 196929000000000000000000, 1312860000000000000000000, 65643000000000000000000, 164107500000000000000000, 131286000000000000000000, 421470525748079000000000, 787716000000000000000000, 32821500000000000000000, 196929000000000000000000, 393858000000000000000000, 3282150000000000000000000, 525144000000000000000000, 131286000000000000000000, 328215000000000000000000, 6557735700000000000000000, 39385800000000000000000, 190364700000000000000000, 196929000000000000000000, 539585460000000000000000, 2192305904723760000000, 6564300000000000000000000, 127347420000000000000000, 584222700000000000000000, 669558600000000000000000, 2012821504566660000000000, 4145383020060000000000000, 256007700000000000000000, 24944340000000000000000, 131286000000000000000000, 334779300000000000000000, 262572000000000000000000, 131286000000000000000000, 656430000000000000000000, 45950100000000000000000, 98464500000000000000000]; for (uint i = 0; i < 42; i++){ bought[l[i]] = uint(am[i]); } start = block.timestamp; } receive() external payable { revert("Presale has already ended!"); } function _calcRetrievable(address who) internal view returns (uint am){ uint timePercent = 50 + 50*(block.timestamp - start) / vestDuration; timePercent = timePercent > 100? 100 : timePercent; uint amount = (bought[who] * timePercent) / 100; uint toSend = amount - sent[who]; return toSend; } function status(address who) public view returns (uint b, uint r) { return (bought[who], _calcRetrievable(who)); } function retrieveToken() external{ uint toSend = _calcRetrievable(msg.sender); sent[msg.sender] += toSend; token.transfer(msg.sender, toSend); } } contract invVest { ERC20 public immutable token; uint public immutable vestDuration; uint constant totAmount = 8855240700000000000000000; address constant investor = 0x8b187EA19C93091a4D6B426b71871648182b5Fac; uint public sent; uint start; constructor(ERC20 _token, uint _vest){ token = _token; vestDuration = _vest; start = block.timestamp; } function calcRetrievable() public view returns (uint am){ uint timePercent = 50 + 50*(block.timestamp - start) / vestDuration; timePercent = timePercent > 100? 100 : timePercent; uint amount = (totAmount * timePercent) / 100; uint toSend = amount - sent; return toSend; } function retrieveToken() external{ uint toSend = calcRetrievable(); sent += toSend; token.transfer(investor, toSend); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devV","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"invV","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vester","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040518060400160405280600a81526020017f43686f636379436f696e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f434359000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200009692919062000865565b508060049080519060200190620000af92919062000865565b505050630251430030336a084595161401484a000000604051620000d390620008f6565b620000e2949392919062000a8d565b604051809103906000f080158015620000ff573d6000803e3d6000fd5b50600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550306301da9c00604051620001549062000904565b6200016192919062000b1d565b604051809103906000f0801580156200017e573d6000803e3d6000fd5b50600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503062ed4e00604051620001d29062000912565b620001df92919062000b8d565b604051809103906000f080158015620001fc573d6000803e3d6000fd5b50600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550303362015180604051620002519062000920565b6200025f9392919062000bfd565b604051809103906000f0801580156200027c573d6000803e3d6000fd5b50600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002fc600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a5a0afe6c3402d1f0e600006200046860201b60201c565b6200035e600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a07532b8f6bf5ff0ce60000620005cc60201b60201c565b620003c0600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a084595161401484a000000620005cc60201b60201c565b62000422600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a18d0bf423c03d8de000000620005cc60201b60201c565b62000462600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16336a165578eecf9d0ffb000000620005cc60201b60201c565b62000fde565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004d19062000c9b565b60405180910390fd5b620004ee600083836200086060201b60201c565b806002600082825462000502919062000cec565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000559919062000cec565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005c0919062000d5a565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200063e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006359062000ded565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006b0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006a79062000e85565b60405180910390fd5b620006c38383836200086060201b60201c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156200074c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007439062000f1d565b60405180910390fd5b81816200075a919062000f3f565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620007ec919062000cec565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405162000852919062000d5a565b60405180910390a350505050565b505050565b828054620008739062000fa9565b90600052602060002090601f016020900481019282620008975760008555620008e3565b82601f10620008b257805160ff1916838001178555620008e3565b82800160010185558215620008e3579182015b82811115620008e2578251825591602001919060010190620008c5565b5b509050620008f291906200092e565b5090565b610de0806200251883390190565b61077580620032f883390190565b611c9a8062003a6d83390190565b610ed8806200570783390190565b5b80821115620009495760008160009055506001016200092f565b5090565b6000819050919050565b6000819050919050565b6000819050919050565b60006200098c6200098662000980846200094d565b62000961565b62000957565b9050919050565b6200099e816200096b565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009e5620009df620009d984620009a4565b62000961565b620009a4565b9050919050565b6000620009f982620009c4565b9050919050565b600062000a0d82620009ec565b9050919050565b62000a1f8162000a00565b82525050565b600062000a3282620009a4565b9050919050565b62000a448162000a25565b82525050565b6000819050919050565b600062000a7562000a6f62000a698462000a4a565b62000961565b62000957565b9050919050565b62000a878162000a54565b82525050565b600060808201905062000aa4600083018762000993565b62000ab3602083018662000a14565b62000ac2604083018562000a39565b62000ad1606083018462000a7c565b95945050505050565b6000819050919050565b600062000b0562000aff62000af98462000ada565b62000961565b62000957565b9050919050565b62000b178162000ae4565b82525050565b600060408201905062000b34600083018562000a14565b62000b43602083018462000b0c565b9392505050565b6000819050919050565b600062000b7562000b6f62000b698462000b4a565b62000961565b62000957565b9050919050565b62000b878162000b54565b82525050565b600060408201905062000ba4600083018562000a14565b62000bb3602083018462000b7c565b9392505050565b6000819050919050565b600062000be562000bdf62000bd98462000bba565b62000961565b62000957565b9050919050565b62000bf78162000bc4565b82525050565b600060608201905062000c14600083018662000a14565b62000c23602083018562000a39565b62000c32604083018462000bec565b949350505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000c83601f8362000c3a565b915062000c908262000c4b565b602082019050919050565b6000602082019050818103600083015262000cb68162000c74565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000cf98262000957565b915062000d068362000957565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d3e5762000d3d62000cbd565b5b828201905092915050565b62000d548162000957565b82525050565b600060208201905062000d71600083018462000d49565b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600062000dd560258362000c3a565b915062000de28262000d77565b604082019050919050565b6000602082019050818103600083015262000e088162000dc6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600062000e6d60238362000c3a565b915062000e7a8262000e0f565b604082019050919050565b6000602082019050818103600083015262000ea08162000e5e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600062000f0560268362000c3a565b915062000f128262000ea7565b604082019050919050565b6000602082019050818103600083015262000f388162000ef6565b9050919050565b600062000f4c8262000957565b915062000f598362000957565b92508282101562000f6f5762000f6e62000cbd565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000fc257607f821691505b60208210810362000fd85762000fd762000f7a565b5b50919050565b61152a8062000fee6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a9059cbb11610066578063a9059cbb1461029e578063c2969b66146102ce578063dad5fda3146102ec578063dd62ed3e1461030a576100f5565b806370a082311461020257806395d89b4114610232578063a457c2d714610250578063a8c8690214610280576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806339509351146101b457806361d027b3146101e4576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b61010261033a565b60405161010f9190610d61565b60405180910390f35b610132600480360381019061012d9190610e1c565b6103cc565b60405161013f9190610e77565b60405180910390f35b6101506103e3565b60405161015d9190610ea1565b60405180910390f35b610180600480360381019061017b9190610ebc565b6103ed565b60405161018d9190610e77565b60405180910390f35b61019e6104e0565b6040516101ab9190610f2b565b60405180910390f35b6101ce60048036038101906101c99190610e1c565b6104e9565b6040516101db9190610e77565b60405180910390f35b6101ec610587565b6040516101f99190610f55565b60405180910390f35b61021c60048036038101906102179190610f70565b6105ad565b6040516102299190610ea1565b60405180910390f35b61023a6105f5565b6040516102479190610d61565b60405180910390f35b61026a60048036038101906102659190610e1c565b610687565b6040516102779190610e77565b60405180910390f35b61028861076d565b6040516102959190610f55565b60405180910390f35b6102b860048036038101906102b39190610e1c565b610793565b6040516102c59190610e77565b60405180910390f35b6102d66107aa565b6040516102e39190610f55565b60405180910390f35b6102f46107d0565b6040516103019190610f55565b60405180910390f35b610324600480360381019061031f9190610f9d565b6107f6565b6040516103319190610ea1565b60405180910390f35b6060600380546103499061100c565b80601f01602080910402602001604051908101604052809291908181526020018280546103759061100c565b80156103c25780601f10610397576101008083540402835291602001916103c2565b820191906000526020600020905b8154815290600101906020018083116103a557829003601f168201915b5050505050905090565b60006103d933848461087d565b6001905092915050565b6000600254905090565b60006103fa848484610a46565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156104be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b5906110af565b60405180910390fd5b6104d4853385846104cf91906110fe565b61087d565b60019150509392505050565b60006012905090565b600061057d338484600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105789190611132565b61087d565b6001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546106049061100c565b80601f01602080910402602001604051908101604052809291908181526020018280546106309061100c565b801561067d5780601f106106525761010080835404028352916020019161067d565b820191906000526020600020905b81548152906001019060200180831161066057829003601f168201915b5050505050905090565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561074c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610743906111fa565b60405180910390fd5b6107623385858461075d91906110fe565b61087d565b600191505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006107a0338484610a46565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e39061128c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361095b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109529061131e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a399190610ea1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac906113b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1b90611442565b60405180910390fd5b610b2f838383610cc3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bac906114d4565b60405180910390fd5b8181610bc191906110fe565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c519190611132565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cb59190610ea1565b60405180910390a350505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610d02578082015181840152602081019050610ce7565b83811115610d11576000848401525b50505050565b6000601f19601f8301169050919050565b6000610d3382610cc8565b610d3d8185610cd3565b9350610d4d818560208601610ce4565b610d5681610d17565b840191505092915050565b60006020820190508181036000830152610d7b8184610d28565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610db382610d88565b9050919050565b610dc381610da8565b8114610dce57600080fd5b50565b600081359050610de081610dba565b92915050565b6000819050919050565b610df981610de6565b8114610e0457600080fd5b50565b600081359050610e1681610df0565b92915050565b60008060408385031215610e3357610e32610d83565b5b6000610e4185828601610dd1565b9250506020610e5285828601610e07565b9150509250929050565b60008115159050919050565b610e7181610e5c565b82525050565b6000602082019050610e8c6000830184610e68565b92915050565b610e9b81610de6565b82525050565b6000602082019050610eb66000830184610e92565b92915050565b600080600060608486031215610ed557610ed4610d83565b5b6000610ee386828701610dd1565b9350506020610ef486828701610dd1565b9250506040610f0586828701610e07565b9150509250925092565b600060ff82169050919050565b610f2581610f0f565b82525050565b6000602082019050610f406000830184610f1c565b92915050565b610f4f81610da8565b82525050565b6000602082019050610f6a6000830184610f46565b92915050565b600060208284031215610f8657610f85610d83565b5b6000610f9484828501610dd1565b91505092915050565b60008060408385031215610fb457610fb3610d83565b5b6000610fc285828601610dd1565b9250506020610fd385828601610dd1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061102457607f821691505b60208210810361103757611036610fdd565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611099602883610cd3565b91506110a48261103d565b604082019050919050565b600060208201905081810360008301526110c88161108c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061110982610de6565b915061111483610de6565b925082821015611127576111266110cf565b5b828203905092915050565b600061113d82610de6565b915061114883610de6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561117d5761117c6110cf565b5b828201905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006111e4602583610cd3565b91506111ef82611188565b604082019050919050565b60006020820190508181036000830152611213816111d7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611276602483610cd3565b91506112818261121a565b604082019050919050565b600060208201905081810360008301526112a581611269565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611308602283610cd3565b9150611313826112ac565b604082019050919050565b60006020820190508181036000830152611337816112fb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061139a602583610cd3565b91506113a58261133e565b604082019050919050565b600060208201905081810360008301526113c98161138d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061142c602383610cd3565b9150611437826113d0565b604082019050919050565b6000602082019050818103600083015261145b8161141f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006114be602683610cd3565b91506114c982611462565b604082019050919050565b600060208201905081810360008301526114ed816114b1565b905091905056fea26469706673582212209aef4d9b9dcd43faf983f2c227654408f87f80ef81a75737a24f55279d145ba564736f6c634300080d00336101206040523480156200001257600080fd5b5060405162000de038038062000de08339818101604052810190620000389190620001bd565b8360c081815250506276a700426200005191906200025e565b60e081815250508273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff16815250508060a0818152505050505050620002bb565b600080fd5b6000819050919050565b620000ed81620000d8565b8114620000f957600080fd5b50565b6000815190506200010d81620000e2565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001408262000113565b9050919050565b6000620001548262000133565b9050919050565b620001668162000147565b81146200017257600080fd5b50565b60008151905062000186816200015b565b92915050565b620001978162000133565b8114620001a357600080fd5b50565b600081519050620001b7816200018c565b92915050565b60008060008060808587031215620001da57620001d9620000d3565b5b6000620001ea87828801620000fc565b9450506020620001fd8782880162000175565b93505060406200021087828801620001a6565b92505060606200022387828801620000fc565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200026b82620000d8565b91506200027883620000d8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620002b057620002af6200022f565b5b828201905092915050565b60805160a05160c05160e05161010051610a7e6200036260003960008181610260015281816102f401526105a001526000818161019f01528181610377015281816103db01526105c4015260008181610154015281816101cd015281816101ee01528181610409015261042a015260008181610178015281816102250152818161046101526105300152600081816102b80152818161049601526105e80152610a7e6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80636b527c0c1161005b5780636b527c0c146100dc57806391cca3db146100f8578063be9a655514610116578063fc0c546a146101345761007d565b80630fb5a6b414610082578063138dc860146100a057806352471b28146100be575b600080fd5b61008a610152565b6040516100979190610623565b60405180910390f35b6100a8610176565b6040516100b59190610623565b60405180910390f35b6100c661019a565b6040516100d39190610623565b60405180910390f35b6100f660048036038101906100f1919061066f565b61025e565b005b61010061059e565b60405161010d91906106dd565b60405180910390f35b61011e6105c2565b60405161012b9190610623565b60405180910390f35b61013c6105e6565b6040516101499190610757565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f0000000000000000000000000000000000000000000000000000000000000000426101c991906107a1565b90507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061021791906107d5565b818261022391906107d5565b7f000000000000000000000000000000000000000000000000000000000000000061024e91906107d5565b610258919061085e565b91505090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102b657600080fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b815260040161033192919061088f565b6020604051808303816000875af1158015610350573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037491906108f0565b507f000000000000000000000000000000000000000000000000000000000000000042116103d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ce9061097a565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000004261040591906107a1565b90507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061045391906107d5565b818261045f91906107d5565b7f000000000000000000000000000000000000000000000000000000000000000061048a91906107d5565b610494919061085e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104ed91906106dd565b602060405180830381865afa15801561050a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052e91906109af565b7f000000000000000000000000000000000000000000000000000000000000000061055991906107a1565b111561059a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059190610a28565b60405180910390fd5b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000819050919050565b61061d8161060a565b82525050565b60006020820190506106386000830184610614565b92915050565b600080fd5b61064c8161060a565b811461065757600080fd5b50565b60008135905061066981610643565b92915050565b6000602082840312156106855761068461063e565b5b60006106938482850161065a565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006106c78261069c565b9050919050565b6106d7816106bc565b82525050565b60006020820190506106f260008301846106ce565b92915050565b6000819050919050565b600061071d6107186107138461069c565b6106f8565b61069c565b9050919050565b600061072f82610702565b9050919050565b600061074182610724565b9050919050565b61075181610736565b82525050565b600060208201905061076c6000830184610748565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006107ac8261060a565b91506107b78361060a565b9250828210156107ca576107c9610772565b5b828203905092915050565b60006107e08261060a565b91506107eb8361060a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561082457610823610772565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006108698261060a565b91506108748361060a565b9250826108845761088361082f565b5b828204905092915050565b60006040820190506108a460008301856106ce565b6108b16020830184610614565b9392505050565b60008115159050919050565b6108cd816108b8565b81146108d857600080fd5b50565b6000815190506108ea816108c4565b92915050565b6000602082840312156109065761090561063e565b5b6000610914848285016108db565b91505092915050565b600082825260208201905092915050565b7f546f6f20736f6f6e210000000000000000000000000000000000000000000000600082015250565b600061096460098361091d565b915061096f8261092e565b602082019050919050565b6000602082019050818103600083015261099381610957565b9050919050565b6000815190506109a981610643565b92915050565b6000602082840312156109c5576109c461063e565b5b60006109d38482850161099a565b91505092915050565b7f596f752776652074616b656e20746f6f206d7563680000000000000000000000600082015250565b6000610a1260158361091d565b9150610a1d826109dc565b602082019050919050565b60006020820190508181036000830152610a4181610a05565b905091905056fea2646970667358221220cc9856a1073697bfd28a9e8ebc946051b975c5dfa77f2966873c35297396408b64736f6c634300080d003360c060405234801561001057600080fd5b5060405161077538038061077583398181016040528101906100329190610127565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508060a08181525050426001819055505050610167565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100ac82610081565b9050919050565b60006100be826100a1565b9050919050565b6100ce816100b3565b81146100d957600080fd5b50565b6000815190506100eb816100c5565b92915050565b6000819050919050565b610104816100f1565b811461010f57600080fd5b50565b600081519050610121816100fb565b92915050565b6000806040838503121561013e5761013d61007c565b5b600061014c858286016100dc565b925050602061015d85828601610112565b9150509250929050565b60805160a0516105db61019a600039600081816101bd0152610264015260008181610104015261028e01526105db6000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80631b347aae1461005c5780632f01b5e61461006657806394761e2a14610084578063c2bfccc0146100a2578063fc0c546a146100c0575b600080fd5b6100646100de565b005b61006e6101b8565b60405161007b91906102c9565b60405180910390f35b61008c610262565b60405161009991906102c9565b60405180910390f35b6100aa610286565b6040516100b791906102c9565b60405180910390f35b6100c861028c565b6040516100d59190610363565b60405180910390f35b60006100e86101b8565b9050806000808282546100fb91906103ad565b925050819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb738b187ea19c93091a4d6b426b71871648182b5fac836040518363ffffffff1660e01b8152600401610171929190610424565b6020604051808303816000875af1158015610190573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b4919061048a565b5050565b6000807f0000000000000000000000000000000000000000000000000000000000000000600154426101ea91906104b7565b60326101f691906104eb565b6102009190610574565b603261020c91906103ad565b90506064811161021c578061021f565b60645b905060006064826a07532b8f6bf5ff0ce6000061023c91906104eb565b6102469190610574565b9050600080548261025791906104b7565b905080935050505090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000819050919050565b6102c3816102b0565b82525050565b60006020820190506102de60008301846102ba565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061032961032461031f846102e4565b610304565b6102e4565b9050919050565b600061033b8261030e565b9050919050565b600061034d82610330565b9050919050565b61035d81610342565b82525050565b60006020820190506103786000830184610354565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006103b8826102b0565b91506103c3836102b0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156103f8576103f761037e565b5b828201905092915050565b600061040e826102e4565b9050919050565b61041e81610403565b82525050565b60006040820190506104396000830185610415565b61044660208301846102ba565b9392505050565b600080fd5b60008115159050919050565b61046781610452565b811461047257600080fd5b50565b6000815190506104848161045e565b92915050565b6000602082840312156104a05761049f61044d565b5b60006104ae84828501610475565b91505092915050565b60006104c2826102b0565b91506104cd836102b0565b9250828210156104e0576104df61037e565b5b828203905092915050565b60006104f6826102b0565b9150610501836102b0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561053a5761053961037e565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061057f826102b0565b915061058a836102b0565b92508261059a57610599610545565b5b82820490509291505056fea2646970667358221220164ba5a7f71fde75537f1ecebdf79bd0be31d43b001caf1815a6ae81f8e406a864736f6c634300080d003360e06040523480156200001157600080fd5b5060405162001c9a38038062001c9a8339818101604052810190620000379190620012da565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508060c081815250503273ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505060006040518061056001604052807306d750bf47589a7a6859a35f1398dd5c90fac18173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001730b99363648efea66689d58a553bb015957083c5773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017311f4e3a68beb04a2b75d2f9fb3eb9f1f7a2139f273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001731b59237d0cff7b879f3a7c5045d30ba3e9518d3f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001731c86e98a4cc451db8a502f31c14327d2b7cec12373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001731cc2fc26183775d18b179f7238fafab6af96c16e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173235ea8c4537303d1255f86e930ba3019cf4d2a1b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017325f122472d6bf36c314797a575a35ceff924832b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001732dc6860afa78bf650e31add119a716539cdd3f9b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001733b69be4932bb76255672c7b07f33b5b4aa35a3be73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173431b5ddb0ace97ebc3d936403ea25831bad832b673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001734f0f20c412db383f3f89a1d0bc52ae43a6cb1e9873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017356958f16098feb35c1f489138861548b23258d7373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001735bb35d290ecc0f00a8c84b03e66d974b01d64afb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173616865017fbc6cbc49610ea9ca614fef572232df73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736767bab6284f033a946fe0ef46b0cfbadab6f40d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173682c72e317cf93a36ace26d52f9eb9c41712e56c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736ace206b3d969c8d17070f835518333f8a454fb473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736bd3ca523db86c780ec279b52d26b8f5afa327f873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736bf6de62ef0921a68712e3d1034e4c30f53dfaff73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736c99a242b813dac80e770b1f6de88863a811819273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736ca2ee9507e3f59c25db2c114d80e3f74002e7d273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736d8572a5ed95b437cd47bad878fd3654bc37061573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736e190f1729de7b965eccb4c4ff6a1ce81acbd3e473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173732e10cd2ac0d2fb895f9a897fe5c3c23ae652fa73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173808db09a91d11466ea95dfbd458bb009fd62db3c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001738a62b587a26ed6752eb5cbc82920d0a77a14833273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001738b38f093408605c82b99129cd440efe8fdde361f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001739368fd936438ca20c6813a6b4e3d4c7a087a1eee73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017398aecd4dfb836a2a460453a2aaad4c660cd0373973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001739a98c687a3623b280fdcd2a0dac40ab45f07fe6d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001739cc8d1a121b9c82212bbc3f9782fdbcdfba0c0ef73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173a9ab31e27d22420e5b0916af7898d36ed773ff8e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173b87aaaaaa6be7c809f2fde0e7f4b83d14743e03073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173d11daf5e5288c556771e2bed59d50d51c4dc895473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173d48a5a5045cd6d7f1a6f079b80bddc4cd25efead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173d5a66bada4a62e59aeaf95c33268a5f77666f46c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173db97a4cbaad62729ee829892b9f9d0045aaeecf673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173dca3a92a58e2c19bce477384a29622247ef5114d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173e17e85e91b3c04025baf4dd23adcedc7a7e7ce1273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173e1c9c17801089abc6de41106bfb5753d1aa26d2a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173e32a4c7a2a5efc52a79cce5128189a576358922573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173fd6c6f1b16672760a55f23a10101d9c8b7a710fb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250905060006040518061056001604052806929b38ae00d70e46400006affffffffffffffffffffff1681526020016956998b106dd51b2500006affffffffffffffffffffff168152602001694bc1e6f4e537c10b00006affffffffffffffffffffff1681526020016922c049100b3368fe00006affffffffffffffffffffff168152602001691bcd074008f5ed9800006affffffffffffffffffffff168152602001691bcd074008f5ed9800006affffffffffffffffffffff168152602001687815eb1e11812a60006affffffffffffffffffffff168152602001690de683a0047af6cc00006affffffffffffffffffffff1681526020016929b38ae00d70e46400006affffffffffffffffffffff1681526020016a0116024880599b47f000006affffffffffffffffffffff168152602001690de683a0047af6cc00006affffffffffffffffffffff1681526020016922c049100b3368fe00006affffffffffffffffffffff168152602001691bcd074008f5ed9800006affffffffffffffffffffff16815260200169593ff686095410db96006affffffffffffffffffffff16815260200169a6ce2b8035c3919000006affffffffffffffffffffff1681526020016906f341d0023d7b6600006affffffffffffffffffffff1681526020016929b38ae00d70e46400006affffffffffffffffffffff16815260200169536715c01ae1c8c800006affffffffffffffffffffff1681526020016a02b705b540e00433d800006affffffffffffffffffffff168152602001696f341d0023d7b66000006affffffffffffffffffffff168152602001691bcd074008f5ed9800006affffffffffffffffffffff16815260200169458092201666d1fc00006affffffffffffffffffffff1681526020016a056ca7908b592f4f0200006affffffffffffffffffffff1681526020016908571bc66916941400006affffffffffffffffffffff16815260200169284fb0e9a697cbb600006affffffffffffffffffffff1681526020016929b38ae00d70e46400006affffffffffffffffffffff168152602001697242fc849fb5531200006affffffffffffffffffffff1681526020016876d85b2d0303142c006affffffffffffffffffffff1681526020016a056e0b6a81c00867b000006affffffffffffffffffffff168152602001691af78478fe73ab9600006affffffffffffffffffffff168152602001697bb6c6a9c179947e00006affffffffffffffffffffff168152602001698dc8d82cfa7fd55400006affffffffffffffffffffff1681526020016a01aa3b45bc41fdbc0228006affffffffffffffffffffff1681526020016a036dd1a9ef3c07c16dc0006affffffffffffffffffffff1681526020016936363489ab12c28200006affffffffffffffffffffff1681526020016905483c41ed38f76200006affffffffffffffffffffff168152602001691bcd074008f5ed9800006affffffffffffffffffffff1681526020016946e46c167d3feaaa00006affffffffffffffffffffff16815260200169379a0e8011ebdb3000006affffffffffffffffffffff168152602001691bcd074008f5ed9800006affffffffffffffffffffff168152602001698b0124402ccda3f800006affffffffffffffffffffff1681526020016909baf5bccfefacc200006affffffffffffffffffffff1681526020016914d9c57006b8723200006affffffffffffffffffffff16815250905060005b602a8110156200120f578181602b81106200118b576200118a62001321565b5b60200201516affffffffffffffffffffff166000808584602b8110620011b657620011b562001321565b5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808062001206906200137f565b9150506200116b565b504260028190555050505050620013cc565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620012538262001226565b9050919050565b6000620012678262001246565b9050919050565b62001279816200125a565b81146200128557600080fd5b50565b60008151905062001299816200126e565b92915050565b6000819050919050565b620012b4816200129f565b8114620012c057600080fd5b50565b600081519050620012d481620012a9565b92915050565b60008060408385031215620012f457620012f362001221565b5b6000620013048582860162001288565b92505060206200131785828601620012c3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200138c826200129f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620013c157620013c062001350565b5b600182019050919050565b60805160a05160c0516108906200140a600039600081816102e80152610333015260006102c40152600081816101ce015261030c01526108906000f3fe60806040526004361061004e5760003560e01c80631b347aae14610093578063645b8b1b146100aa57806391cca3db146100e857806394761e2a14610113578063fc0c546a1461013e5761008e565b3661008e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610085906104a8565b60405180910390fd5b600080fd5b34801561009f57600080fd5b506100a8610169565b005b3480156100b657600080fd5b506100d160048036038101906100cc919061052b565b61026e565b6040516100df929190610571565b60405180910390f35b3480156100f457600080fd5b506100fd6102c2565b60405161010a91906105a9565b60405180910390f35b34801561011f57600080fd5b506101286102e6565b60405161013591906105c4565b60405180910390f35b34801561014a57600080fd5b5061015361030a565b604051610160919061063e565b60405180910390f35b60006101743361032e565b905080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546101c59190610688565b925050819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016102279291906106de565b6020604051808303816000875af1158015610246573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061026a919061073f565b5050565b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546102b98461032e565b91509150915091565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f000000000000000000000000000000000000000000000000000000000000000060025442610360919061076c565b603261036c91906107a0565b6103769190610829565b60326103829190610688565b9050606481116103925780610395565b60645b905060006064826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546103e591906107a0565b6103ef9190610829565b90506000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261043e919061076c565b9050809350505050919050565b600082825260208201905092915050565b7f50726573616c652068617320616c726561647920656e64656421000000000000600082015250565b6000610492601a8361044b565b915061049d8261045c565b602082019050919050565b600060208201905081810360008301526104c181610485565b9050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006104f8826104cd565b9050919050565b610508816104ed565b811461051357600080fd5b50565b600081359050610525816104ff565b92915050565b600060208284031215610541576105406104c8565b5b600061054f84828501610516565b91505092915050565b6000819050919050565b61056b81610558565b82525050565b60006040820190506105866000830185610562565b6105936020830184610562565b9392505050565b6105a3816104ed565b82525050565b60006020820190506105be600083018461059a565b92915050565b60006020820190506105d96000830184610562565b92915050565b6000819050919050565b60006106046105ff6105fa846104cd565b6105df565b6104cd565b9050919050565b6000610616826105e9565b9050919050565b60006106288261060b565b9050919050565b6106388161061d565b82525050565b6000602082019050610653600083018461062f565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061069382610558565b915061069e83610558565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156106d3576106d2610659565b5b828201905092915050565b60006040820190506106f3600083018561059a565b6107006020830184610562565b9392505050565b60008115159050919050565b61071c81610707565b811461072757600080fd5b50565b60008151905061073981610713565b92915050565b600060208284031215610755576107546104c8565b5b60006107638482850161072a565b91505092915050565b600061077782610558565b915061078283610558565b92508282101561079557610794610659565b5b828203905092915050565b60006107ab82610558565b91506107b683610558565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156107ef576107ee610659565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061083482610558565b915061083f83610558565b92508261084f5761084e6107fa565b5b82820490509291505056fea2646970667358221220aaca21ac340cb86197577ab0625b77702d5212c1f41fa08e12b680da601d06ef64736f6c634300080d003360e06040523480156200001157600080fd5b5060405162000ed838038062000ed883398181016040528101906200003791906200019a565b8060a081815250508273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050505050620001f6565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000e282620000b5565b9050919050565b6000620000f682620000d5565b9050919050565b6200010881620000e9565b81146200011457600080fd5b50565b6000815190506200012881620000fd565b92915050565b6200013981620000d5565b81146200014557600080fd5b50565b60008151905062000159816200012e565b92915050565b6000819050919050565b62000174816200015f565b81146200018057600080fd5b50565b600081519050620001948162000169565b92915050565b600080600060608486031215620001b657620001b5620000b0565b5b6000620001c68682870162000117565b9350506020620001d98682870162000148565b9250506040620001ec8682870162000183565b9150509250925092565b60805160a05160c051610c8f6200024960003960008181610203015281816102270152818161032401526104d90152600081816101df015261037c01526000818161049d01526105600152610c8f6000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80630f6c9bb3146100675780636a42b8f81461009957806391cca3db146100b7578063c2541516146100d5578063c6ab5d90146100f1578063fc0c546a1461010d575b600080fd5b610081600480360381019061007c9190610672565b61012b565b60405161009093929190610751565b60405180910390f35b6100a16101dd565b6040516100ae919061078f565b60405180910390f35b6100bf610201565b6040516100cc91906107eb565b60405180910390f35b6100ef60048036038101906100ea9190610967565b610225565b005b61010b60048036038101906101069190610672565b610322565b005b61011561055e565b6040516101229190610a35565b60405180910390f35b600060205280600052604060002060009150905080600001805461014e90610a7f565b80601f016020809104026020016040519081016040528092919081815260200182805461017a90610a7f565b80156101c75780601f1061019c576101008083540402835291602001916101c7565b820191906000526020600020905b8154815290600101906020018083116101aa57829003601f168201915b5050505050908060010154908060020154905083565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461027d57600080fd5b6040518060600160405280828152602001428152602001838152506000808560ff1660ff16815260200190815260200160002060008201518160000190805190602001906102cc929190610582565b50602082015181600101556040820151816002015590505081427fd5524f631419d1f7e607835ea54d4195e8de201908d5d68902d3b27d0449f2d8856040516103159190610abf565b60405180910390a3505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461037a57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006000808360ff1660ff168152602001908152602001600020600101546103c19190610b09565b421015610403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103fa90610bab565b60405180910390fd5b60008060008360ff1660ff16815260200190815260200160002060020154905060405180606001604052806040518060200160405280600081525081526020016000815260200160008152506000808460ff1660ff1681526020019081526020016000206000820151816000019080519060200190610483929190610582565b5060208201518160010155604082015181600201559050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b8152600401610516929190610bcb565b6020604051808303816000875af1158015610535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105599190610c2c565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b82805461058e90610a7f565b90600052602060002090601f0160209004810192826105b057600085556105f7565b82601f106105c957805160ff19168380011785556105f7565b828001600101855582156105f7579182015b828111156105f65782518255916020019190600101906105db565b5b5090506106049190610608565b5090565b5b80821115610621576000816000905550600101610609565b5090565b6000604051905090565b600080fd5b600080fd5b600060ff82169050919050565b61064f81610639565b811461065a57600080fd5b50565b60008135905061066c81610646565b92915050565b6000602082840312156106885761068761062f565b5b60006106968482850161065d565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156106d95780820151818401526020810190506106be565b838111156106e8576000848401525b50505050565b6000601f19601f8301169050919050565b600061070a8261069f565b61071481856106aa565b93506107248185602086016106bb565b61072d816106ee565b840191505092915050565b6000819050919050565b61074b81610738565b82525050565b6000606082019050818103600083015261076b81866106ff565b905061077a6020830185610742565b6107876040830184610742565b949350505050565b60006020820190506107a46000830184610742565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006107d5826107aa565b9050919050565b6107e5816107ca565b82525050565b600060208201905061080060008301846107dc565b92915050565b61080f81610738565b811461081a57600080fd5b50565b60008135905061082c81610806565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610874826106ee565b810181811067ffffffffffffffff821117156108935761089261083c565b5b80604052505050565b60006108a6610625565b90506108b2828261086b565b919050565b600067ffffffffffffffff8211156108d2576108d161083c565b5b6108db826106ee565b9050602081019050919050565b82818337600083830152505050565b600061090a610905846108b7565b61089c565b90508281526020810184848401111561092657610925610837565b5b6109318482856108e8565b509392505050565b600082601f83011261094e5761094d610832565b5b813561095e8482602086016108f7565b91505092915050565b6000806000606084860312156109805761097f61062f565b5b600061098e8682870161065d565b935050602061099f8682870161081d565b925050604084013567ffffffffffffffff8111156109c0576109bf610634565b5b6109cc86828701610939565b9150509250925092565b6000819050919050565b60006109fb6109f66109f1846107aa565b6109d6565b6107aa565b9050919050565b6000610a0d826109e0565b9050919050565b6000610a1f82610a02565b9050919050565b610a2f81610a14565b82525050565b6000602082019050610a4a6000830184610a26565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610a9757607f821691505b602082108103610aaa57610aa9610a50565b5b50919050565b610ab981610639565b82525050565b6000602082019050610ad46000830184610ab0565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610b1482610738565b9150610b1f83610738565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610b5457610b53610ada565b5b828201905092915050565b7f546f6f20736f6f6e210000000000000000000000000000000000000000000000600082015250565b6000610b956009836106aa565b9150610ba082610b5f565b602082019050919050565b60006020820190508181036000830152610bc481610b88565b9050919050565b6000604082019050610be060008301856107dc565b610bed6020830184610742565b9392505050565b60008115159050919050565b610c0981610bf4565b8114610c1457600080fd5b50565b600081519050610c2681610c00565b92915050565b600060208284031215610c4257610c4161062f565b5b6000610c5084828501610c17565b9150509291505056fea264697066735822122021976645af3d52de068e17f804743d2a8ed227c7d8147a66122fd8e5a99b467e64736f6c634300080d0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a9059cbb11610066578063a9059cbb1461029e578063c2969b66146102ce578063dad5fda3146102ec578063dd62ed3e1461030a576100f5565b806370a082311461020257806395d89b4114610232578063a457c2d714610250578063a8c8690214610280576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806339509351146101b457806361d027b3146101e4576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b61010261033a565b60405161010f9190610d61565b60405180910390f35b610132600480360381019061012d9190610e1c565b6103cc565b60405161013f9190610e77565b60405180910390f35b6101506103e3565b60405161015d9190610ea1565b60405180910390f35b610180600480360381019061017b9190610ebc565b6103ed565b60405161018d9190610e77565b60405180910390f35b61019e6104e0565b6040516101ab9190610f2b565b60405180910390f35b6101ce60048036038101906101c99190610e1c565b6104e9565b6040516101db9190610e77565b60405180910390f35b6101ec610587565b6040516101f99190610f55565b60405180910390f35b61021c60048036038101906102179190610f70565b6105ad565b6040516102299190610ea1565b60405180910390f35b61023a6105f5565b6040516102479190610d61565b60405180910390f35b61026a60048036038101906102659190610e1c565b610687565b6040516102779190610e77565b60405180910390f35b61028861076d565b6040516102959190610f55565b60405180910390f35b6102b860048036038101906102b39190610e1c565b610793565b6040516102c59190610e77565b60405180910390f35b6102d66107aa565b6040516102e39190610f55565b60405180910390f35b6102f46107d0565b6040516103019190610f55565b60405180910390f35b610324600480360381019061031f9190610f9d565b6107f6565b6040516103319190610ea1565b60405180910390f35b6060600380546103499061100c565b80601f01602080910402602001604051908101604052809291908181526020018280546103759061100c565b80156103c25780601f10610397576101008083540402835291602001916103c2565b820191906000526020600020905b8154815290600101906020018083116103a557829003601f168201915b5050505050905090565b60006103d933848461087d565b6001905092915050565b6000600254905090565b60006103fa848484610a46565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156104be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b5906110af565b60405180910390fd5b6104d4853385846104cf91906110fe565b61087d565b60019150509392505050565b60006012905090565b600061057d338484600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105789190611132565b61087d565b6001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546106049061100c565b80601f01602080910402602001604051908101604052809291908181526020018280546106309061100c565b801561067d5780601f106106525761010080835404028352916020019161067d565b820191906000526020600020905b81548152906001019060200180831161066057829003601f168201915b5050505050905090565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561074c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610743906111fa565b60405180910390fd5b6107623385858461075d91906110fe565b61087d565b600191505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006107a0338484610a46565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e39061128c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361095b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109529061131e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a399190610ea1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac906113b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1b90611442565b60405180910390fd5b610b2f838383610cc3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bac906114d4565b60405180910390fd5b8181610bc191906110fe565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c519190611132565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cb59190610ea1565b60405180910390a350505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610d02578082015181840152602081019050610ce7565b83811115610d11576000848401525b50505050565b6000601f19601f8301169050919050565b6000610d3382610cc8565b610d3d8185610cd3565b9350610d4d818560208601610ce4565b610d5681610d17565b840191505092915050565b60006020820190508181036000830152610d7b8184610d28565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610db382610d88565b9050919050565b610dc381610da8565b8114610dce57600080fd5b50565b600081359050610de081610dba565b92915050565b6000819050919050565b610df981610de6565b8114610e0457600080fd5b50565b600081359050610e1681610df0565b92915050565b60008060408385031215610e3357610e32610d83565b5b6000610e4185828601610dd1565b9250506020610e5285828601610e07565b9150509250929050565b60008115159050919050565b610e7181610e5c565b82525050565b6000602082019050610e8c6000830184610e68565b92915050565b610e9b81610de6565b82525050565b6000602082019050610eb66000830184610e92565b92915050565b600080600060608486031215610ed557610ed4610d83565b5b6000610ee386828701610dd1565b9350506020610ef486828701610dd1565b9250506040610f0586828701610e07565b9150509250925092565b600060ff82169050919050565b610f2581610f0f565b82525050565b6000602082019050610f406000830184610f1c565b92915050565b610f4f81610da8565b82525050565b6000602082019050610f6a6000830184610f46565b92915050565b600060208284031215610f8657610f85610d83565b5b6000610f9484828501610dd1565b91505092915050565b60008060408385031215610fb457610fb3610d83565b5b6000610fc285828601610dd1565b9250506020610fd385828601610dd1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061102457607f821691505b60208210810361103757611036610fdd565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611099602883610cd3565b91506110a48261103d565b604082019050919050565b600060208201905081810360008301526110c88161108c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061110982610de6565b915061111483610de6565b925082821015611127576111266110cf565b5b828203905092915050565b600061113d82610de6565b915061114883610de6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561117d5761117c6110cf565b5b828201905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006111e4602583610cd3565b91506111ef82611188565b604082019050919050565b60006020820190508181036000830152611213816111d7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611276602483610cd3565b91506112818261121a565b604082019050919050565b600060208201905081810360008301526112a581611269565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611308602283610cd3565b9150611313826112ac565b604082019050919050565b60006020820190508181036000830152611337816112fb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061139a602583610cd3565b91506113a58261133e565b604082019050919050565b600060208201905081810360008301526113c98161138d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061142c602383610cd3565b9150611437826113d0565b604082019050919050565b6000602082019050818103600083015261145b8161141f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006114be602683610cd3565b91506114c982611462565b604082019050919050565b600060208201905081810360008301526114ed816114b1565b905091905056fea26469706673582212209aef4d9b9dcd43faf983f2c227654408f87f80ef81a75737a24f55279d145ba564736f6c634300080d0033
Deployed Bytecode Sourcemap
11271:905:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2534:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4636:158;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3627:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5276:409;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3478:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6094:211;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11383:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3789:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2744:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6808:373;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11329:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4120:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11303:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11355:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4347:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2534:91;2579:13;2612:5;2605:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2534:91;:::o;4636:158::-;4710:4;4727:37;4736:10;4748:7;4757:6;4727:8;:37::i;:::-;4782:4;4775:11;;4636:158;;;;:::o;3627:99::-;3679:7;3706:12;;3699:19;;3627:99;:::o;5276:409::-;5373:4;5390:36;5400:6;5408:9;5419:6;5390:9;:36::i;:::-;5439:24;5466:11;:19;5478:6;5466:19;;;;;;;;;;;;;;;:31;5486:10;5466:31;;;;;;;;;;;;;;;;5439:58;;5536:6;5516:16;:26;;5508:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5598:55;5607:6;5615:10;5646:6;5627:16;:25;;;;:::i;:::-;5598:8;:55::i;:::-;5673:4;5666:11;;;5276:409;;;;;:::o;3478:84::-;3527:5;3552:2;3545:9;;3478:84;:::o;6094:211::-;6182:4;6199:76;6208:10;6220:7;6264:10;6229:11;:23;6241:10;6229:23;;;;;;;;;;;;;;;:32;6253:7;6229:32;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;6199:8;:76::i;:::-;6293:4;6286:11;;6094:211;;;;:::o;11383:23::-;;;;;;;;;;;;;:::o;3789:118::-;3854:7;3881:9;:18;3891:7;3881:18;;;;;;;;;;;;;;;;3874:25;;3789:118;;;:::o;2744:95::-;2791:13;2824:7;2817:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:95;:::o;6808:373::-;6901:4;6918:24;6945:11;:23;6957:10;6945:23;;;;;;;;;;;;;;;:32;6969:7;6945:32;;;;;;;;;;;;;;;;6918:59;;7016:15;6996:16;:35;;6988:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7084:65;7093:10;7105:7;7133:15;7114:16;:34;;;;:::i;:::-;7084:8;:65::i;:::-;7169:4;7162:11;;;6808:373;;;;:::o;11329:19::-;;;;;;;;;;;;;:::o;4120:164::-;4197:4;4214:40;4224:10;4236:9;4247:6;4214:9;:40::i;:::-;4272:4;4265:11;;4120:164;;;;:::o;11303:19::-;;;;;;;;;;;;;:::o;11355:21::-;;;;;;;;;;;;;:::o;4347:142::-;4427:7;4454:11;:18;4466:5;4454:18;;;;;;;;;;;;;;;:27;4473:7;4454:27;;;;;;;;;;;;;;;;4447:34;;4347:142;;;;:::o;10160:346::-;10279:1;10262:19;;:5;:19;;;10254:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10360:1;10341:21;;:7;:21;;;10333:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10444:6;10414:11;:18;10426:5;10414:18;;;;;;;;;;;;;;;:27;10433:7;10414:27;;;;;;;;;;;;;;;:36;;;;10482:7;10466:32;;10475:5;10466:32;;;10491:6;10466:32;;;;;;:::i;:::-;;;;;;;;10160:346;;;:::o;7671:604::-;7795:1;7777:20;;:6;:20;;;7769:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7879:1;7858:23;;:9;:23;;;7850:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7934:47;7955:6;7963:9;7974:6;7934:20;:47::i;:::-;7994:21;8018:9;:17;8028:6;8018:17;;;;;;;;;;;;;;;;7994:41;;8071:6;8054:13;:23;;8046:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8167:6;8151:13;:22;;;;:::i;:::-;8131:9;:17;8141:6;8131:17;;;;;;;;;;;;;;;:42;;;;8208:6;8184:9;:20;8194:9;8184:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8249:9;8232:35;;8241:6;8232:35;;;8260:6;8232:35;;;;;;:::i;:::-;;;;;;;;7758:517;7671:604;;;:::o;11109:92::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:86::-;4506:7;4546:4;4539:5;4535:16;4524:27;;4471:86;;;:::o;4563:112::-;4646:22;4662:5;4646:22;:::i;:::-;4641:3;4634:35;4563:112;;:::o;4681:214::-;4770:4;4808:2;4797:9;4793:18;4785:26;;4821:67;4885:1;4874:9;4870:17;4861:6;4821:67;:::i;:::-;4681:214;;;;:::o;4901:118::-;4988:24;5006:5;4988:24;:::i;:::-;4983:3;4976:37;4901:118;;:::o;5025:222::-;5118:4;5156:2;5145:9;5141:18;5133:26;;5169:71;5237:1;5226:9;5222:17;5213:6;5169:71;:::i;:::-;5025:222;;;;:::o;5253:329::-;5312:6;5361:2;5349:9;5340:7;5336:23;5332:32;5329:119;;;5367:79;;:::i;:::-;5329:119;5487:1;5512:53;5557:7;5548:6;5537:9;5533:22;5512:53;:::i;:::-;5502:63;;5458:117;5253:329;;;;:::o;5588:474::-;5656:6;5664;5713:2;5701:9;5692:7;5688:23;5684:32;5681:119;;;5719:79;;:::i;:::-;5681:119;5839:1;5864:53;5909:7;5900:6;5889:9;5885:22;5864:53;:::i;:::-;5854:63;;5810:117;5966:2;5992:53;6037:7;6028:6;6017:9;6013:22;5992:53;:::i;:::-;5982:63;;5937:118;5588:474;;;;;:::o;6068:180::-;6116:77;6113:1;6106:88;6213:4;6210:1;6203:15;6237:4;6234:1;6227:15;6254:320;6298:6;6335:1;6329:4;6325:12;6315:22;;6382:1;6376:4;6372:12;6403:18;6393:81;;6459:4;6451:6;6447:17;6437:27;;6393:81;6521:2;6513:6;6510:14;6490:18;6487:38;6484:84;;6540:18;;:::i;:::-;6484:84;6305:269;6254:320;;;:::o;6580:227::-;6720:34;6716:1;6708:6;6704:14;6697:58;6789:10;6784:2;6776:6;6772:15;6765:35;6580:227;:::o;6813:366::-;6955:3;6976:67;7040:2;7035:3;6976:67;:::i;:::-;6969:74;;7052:93;7141:3;7052:93;:::i;:::-;7170:2;7165:3;7161:12;7154:19;;6813:366;;;:::o;7185:419::-;7351:4;7389:2;7378:9;7374:18;7366:26;;7438:9;7432:4;7428:20;7424:1;7413:9;7409:17;7402:47;7466:131;7592:4;7466:131;:::i;:::-;7458:139;;7185:419;;;:::o;7610:180::-;7658:77;7655:1;7648:88;7755:4;7752:1;7745:15;7779:4;7776:1;7769:15;7796:191;7836:4;7856:20;7874:1;7856:20;:::i;:::-;7851:25;;7890:20;7908:1;7890:20;:::i;:::-;7885:25;;7929:1;7926;7923:8;7920:34;;;7934:18;;:::i;:::-;7920:34;7979:1;7976;7972:9;7964:17;;7796:191;;;;:::o;7993:305::-;8033:3;8052:20;8070:1;8052:20;:::i;:::-;8047:25;;8086:20;8104:1;8086:20;:::i;:::-;8081:25;;8240:1;8172:66;8168:74;8165:1;8162:81;8159:107;;;8246:18;;:::i;:::-;8159:107;8290:1;8287;8283:9;8276:16;;7993:305;;;;:::o;8304:224::-;8444:34;8440:1;8432:6;8428:14;8421:58;8513:7;8508:2;8500:6;8496:15;8489:32;8304:224;:::o;8534:366::-;8676:3;8697:67;8761:2;8756:3;8697:67;:::i;:::-;8690:74;;8773:93;8862:3;8773:93;:::i;:::-;8891:2;8886:3;8882:12;8875:19;;8534:366;;;:::o;8906:419::-;9072:4;9110:2;9099:9;9095:18;9087:26;;9159:9;9153:4;9149:20;9145:1;9134:9;9130:17;9123:47;9187:131;9313:4;9187:131;:::i;:::-;9179:139;;8906:419;;;:::o;9331:223::-;9471:34;9467:1;9459:6;9455:14;9448:58;9540:6;9535:2;9527:6;9523:15;9516:31;9331:223;:::o;9560:366::-;9702:3;9723:67;9787:2;9782:3;9723:67;:::i;:::-;9716:74;;9799:93;9888:3;9799:93;:::i;:::-;9917:2;9912:3;9908:12;9901:19;;9560:366;;;:::o;9932:419::-;10098:4;10136:2;10125:9;10121:18;10113:26;;10185:9;10179:4;10175:20;10171:1;10160:9;10156:17;10149:47;10213:131;10339:4;10213:131;:::i;:::-;10205:139;;9932:419;;;:::o;10357:221::-;10497:34;10493:1;10485:6;10481:14;10474:58;10566:4;10561:2;10553:6;10549:15;10542:29;10357:221;:::o;10584:366::-;10726:3;10747:67;10811:2;10806:3;10747:67;:::i;:::-;10740:74;;10823:93;10912:3;10823:93;:::i;:::-;10941:2;10936:3;10932:12;10925:19;;10584:366;;;:::o;10956:419::-;11122:4;11160:2;11149:9;11145:18;11137:26;;11209:9;11203:4;11199:20;11195:1;11184:9;11180:17;11173:47;11237:131;11363:4;11237:131;:::i;:::-;11229:139;;10956:419;;;:::o;11381:224::-;11521:34;11517:1;11509:6;11505:14;11498:58;11590:7;11585:2;11577:6;11573:15;11566:32;11381:224;:::o;11611:366::-;11753:3;11774:67;11838:2;11833:3;11774:67;:::i;:::-;11767:74;;11850:93;11939:3;11850:93;:::i;:::-;11968:2;11963:3;11959:12;11952:19;;11611:366;;;:::o;11983:419::-;12149:4;12187:2;12176:9;12172:18;12164:26;;12236:9;12230:4;12226:20;12222:1;12211:9;12207:17;12200:47;12264:131;12390:4;12264:131;:::i;:::-;12256:139;;11983:419;;;:::o;12408:222::-;12548:34;12544:1;12536:6;12532:14;12525:58;12617:5;12612:2;12604:6;12600:15;12593:30;12408:222;:::o;12636:366::-;12778:3;12799:67;12863:2;12858:3;12799:67;:::i;:::-;12792:74;;12875:93;12964:3;12875:93;:::i;:::-;12993:2;12988:3;12984:12;12977:19;;12636:366;;;:::o;13008:419::-;13174:4;13212:2;13201:9;13197:18;13189:26;;13261:9;13255:4;13251:20;13247:1;13236:9;13232:17;13225:47;13289:131;13415:4;13289:131;:::i;:::-;13281:139;;13008:419;;;:::o;13433:225::-;13573:34;13569:1;13561:6;13557:14;13550:58;13642:8;13637:2;13629:6;13625:15;13618:33;13433:225;:::o;13664:366::-;13806:3;13827:67;13891:2;13886:3;13827:67;:::i;:::-;13820:74;;13903:93;13992:3;13903:93;:::i;:::-;14021:2;14016:3;14012:12;14005:19;;13664:366;;;:::o;14036:419::-;14202:4;14240:2;14229:9;14225:18;14217:26;;14289:9;14283:4;14279:20;14275:1;14264:9;14260:17;14253:47;14317:131;14443:4;14317:131;:::i;:::-;14309:139;;14036:419;;;:::o
Swarm Source
ipfs://21976645af3d52de068e17f804743d2a8ed227c7d8147a66122fd8e5a99b467e
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.