ERC-20
Overview
Max Total Supply
0.000000000000116985 FFOOD
Holders
20
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000000000006164 FFOODValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FishFood
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-02-16 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @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); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two 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 override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override 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 * overridden; * * 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 override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override 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 override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), 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}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * 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 override returns (bool) { uint256 currentAllowance = _allowances[sender][_msgSender()]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } } _transfer(sender, recipient, 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(_msgSender(), spender, _allowances[_msgSender()][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[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This 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"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(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: * * - `account` 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); _afterTokenTransfer(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"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(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 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 {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been 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 _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } interface IFishTank { function fishTanksOwned(address owner) external view returns(uint256); } contract FishFood is ERC20, Ownable { IFishTank public FishTank; uint256 constant public BASE_RATE = 100 wei; uint256 public START; bool pauseRewards = false; mapping(address => uint256) public rewards; mapping(address => uint256) public lastUpdate; mapping(address => bool) public allowedAddresses; constructor() ERC20("FishFood", "FFOOD") { START = block.timestamp; } function setFishTank(address fishTankAddress) external onlyOwner { FishTank = IFishTank(fishTankAddress); } function updateReward(address from, address to) external { require(msg.sender == address(FishTank)); if(from != address(0)){ rewards[from] += getPendingReward(from); lastUpdate[from] = block.timestamp; } if(to != address(0)){ rewards[to] += getPendingReward(to); lastUpdate[to] = block.timestamp; } } function burn(address user, uint256 amount) external { require(allowedAddresses[msg.sender] || msg.sender == address(FishTank), "Address does not have permission to burn"); _burn(user, amount); } function claimReward() external { require(!pauseRewards, "Claiming reward has been paused"); _mint(msg.sender, rewards[msg.sender] + getPendingReward(msg.sender)); rewards[msg.sender] = 0; lastUpdate[msg.sender] = block.timestamp; } function getPendingReward(address user) internal view returns(uint256) { return FishTank.fishTanksOwned(user) * BASE_RATE * (block.timestamp - (lastUpdate[user] >= START ? lastUpdate[user] : START)) / 86400; } function getTotalClaimable(address user) external view returns(uint256) { return rewards[user] + getPendingReward(user); } function setAllowedAddresses(address _address, bool _access) public onlyOwner { allowedAddresses[_address] = _access; } function pauseReward() public onlyOwner{ pauseRewards = !pauseRewards; } function giftTokens(address reciever, uint256 giftAmount) public onlyOwner{ _mint(reciever, giftAmount); } function tokenGiftList(address[] calldata giftAddresses, uint256[] calldata giftAmount) external onlyOwner { for(uint256 i; i < giftAddresses.length; i++){ giftTokens(giftAddresses[i], giftAmount[i]); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":[],"name":"BASE_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FishTank","outputs":[{"internalType":"contract IFishTank","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"START","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":"","type":"address"}],"name":"allowedAddresses","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"user","type":"address"}],"name":"getTotalClaimable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"reciever","type":"address"},{"internalType":"uint256","name":"giftAmount","type":"uint256"}],"name":"giftTokens","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"","type":"address"}],"name":"lastUpdate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_access","type":"bool"}],"name":"setAllowedAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fishTankAddress","type":"address"}],"name":"setFishTank","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"giftAddresses","type":"address[]"},{"internalType":"uint256[]","name":"giftAmount","type":"uint256[]"}],"name":"tokenGiftList","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"updateReward","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000600860006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506040518060400160405280600881526020017f46697368466f6f640000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f46464f4f440000000000000000000000000000000000000000000000000000008152508160039080519060200190620000b1929190620001c8565b508060049080519060200190620000ca929190620001c8565b505050620000ed620000e1620000fa60201b60201c565b6200010260201b60201c565b42600781905550620002dd565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001d69062000278565b90600052602060002090601f016020900481019282620001fa576000855562000246565b82601f106200021557805160ff191683800117855562000246565b8280016001018555821562000246579182015b828111156200024557825182559160200191906001019062000228565b5b50905062000255919062000259565b5090565b5b80821115620002745760008160009055506001016200025a565b5090565b600060028204905060018216806200029157607f821691505b60208210811415620002a857620002a7620002ae565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b612e6180620002ed6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80638978191211610104578063ba9a061a116100a2578063d6ab6b9b11610071578063d6ab6b9b14610544578063dd62ed3e14610560578063de524be814610590578063f2fde38b1461059a576101cf565b8063ba9a061a146104be578063c4c50acf146104dc578063cb03fb1e146104f8578063d230af3a14610528576101cf565b80639dc29fac116100de5780639dc29fac14610438578063a457c2d714610454578063a9059cbb14610484578063b88a802f146104b4576101cf565b806389781912146103e05780638da5cb5b146103fc57806395d89b411461041a576101cf565b80632d5151ed116101715780634120657a1161014b5780634120657a1461035857806341910f901461038857806370a08231146103a6578063715018a6146103d6576101cf565b80632d5151ed146102ee578063313ce5671461030a5780633950935114610328576101cf565b80630ad08d0e116101ad5780630ad08d0e1461025257806318160ddd1461027057806323b872dd1461028e578063267e8ab6146102be576101cf565b806306fdde03146101d45780630700037d146101f2578063095ea7b314610222575b600080fd5b6101dc6105b6565b6040516101e9919061249e565b60405180910390f35b61020c60048036038101906102079190611ff1565b610648565b6040516102199190612680565b60405180910390f35b61023c600480360381019061023791906120f1565b610660565b6040516102499190612468565b60405180910390f35b61025a61067e565b6040516102679190612483565b60405180910390f35b6102786106a4565b6040516102859190612680565b60405180910390f35b6102a860048036038101906102a3919061205e565b6106ae565b6040516102b59190612468565b60405180910390f35b6102d860048036038101906102d39190611ff1565b6107cd565b6040516102e59190612680565b60405180910390f35b61030860048036038101906103039190612131565b610829565b005b610312610917565b60405161031f919061269b565b60405180910390f35b610342600480360381019061033d91906120f1565b610920565b60405161034f9190612468565b60405180910390f35b610372600480360381019061036d9190611ff1565b6109cc565b60405161037f9190612468565b60405180910390f35b6103906109ec565b60405161039d9190612680565b60405180910390f35b6103c060048036038101906103bb9190611ff1565b6109f1565b6040516103cd9190612680565b60405180910390f35b6103de610a39565b005b6103fa60048036038101906103f591906120b1565b610ac1565b005b610404610b98565b604051610411919061244d565b60405180910390f35b610422610bc2565b60405161042f919061249e565b60405180910390f35b610452600480360381019061044d91906120f1565b610c54565b005b61046e600480360381019061046991906120f1565b610d46565b60405161047b9190612468565b60405180910390f35b61049e600480360381019061049991906120f1565b610e31565b6040516104ab9190612468565b60405180910390f35b6104bc610e4f565b005b6104c6610f86565b6040516104d39190612680565b60405180910390f35b6104f660048036038101906104f191906120f1565b610f8c565b005b610512600480360381019061050d9190611ff1565b611016565b60405161051f9190612680565b60405180910390f35b610542600480360381019061053d919061201e565b61102e565b005b61055e60048036038101906105599190611ff1565b61123a565b005b61057a6004803603810190610575919061201e565b6112fa565b6040516105879190612680565b60405180910390f35b610598611381565b005b6105b460048036038101906105af9190611ff1565b611429565b005b6060600380546105c5906128a5565b80601f01602080910402602001604051908101604052809291908181526020018280546105f1906128a5565b801561063e5780601f106106135761010080835404028352916020019161063e565b820191906000526020600020905b81548152906001019060200180831161062157829003601f168201915b5050505050905090565b60096020528060005260406000206000915090505481565b600061067461066d611521565b8484611529565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106fa611521565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107b657828110156107a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610798906125a0565b60405180910390fd5b6107b5856107ad611521565b858403611529565b5b6107c18585856116f4565b60019150509392505050565b60006107d882611975565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461082291906126d2565b9050919050565b610831611521565b73ffffffffffffffffffffffffffffffffffffffff1661084f610b98565b73ffffffffffffffffffffffffffffffffffffffff16146108a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089c906125c0565b60405180910390fd5b60005b84849050811015610910576108fd8585838181106108c9576108c86129ad565b5b90506020020160208101906108de9190611ff1565b8484848181106108f1576108f06129ad565b5b90506020020135610f8c565b8080610908906128d7565b9150506108a8565b5050505050565b60006012905090565b60006109c261092d611521565b84846001600061093b611521565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109bd91906126d2565b611529565b6001905092915050565b600b6020528060005260406000206000915054906101000a900460ff1681565b606481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a41611521565b73ffffffffffffffffffffffffffffffffffffffff16610a5f610b98565b73ffffffffffffffffffffffffffffffffffffffff1614610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac906125c0565b60405180910390fd5b610abf6000611aea565b565b610ac9611521565b73ffffffffffffffffffffffffffffffffffffffff16610ae7610b98565b73ffffffffffffffffffffffffffffffffffffffff1614610b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b34906125c0565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610bd1906128a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610bfd906128a5565b8015610c4a5780601f10610c1f57610100808354040283529160200191610c4a565b820191906000526020600020905b815481529060010190602001808311610c2d57829003601f168201915b5050505050905090565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610cf95750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2f90612540565b60405180910390fd5b610d428282611bb0565b5050565b60008060016000610d55611521565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0990612640565b60405180910390fd5b610e26610e1d611521565b85858403611529565b600191505092915050565b6000610e45610e3e611521565b84846116f4565b6001905092915050565b600860009054906101000a900460ff1615610e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9690612580565b60405180910390fd5b610efb33610eac33611975565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ef691906126d2565b611d87565b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60075481565b610f94611521565b73ffffffffffffffffffffffffffffffffffffffff16610fb2610b98565b73ffffffffffffffffffffffffffffffffffffffff1614611008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fff906125c0565b60405180910390fd5b6110128282611d87565b5050565b600a6020528060005260406000206000915090505481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461108857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461115f576110c582611975565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461111391906126d2565b9250508190555042600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146112365761119c81611975565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111ea91906126d2565b9250508190555042600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b611242611521565b73ffffffffffffffffffffffffffffffffffffffff16611260610b98565b73ffffffffffffffffffffffffffffffffffffffff16146112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad906125c0565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611389611521565b73ffffffffffffffffffffffffffffffffffffffff166113a7610b98565b73ffffffffffffffffffffffffffffffffffffffff16146113fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f4906125c0565b60405180910390fd5b600860009054906101000a900460ff1615600860006101000a81548160ff021916908315150217905550565b611431611521565b73ffffffffffffffffffffffffffffffffffffffff1661144f610b98565b73ffffffffffffffffffffffffffffffffffffffff16146114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c906125c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150c90612500565b60405180910390fd5b61151e81611aea565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159090612620565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160090612520565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116e79190612680565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175b90612600565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cb906124c0565b60405180910390fd5b6117df838383611ee7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185c90612560565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118f891906126d2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161195c9190612680565b60405180910390a361196f848484611eec565b50505050565b600062015180600754600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156119cc57600754611a0d565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020545b42611a1891906127b3565b6064600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632bbf3b32866040518263ffffffff1660e01b8152600401611a75919061244d565b60206040518083038186803b158015611a8d57600080fd5b505afa158015611aa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac591906121b2565b611acf9190612759565b611ad99190612759565b611ae39190612728565b9050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c17906125e0565b60405180910390fd5b611c2c82600083611ee7565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca9906124e0565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611d0991906127b3565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d6e9190612680565b60405180910390a3611d8283600084611eec565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dee90612660565b60405180910390fd5b611e0360008383611ee7565b8060026000828254611e1591906126d2565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e6a91906126d2565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ecf9190612680565b60405180910390a3611ee360008383611eec565b5050565b505050565b505050565b600081359050611f0081612de6565b92915050565b60008083601f840112611f1c57611f1b6129e1565b5b8235905067ffffffffffffffff811115611f3957611f386129dc565b5b602083019150836020820283011115611f5557611f546129e6565b5b9250929050565b60008083601f840112611f7257611f716129e1565b5b8235905067ffffffffffffffff811115611f8f57611f8e6129dc565b5b602083019150836020820283011115611fab57611faa6129e6565b5b9250929050565b600081359050611fc181612dfd565b92915050565b600081359050611fd681612e14565b92915050565b600081519050611feb81612e14565b92915050565b600060208284031215612007576120066129f0565b5b600061201584828501611ef1565b91505092915050565b60008060408385031215612035576120346129f0565b5b600061204385828601611ef1565b925050602061205485828601611ef1565b9150509250929050565b600080600060608486031215612077576120766129f0565b5b600061208586828701611ef1565b935050602061209686828701611ef1565b92505060406120a786828701611fc7565b9150509250925092565b600080604083850312156120c8576120c76129f0565b5b60006120d685828601611ef1565b92505060206120e785828601611fb2565b9150509250929050565b60008060408385031215612108576121076129f0565b5b600061211685828601611ef1565b925050602061212785828601611fc7565b9150509250929050565b6000806000806040858703121561214b5761214a6129f0565b5b600085013567ffffffffffffffff811115612169576121686129eb565b5b61217587828801611f06565b9450945050602085013567ffffffffffffffff811115612198576121976129eb565b5b6121a487828801611f5c565b925092505092959194509250565b6000602082840312156121c8576121c76129f0565b5b60006121d684828501611fdc565b91505092915050565b6121e8816127e7565b82525050565b6121f7816127f9565b82525050565b6122068161283c565b82525050565b6000612217826126b6565b61222181856126c1565b9350612231818560208601612872565b61223a816129f5565b840191505092915050565b60006122526023836126c1565b915061225d82612a06565b604082019050919050565b60006122756022836126c1565b915061228082612a55565b604082019050919050565b60006122986026836126c1565b91506122a382612aa4565b604082019050919050565b60006122bb6022836126c1565b91506122c682612af3565b604082019050919050565b60006122de6028836126c1565b91506122e982612b42565b604082019050919050565b60006123016026836126c1565b915061230c82612b91565b604082019050919050565b6000612324601f836126c1565b915061232f82612be0565b602082019050919050565b60006123476028836126c1565b915061235282612c09565b604082019050919050565b600061236a6020836126c1565b915061237582612c58565b602082019050919050565b600061238d6021836126c1565b915061239882612c81565b604082019050919050565b60006123b06025836126c1565b91506123bb82612cd0565b604082019050919050565b60006123d36024836126c1565b91506123de82612d1f565b604082019050919050565b60006123f66025836126c1565b915061240182612d6e565b604082019050919050565b6000612419601f836126c1565b915061242482612dbd565b602082019050919050565b61243881612825565b82525050565b6124478161282f565b82525050565b600060208201905061246260008301846121df565b92915050565b600060208201905061247d60008301846121ee565b92915050565b600060208201905061249860008301846121fd565b92915050565b600060208201905081810360008301526124b8818461220c565b905092915050565b600060208201905081810360008301526124d981612245565b9050919050565b600060208201905081810360008301526124f981612268565b9050919050565b600060208201905081810360008301526125198161228b565b9050919050565b60006020820190508181036000830152612539816122ae565b9050919050565b60006020820190508181036000830152612559816122d1565b9050919050565b60006020820190508181036000830152612579816122f4565b9050919050565b6000602082019050818103600083015261259981612317565b9050919050565b600060208201905081810360008301526125b98161233a565b9050919050565b600060208201905081810360008301526125d98161235d565b9050919050565b600060208201905081810360008301526125f981612380565b9050919050565b60006020820190508181036000830152612619816123a3565b9050919050565b60006020820190508181036000830152612639816123c6565b9050919050565b60006020820190508181036000830152612659816123e9565b9050919050565b600060208201905081810360008301526126798161240c565b9050919050565b6000602082019050612695600083018461242f565b92915050565b60006020820190506126b0600083018461243e565b92915050565b600081519050919050565b600082825260208201905092915050565b60006126dd82612825565b91506126e883612825565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561271d5761271c612920565b5b828201905092915050565b600061273382612825565b915061273e83612825565b92508261274e5761274d61294f565b5b828204905092915050565b600061276482612825565b915061276f83612825565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156127a8576127a7612920565b5b828202905092915050565b60006127be82612825565b91506127c983612825565b9250828210156127dc576127db612920565b5b828203905092915050565b60006127f282612805565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006128478261284e565b9050919050565b600061285982612860565b9050919050565b600061286b82612805565b9050919050565b60005b83811015612890578082015181840152602081019050612875565b8381111561289f576000848401525b50505050565b600060028204905060018216806128bd57607f821691505b602082108114156128d1576128d061297e565b5b50919050565b60006128e282612825565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561291557612914612920565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4164647265737320646f6573206e6f742068617665207065726d697373696f6e60008201527f20746f206275726e000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f436c61696d696e672072657761726420686173206265656e2070617573656400600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b612def816127e7565b8114612dfa57600080fd5b50565b612e06816127f9565b8114612e1157600080fd5b50565b612e1d81612825565b8114612e2857600080fd5b5056fea2646970667358221220d9a4cc3079facaf64aaef7a29a6baf46daad707414c5cc5b60c4aa0d2e66fc6064736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80638978191211610104578063ba9a061a116100a2578063d6ab6b9b11610071578063d6ab6b9b14610544578063dd62ed3e14610560578063de524be814610590578063f2fde38b1461059a576101cf565b8063ba9a061a146104be578063c4c50acf146104dc578063cb03fb1e146104f8578063d230af3a14610528576101cf565b80639dc29fac116100de5780639dc29fac14610438578063a457c2d714610454578063a9059cbb14610484578063b88a802f146104b4576101cf565b806389781912146103e05780638da5cb5b146103fc57806395d89b411461041a576101cf565b80632d5151ed116101715780634120657a1161014b5780634120657a1461035857806341910f901461038857806370a08231146103a6578063715018a6146103d6576101cf565b80632d5151ed146102ee578063313ce5671461030a5780633950935114610328576101cf565b80630ad08d0e116101ad5780630ad08d0e1461025257806318160ddd1461027057806323b872dd1461028e578063267e8ab6146102be576101cf565b806306fdde03146101d45780630700037d146101f2578063095ea7b314610222575b600080fd5b6101dc6105b6565b6040516101e9919061249e565b60405180910390f35b61020c60048036038101906102079190611ff1565b610648565b6040516102199190612680565b60405180910390f35b61023c600480360381019061023791906120f1565b610660565b6040516102499190612468565b60405180910390f35b61025a61067e565b6040516102679190612483565b60405180910390f35b6102786106a4565b6040516102859190612680565b60405180910390f35b6102a860048036038101906102a3919061205e565b6106ae565b6040516102b59190612468565b60405180910390f35b6102d860048036038101906102d39190611ff1565b6107cd565b6040516102e59190612680565b60405180910390f35b61030860048036038101906103039190612131565b610829565b005b610312610917565b60405161031f919061269b565b60405180910390f35b610342600480360381019061033d91906120f1565b610920565b60405161034f9190612468565b60405180910390f35b610372600480360381019061036d9190611ff1565b6109cc565b60405161037f9190612468565b60405180910390f35b6103906109ec565b60405161039d9190612680565b60405180910390f35b6103c060048036038101906103bb9190611ff1565b6109f1565b6040516103cd9190612680565b60405180910390f35b6103de610a39565b005b6103fa60048036038101906103f591906120b1565b610ac1565b005b610404610b98565b604051610411919061244d565b60405180910390f35b610422610bc2565b60405161042f919061249e565b60405180910390f35b610452600480360381019061044d91906120f1565b610c54565b005b61046e600480360381019061046991906120f1565b610d46565b60405161047b9190612468565b60405180910390f35b61049e600480360381019061049991906120f1565b610e31565b6040516104ab9190612468565b60405180910390f35b6104bc610e4f565b005b6104c6610f86565b6040516104d39190612680565b60405180910390f35b6104f660048036038101906104f191906120f1565b610f8c565b005b610512600480360381019061050d9190611ff1565b611016565b60405161051f9190612680565b60405180910390f35b610542600480360381019061053d919061201e565b61102e565b005b61055e60048036038101906105599190611ff1565b61123a565b005b61057a6004803603810190610575919061201e565b6112fa565b6040516105879190612680565b60405180910390f35b610598611381565b005b6105b460048036038101906105af9190611ff1565b611429565b005b6060600380546105c5906128a5565b80601f01602080910402602001604051908101604052809291908181526020018280546105f1906128a5565b801561063e5780601f106106135761010080835404028352916020019161063e565b820191906000526020600020905b81548152906001019060200180831161062157829003601f168201915b5050505050905090565b60096020528060005260406000206000915090505481565b600061067461066d611521565b8484611529565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106fa611521565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107b657828110156107a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610798906125a0565b60405180910390fd5b6107b5856107ad611521565b858403611529565b5b6107c18585856116f4565b60019150509392505050565b60006107d882611975565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461082291906126d2565b9050919050565b610831611521565b73ffffffffffffffffffffffffffffffffffffffff1661084f610b98565b73ffffffffffffffffffffffffffffffffffffffff16146108a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089c906125c0565b60405180910390fd5b60005b84849050811015610910576108fd8585838181106108c9576108c86129ad565b5b90506020020160208101906108de9190611ff1565b8484848181106108f1576108f06129ad565b5b90506020020135610f8c565b8080610908906128d7565b9150506108a8565b5050505050565b60006012905090565b60006109c261092d611521565b84846001600061093b611521565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109bd91906126d2565b611529565b6001905092915050565b600b6020528060005260406000206000915054906101000a900460ff1681565b606481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a41611521565b73ffffffffffffffffffffffffffffffffffffffff16610a5f610b98565b73ffffffffffffffffffffffffffffffffffffffff1614610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac906125c0565b60405180910390fd5b610abf6000611aea565b565b610ac9611521565b73ffffffffffffffffffffffffffffffffffffffff16610ae7610b98565b73ffffffffffffffffffffffffffffffffffffffff1614610b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b34906125c0565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610bd1906128a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610bfd906128a5565b8015610c4a5780601f10610c1f57610100808354040283529160200191610c4a565b820191906000526020600020905b815481529060010190602001808311610c2d57829003601f168201915b5050505050905090565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610cf95750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2f90612540565b60405180910390fd5b610d428282611bb0565b5050565b60008060016000610d55611521565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0990612640565b60405180910390fd5b610e26610e1d611521565b85858403611529565b600191505092915050565b6000610e45610e3e611521565b84846116f4565b6001905092915050565b600860009054906101000a900460ff1615610e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9690612580565b60405180910390fd5b610efb33610eac33611975565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ef691906126d2565b611d87565b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60075481565b610f94611521565b73ffffffffffffffffffffffffffffffffffffffff16610fb2610b98565b73ffffffffffffffffffffffffffffffffffffffff1614611008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fff906125c0565b60405180910390fd5b6110128282611d87565b5050565b600a6020528060005260406000206000915090505481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461108857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461115f576110c582611975565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461111391906126d2565b9250508190555042600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146112365761119c81611975565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111ea91906126d2565b9250508190555042600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b611242611521565b73ffffffffffffffffffffffffffffffffffffffff16611260610b98565b73ffffffffffffffffffffffffffffffffffffffff16146112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad906125c0565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611389611521565b73ffffffffffffffffffffffffffffffffffffffff166113a7610b98565b73ffffffffffffffffffffffffffffffffffffffff16146113fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f4906125c0565b60405180910390fd5b600860009054906101000a900460ff1615600860006101000a81548160ff021916908315150217905550565b611431611521565b73ffffffffffffffffffffffffffffffffffffffff1661144f610b98565b73ffffffffffffffffffffffffffffffffffffffff16146114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c906125c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150c90612500565b60405180910390fd5b61151e81611aea565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159090612620565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160090612520565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116e79190612680565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175b90612600565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cb906124c0565b60405180910390fd5b6117df838383611ee7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185c90612560565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118f891906126d2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161195c9190612680565b60405180910390a361196f848484611eec565b50505050565b600062015180600754600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156119cc57600754611a0d565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020545b42611a1891906127b3565b6064600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632bbf3b32866040518263ffffffff1660e01b8152600401611a75919061244d565b60206040518083038186803b158015611a8d57600080fd5b505afa158015611aa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac591906121b2565b611acf9190612759565b611ad99190612759565b611ae39190612728565b9050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c17906125e0565b60405180910390fd5b611c2c82600083611ee7565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca9906124e0565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611d0991906127b3565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d6e9190612680565b60405180910390a3611d8283600084611eec565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dee90612660565b60405180910390fd5b611e0360008383611ee7565b8060026000828254611e1591906126d2565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e6a91906126d2565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ecf9190612680565b60405180910390a3611ee360008383611eec565b5050565b505050565b505050565b600081359050611f0081612de6565b92915050565b60008083601f840112611f1c57611f1b6129e1565b5b8235905067ffffffffffffffff811115611f3957611f386129dc565b5b602083019150836020820283011115611f5557611f546129e6565b5b9250929050565b60008083601f840112611f7257611f716129e1565b5b8235905067ffffffffffffffff811115611f8f57611f8e6129dc565b5b602083019150836020820283011115611fab57611faa6129e6565b5b9250929050565b600081359050611fc181612dfd565b92915050565b600081359050611fd681612e14565b92915050565b600081519050611feb81612e14565b92915050565b600060208284031215612007576120066129f0565b5b600061201584828501611ef1565b91505092915050565b60008060408385031215612035576120346129f0565b5b600061204385828601611ef1565b925050602061205485828601611ef1565b9150509250929050565b600080600060608486031215612077576120766129f0565b5b600061208586828701611ef1565b935050602061209686828701611ef1565b92505060406120a786828701611fc7565b9150509250925092565b600080604083850312156120c8576120c76129f0565b5b60006120d685828601611ef1565b92505060206120e785828601611fb2565b9150509250929050565b60008060408385031215612108576121076129f0565b5b600061211685828601611ef1565b925050602061212785828601611fc7565b9150509250929050565b6000806000806040858703121561214b5761214a6129f0565b5b600085013567ffffffffffffffff811115612169576121686129eb565b5b61217587828801611f06565b9450945050602085013567ffffffffffffffff811115612198576121976129eb565b5b6121a487828801611f5c565b925092505092959194509250565b6000602082840312156121c8576121c76129f0565b5b60006121d684828501611fdc565b91505092915050565b6121e8816127e7565b82525050565b6121f7816127f9565b82525050565b6122068161283c565b82525050565b6000612217826126b6565b61222181856126c1565b9350612231818560208601612872565b61223a816129f5565b840191505092915050565b60006122526023836126c1565b915061225d82612a06565b604082019050919050565b60006122756022836126c1565b915061228082612a55565b604082019050919050565b60006122986026836126c1565b91506122a382612aa4565b604082019050919050565b60006122bb6022836126c1565b91506122c682612af3565b604082019050919050565b60006122de6028836126c1565b91506122e982612b42565b604082019050919050565b60006123016026836126c1565b915061230c82612b91565b604082019050919050565b6000612324601f836126c1565b915061232f82612be0565b602082019050919050565b60006123476028836126c1565b915061235282612c09565b604082019050919050565b600061236a6020836126c1565b915061237582612c58565b602082019050919050565b600061238d6021836126c1565b915061239882612c81565b604082019050919050565b60006123b06025836126c1565b91506123bb82612cd0565b604082019050919050565b60006123d36024836126c1565b91506123de82612d1f565b604082019050919050565b60006123f66025836126c1565b915061240182612d6e565b604082019050919050565b6000612419601f836126c1565b915061242482612dbd565b602082019050919050565b61243881612825565b82525050565b6124478161282f565b82525050565b600060208201905061246260008301846121df565b92915050565b600060208201905061247d60008301846121ee565b92915050565b600060208201905061249860008301846121fd565b92915050565b600060208201905081810360008301526124b8818461220c565b905092915050565b600060208201905081810360008301526124d981612245565b9050919050565b600060208201905081810360008301526124f981612268565b9050919050565b600060208201905081810360008301526125198161228b565b9050919050565b60006020820190508181036000830152612539816122ae565b9050919050565b60006020820190508181036000830152612559816122d1565b9050919050565b60006020820190508181036000830152612579816122f4565b9050919050565b6000602082019050818103600083015261259981612317565b9050919050565b600060208201905081810360008301526125b98161233a565b9050919050565b600060208201905081810360008301526125d98161235d565b9050919050565b600060208201905081810360008301526125f981612380565b9050919050565b60006020820190508181036000830152612619816123a3565b9050919050565b60006020820190508181036000830152612639816123c6565b9050919050565b60006020820190508181036000830152612659816123e9565b9050919050565b600060208201905081810360008301526126798161240c565b9050919050565b6000602082019050612695600083018461242f565b92915050565b60006020820190506126b0600083018461243e565b92915050565b600081519050919050565b600082825260208201905092915050565b60006126dd82612825565b91506126e883612825565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561271d5761271c612920565b5b828201905092915050565b600061273382612825565b915061273e83612825565b92508261274e5761274d61294f565b5b828204905092915050565b600061276482612825565b915061276f83612825565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156127a8576127a7612920565b5b828202905092915050565b60006127be82612825565b91506127c983612825565b9250828210156127dc576127db612920565b5b828203905092915050565b60006127f282612805565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006128478261284e565b9050919050565b600061285982612860565b9050919050565b600061286b82612805565b9050919050565b60005b83811015612890578082015181840152602081019050612875565b8381111561289f576000848401525b50505050565b600060028204905060018216806128bd57607f821691505b602082108114156128d1576128d061297e565b5b50919050565b60006128e282612825565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561291557612914612920565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4164647265737320646f6573206e6f742068617665207065726d697373696f6e60008201527f20746f206275726e000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f436c61696d696e672072657761726420686173206265656e2070617573656400600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b612def816127e7565b8114612dfa57600080fd5b50565b612e06816127f9565b8114612e1157600080fd5b50565b612e1d81612825565b8114612e2857600080fd5b5056fea2646970667358221220d9a4cc3079facaf64aaef7a29a6baf46daad707414c5cc5b60c4aa0d2e66fc6064736f6c63430008070033
Deployed Bytecode Sourcemap
16494:2479:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6064:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16686:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8404:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16539:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7184:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9166:573;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18223:136;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18730:240;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7026:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10148:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16793:48;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16573:43;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7355:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4467:103;;;:::i;:::-;;18367:133;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3816:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6283:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17480:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10866:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7695:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17706:274;;;:::i;:::-;;16623:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18602:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16735:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17070:402;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16941:121;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7933:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18508:86;;;:::i;:::-;;4725:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6064:100;6118:13;6151:5;6144:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6064:100;:::o;16686:42::-;;;;;;;;;;;;;;;;;:::o;8404:169::-;8487:4;8504:39;8513:12;:10;:12::i;:::-;8527:7;8536:6;8504:8;:39::i;:::-;8561:4;8554:11;;8404:169;;;;:::o;16539:25::-;;;;;;;;;;;;;:::o;7184:108::-;7245:7;7272:12;;7265:19;;7184:108;:::o;9166:573::-;9306:4;9323:24;9350:11;:19;9362:6;9350:19;;;;;;;;;;;;;;;:33;9370:12;:10;:12::i;:::-;9350:33;;;;;;;;;;;;;;;;9323:60;;9418:17;9398:16;:37;9394:265;;9480:6;9460:16;:26;;9452:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9575:57;9584:6;9592:12;:10;:12::i;:::-;9625:6;9606:16;:25;9575:8;:57::i;:::-;9394:265;9671:36;9681:6;9689:9;9700:6;9671:9;:36::i;:::-;9727:4;9720:11;;;9166:573;;;;;:::o;18223:136::-;18286:7;18329:22;18346:4;18329:16;:22::i;:::-;18313:7;:13;18321:4;18313:13;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;18306:45;;18223:136;;;:::o;18730:240::-;4047:12;:10;:12::i;:::-;4036:23;;:7;:5;:7::i;:::-;:23;;;4028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18852:9:::1;18848:115;18867:13;;:20;;18863:1;:24;18848:115;;;18908:43;18919:13;;18933:1;18919:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18937:10;;18948:1;18937:13;;;;;;;:::i;:::-;;;;;;;;18908:10;:43::i;:::-;18889:3;;;;;:::i;:::-;;;;18848:115;;;;18730:240:::0;;;;:::o;7026:93::-;7084:5;7109:2;7102:9;;7026:93;:::o;10148:215::-;10236:4;10253:80;10262:12;:10;:12::i;:::-;10276:7;10322:10;10285:11;:25;10297:12;:10;:12::i;:::-;10285:25;;;;;;;;;;;;;;;:34;10311:7;10285:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10253:8;:80::i;:::-;10351:4;10344:11;;10148:215;;;;:::o;16793:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;16573:43::-;16609:7;16573:43;:::o;7355:127::-;7429:7;7456:9;:18;7466:7;7456:18;;;;;;;;;;;;;;;;7449:25;;7355:127;;;:::o;4467:103::-;4047:12;:10;:12::i;:::-;4036:23;;:7;:5;:7::i;:::-;:23;;;4028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4532:30:::1;4559:1;4532:18;:30::i;:::-;4467:103::o:0;18367:133::-;4047:12;:10;:12::i;:::-;4036:23;;:7;:5;:7::i;:::-;:23;;;4028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18485:7:::1;18456:16;:26;18473:8;18456:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18367:133:::0;;:::o;3816:87::-;3862:7;3889:6;;;;;;;;;;;3882:13;;3816:87;:::o;6283:104::-;6339:13;6372:7;6365:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6283:104;:::o;17480:218::-;17552:16;:28;17569:10;17552:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;17606:8;;;;;;;;;;;17584:31;;:10;:31;;;17552:63;17544:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;17671:19;17677:4;17683:6;17671:5;:19::i;:::-;17480:218;;:::o;10866:413::-;10959:4;10976:24;11003:11;:25;11015:12;:10;:12::i;:::-;11003:25;;;;;;;;;;;;;;;:34;11029:7;11003:34;;;;;;;;;;;;;;;;10976:61;;11076:15;11056:16;:35;;11048:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11169:67;11178:12;:10;:12::i;:::-;11192:7;11220:15;11201:16;:34;11169:8;:67::i;:::-;11267:4;11260:11;;;10866:413;;;;:::o;7695:175::-;7781:4;7798:42;7808:12;:10;:12::i;:::-;7822:9;7833:6;7798:9;:42::i;:::-;7858:4;7851:11;;7695:175;;;;:::o;17706:274::-;17758:12;;;;;;;;;;;17757:13;17749:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;17818:69;17824:10;17858:28;17875:10;17858:16;:28::i;:::-;17836:7;:19;17844:10;17836:19;;;;;;;;;;;;;;;;:50;;;;:::i;:::-;17818:5;:69::i;:::-;17920:1;17898:7;:19;17906:10;17898:19;;;;;;;;;;;;;;;:23;;;;17957:15;17932:10;:22;17943:10;17932:22;;;;;;;;;;;;;;;:40;;;;17706:274::o;16623:20::-;;;;:::o;18602:120::-;4047:12;:10;:12::i;:::-;4036:23;;:7;:5;:7::i;:::-;:23;;;4028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18687:27:::1;18693:8;18703:10;18687:5;:27::i;:::-;18602:120:::0;;:::o;16735:45::-;;;;;;;;;;;;;;;;;:::o;17070:402::-;17168:8;;;;;;;;;;;17146:31;;:10;:31;;;17138:40;;;;;;17208:1;17192:18;;:4;:18;;;17189:137;;17243:22;17260:4;17243:16;:22::i;:::-;17226:7;:13;17234:4;17226:13;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;17299:15;17280:10;:16;17291:4;17280:16;;;;;;;;;;;;;;;:34;;;;17189:137;17353:1;17339:16;;:2;:16;;;17336:129;;17386:20;17403:2;17386:16;:20::i;:::-;17371:7;:11;17379:2;17371:11;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;17438:15;17421:10;:14;17432:2;17421:14;;;;;;;;;;;;;;;:32;;;;17336:129;17070:402;;:::o;16941:121::-;4047:12;:10;:12::i;:::-;4036:23;;:7;:5;:7::i;:::-;:23;;;4028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17038:15:::1;17017:8;;:37;;;;;;;;;;;;;;;;;;16941:121:::0;:::o;7933:151::-;8022:7;8049:11;:18;8061:5;8049:18;;;;;;;;;;;;;;;:27;8068:7;8049:27;;;;;;;;;;;;;;;;8042:34;;7933:151;;;;:::o;18508:86::-;4047:12;:10;:12::i;:::-;4036:23;;:7;:5;:7::i;:::-;:23;;;4028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18574:12:::1;;;;;;;;;;;18573:13;18558:12;;:28;;;;;;;;;;;;;;;;;;18508:86::o:0;4725:201::-;4047:12;:10;:12::i;:::-;4036:23;;:7;:5;:7::i;:::-;:23;;;4028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4834:1:::1;4814:22;;:8;:22;;;;4806:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4890:28;4909:8;4890:18;:28::i;:::-;4725:201:::0;:::o;93:98::-;146:7;173:10;166:17;;93:98;:::o;14550:380::-;14703:1;14686:19;;:5;:19;;;;14678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14784:1;14765:21;;:7;:21;;;;14757:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14868:6;14838:11;:18;14850:5;14838:18;;;;;;;;;;;;;;;:27;14857:7;14838:27;;;;;;;;;;;;;;;:36;;;;14906:7;14890:32;;14899:5;14890:32;;;14915:6;14890:32;;;;;;:::i;:::-;;;;;;;;14550:380;;;:::o;11769:733::-;11927:1;11909:20;;:6;:20;;;;11901:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12011:1;11990:23;;:9;:23;;;;11982:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12066:47;12087:6;12095:9;12106:6;12066:20;:47::i;:::-;12126:21;12150:9;:17;12160:6;12150:17;;;;;;;;;;;;;;;;12126:41;;12203:6;12186:13;:23;;12178:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12324:6;12308:13;:22;12288:9;:17;12298:6;12288:17;;;;;;;;;;;;;;;:42;;;;12376:6;12352:9;:20;12362:9;12352:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12417:9;12400:35;;12409:6;12400:35;;;12428:6;12400:35;;;;;;:::i;:::-;;;;;;;;12448:46;12468:6;12476:9;12487:6;12448:19;:46::i;:::-;11890:612;11769:733;;;:::o;17992:223::-;18054:7;18202:5;18165;;18145:10;:16;18156:4;18145:16;;;;;;;;;;;;;;;;:25;;:52;;18192:5;;18145:52;;;18173:10;:16;18184:4;18173:16;;;;;;;;;;;;;;;;18145:52;18126:15;:72;;;;:::i;:::-;16609:7;18081:8;;;;;;;;;;;:23;;;18105:4;18081:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;;;:::i;:::-;:118;;;;:::i;:::-;:126;;;;:::i;:::-;18074:133;;17992:223;;;:::o;5086:191::-;5160:16;5179:6;;;;;;;;;;;5160:25;;5205:8;5196:6;;:17;;;;;;;;;;;;;;;;;;5260:8;5229:40;;5250:8;5229:40;;;;;;;;;;;;5149:128;5086:191;:::o;13521:591::-;13624:1;13605:21;;:7;:21;;;;13597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13677:49;13698:7;13715:1;13719:6;13677:20;:49::i;:::-;13739:22;13764:9;:18;13774:7;13764:18;;;;;;;;;;;;;;;;13739:43;;13819:6;13801:14;:24;;13793:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13938:6;13921:14;:23;13900:9;:18;13910:7;13900:18;;;;;;;;;;;;;;;:44;;;;13982:6;13966:12;;:22;;;;;;;:::i;:::-;;;;;;;;14032:1;14006:37;;14015:7;14006:37;;;14036:6;14006:37;;;;;;:::i;:::-;;;;;;;;14056:48;14076:7;14093:1;14097:6;14056:19;:48::i;:::-;13586:526;13521:591;;:::o;12789:399::-;12892:1;12873:21;;:7;:21;;;;12865:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12943:49;12972:1;12976:7;12985:6;12943:20;:49::i;:::-;13021:6;13005:12;;:22;;;;;;;:::i;:::-;;;;;;;;13060:6;13038:9;:18;13048:7;13038:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;13103:7;13082:37;;13099:1;13082:37;;;13112:6;13082:37;;;;;;:::i;:::-;;;;;;;;13132:48;13160:1;13164:7;13173:6;13132:19;:48::i;:::-;12789:399;;:::o;15530:125::-;;;;:::o;16259:124::-;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;169:568::-;242:8;252:6;302:3;295:4;287:6;283:17;279:27;269:122;;310:79;;:::i;:::-;269:122;423:6;410:20;400:30;;453:18;445:6;442:30;439:117;;;475:79;;:::i;:::-;439:117;589:4;581:6;577:17;565:29;;643:3;635:4;627:6;623:17;613:8;609:32;606:41;603:128;;;650:79;;:::i;:::-;603:128;169:568;;;;;:::o;760:::-;833:8;843:6;893:3;886:4;878:6;874:17;870:27;860:122;;901:79;;:::i;:::-;860:122;1014:6;1001:20;991:30;;1044:18;1036:6;1033:30;1030:117;;;1066:79;;:::i;:::-;1030:117;1180:4;1172:6;1168:17;1156:29;;1234:3;1226:4;1218:6;1214:17;1204:8;1200:32;1197:41;1194:128;;;1241:79;;:::i;:::-;1194:128;760:568;;;;;:::o;1334:133::-;1377:5;1415:6;1402:20;1393:29;;1431:30;1455:5;1431:30;:::i;:::-;1334:133;;;;:::o;1473:139::-;1519:5;1557:6;1544:20;1535:29;;1573:33;1600:5;1573:33;:::i;:::-;1473:139;;;;:::o;1618:143::-;1675:5;1706:6;1700:13;1691:22;;1722:33;1749:5;1722:33;:::i;:::-;1618:143;;;;:::o;1767:329::-;1826:6;1875:2;1863:9;1854:7;1850:23;1846:32;1843:119;;;1881:79;;:::i;:::-;1843:119;2001:1;2026:53;2071:7;2062:6;2051:9;2047:22;2026:53;:::i;:::-;2016:63;;1972:117;1767:329;;;;:::o;2102:474::-;2170:6;2178;2227:2;2215:9;2206:7;2202:23;2198:32;2195:119;;;2233:79;;:::i;:::-;2195:119;2353:1;2378:53;2423:7;2414:6;2403:9;2399:22;2378:53;:::i;:::-;2368:63;;2324:117;2480:2;2506:53;2551:7;2542:6;2531:9;2527:22;2506:53;:::i;:::-;2496:63;;2451:118;2102:474;;;;;:::o;2582:619::-;2659:6;2667;2675;2724:2;2712:9;2703:7;2699:23;2695:32;2692:119;;;2730:79;;:::i;:::-;2692:119;2850:1;2875:53;2920:7;2911:6;2900:9;2896:22;2875:53;:::i;:::-;2865:63;;2821:117;2977:2;3003:53;3048:7;3039:6;3028:9;3024:22;3003:53;:::i;:::-;2993:63;;2948:118;3105:2;3131:53;3176:7;3167:6;3156:9;3152:22;3131:53;:::i;:::-;3121:63;;3076:118;2582:619;;;;;:::o;3207:468::-;3272:6;3280;3329:2;3317:9;3308:7;3304:23;3300:32;3297:119;;;3335:79;;:::i;:::-;3297:119;3455:1;3480:53;3525:7;3516:6;3505:9;3501:22;3480:53;:::i;:::-;3470:63;;3426:117;3582:2;3608:50;3650:7;3641:6;3630:9;3626:22;3608:50;:::i;:::-;3598:60;;3553:115;3207:468;;;;;:::o;3681:474::-;3749:6;3757;3806:2;3794:9;3785:7;3781:23;3777:32;3774:119;;;3812:79;;:::i;:::-;3774:119;3932:1;3957:53;4002:7;3993:6;3982:9;3978:22;3957:53;:::i;:::-;3947:63;;3903:117;4059:2;4085:53;4130:7;4121:6;4110:9;4106:22;4085:53;:::i;:::-;4075:63;;4030:118;3681:474;;;;;:::o;4161:934::-;4283:6;4291;4299;4307;4356:2;4344:9;4335:7;4331:23;4327:32;4324:119;;;4362:79;;:::i;:::-;4324:119;4510:1;4499:9;4495:17;4482:31;4540:18;4532:6;4529:30;4526:117;;;4562:79;;:::i;:::-;4526:117;4675:80;4747:7;4738:6;4727:9;4723:22;4675:80;:::i;:::-;4657:98;;;;4453:312;4832:2;4821:9;4817:18;4804:32;4863:18;4855:6;4852:30;4849:117;;;4885:79;;:::i;:::-;4849:117;4998:80;5070:7;5061:6;5050:9;5046:22;4998:80;:::i;:::-;4980:98;;;;4775:313;4161:934;;;;;;;:::o;5101:351::-;5171:6;5220:2;5208:9;5199:7;5195:23;5191:32;5188:119;;;5226:79;;:::i;:::-;5188:119;5346:1;5371:64;5427:7;5418:6;5407:9;5403:22;5371:64;:::i;:::-;5361:74;;5317:128;5101:351;;;;:::o;5458:118::-;5545:24;5563:5;5545:24;:::i;:::-;5540:3;5533:37;5458:118;;:::o;5582:109::-;5663:21;5678:5;5663:21;:::i;:::-;5658:3;5651:34;5582:109;;:::o;5697:165::-;5801:54;5849:5;5801:54;:::i;:::-;5796:3;5789:67;5697:165;;:::o;5868:364::-;5956:3;5984:39;6017:5;5984:39;:::i;:::-;6039:71;6103:6;6098:3;6039:71;:::i;:::-;6032:78;;6119:52;6164:6;6159:3;6152:4;6145:5;6141:16;6119:52;:::i;:::-;6196:29;6218:6;6196:29;:::i;:::-;6191:3;6187:39;6180:46;;5960:272;5868:364;;;;:::o;6238:366::-;6380:3;6401:67;6465:2;6460:3;6401:67;:::i;:::-;6394:74;;6477:93;6566:3;6477:93;:::i;:::-;6595:2;6590:3;6586:12;6579:19;;6238:366;;;:::o;6610:::-;6752:3;6773:67;6837:2;6832:3;6773:67;:::i;:::-;6766:74;;6849:93;6938:3;6849:93;:::i;:::-;6967:2;6962:3;6958:12;6951:19;;6610:366;;;:::o;6982:::-;7124:3;7145:67;7209:2;7204:3;7145:67;:::i;:::-;7138:74;;7221:93;7310:3;7221:93;:::i;:::-;7339:2;7334:3;7330:12;7323:19;;6982:366;;;:::o;7354:::-;7496:3;7517:67;7581:2;7576:3;7517:67;:::i;:::-;7510:74;;7593:93;7682:3;7593:93;:::i;:::-;7711:2;7706:3;7702:12;7695:19;;7354:366;;;:::o;7726:::-;7868:3;7889:67;7953:2;7948:3;7889:67;:::i;:::-;7882:74;;7965:93;8054:3;7965:93;:::i;:::-;8083:2;8078:3;8074:12;8067:19;;7726:366;;;:::o;8098:::-;8240:3;8261:67;8325:2;8320:3;8261:67;:::i;:::-;8254:74;;8337:93;8426:3;8337:93;:::i;:::-;8455:2;8450:3;8446:12;8439:19;;8098:366;;;:::o;8470:::-;8612:3;8633:67;8697:2;8692:3;8633:67;:::i;:::-;8626:74;;8709:93;8798:3;8709:93;:::i;:::-;8827:2;8822:3;8818:12;8811:19;;8470:366;;;:::o;8842:::-;8984:3;9005:67;9069:2;9064:3;9005:67;:::i;:::-;8998:74;;9081:93;9170:3;9081:93;:::i;:::-;9199:2;9194:3;9190:12;9183:19;;8842:366;;;:::o;9214:::-;9356:3;9377:67;9441:2;9436:3;9377:67;:::i;:::-;9370:74;;9453:93;9542:3;9453:93;:::i;:::-;9571:2;9566:3;9562:12;9555:19;;9214:366;;;:::o;9586:::-;9728:3;9749:67;9813:2;9808:3;9749:67;:::i;:::-;9742:74;;9825:93;9914:3;9825:93;:::i;:::-;9943:2;9938:3;9934:12;9927:19;;9586:366;;;:::o;9958:::-;10100:3;10121:67;10185:2;10180:3;10121:67;:::i;:::-;10114:74;;10197:93;10286:3;10197:93;:::i;:::-;10315:2;10310:3;10306:12;10299:19;;9958:366;;;:::o;10330:::-;10472:3;10493:67;10557:2;10552:3;10493:67;:::i;:::-;10486:74;;10569:93;10658:3;10569:93;:::i;:::-;10687:2;10682:3;10678:12;10671:19;;10330:366;;;:::o;10702:::-;10844:3;10865:67;10929:2;10924:3;10865:67;:::i;:::-;10858:74;;10941:93;11030:3;10941:93;:::i;:::-;11059:2;11054:3;11050:12;11043:19;;10702:366;;;:::o;11074:::-;11216:3;11237:67;11301:2;11296:3;11237:67;:::i;:::-;11230:74;;11313:93;11402:3;11313:93;:::i;:::-;11431:2;11426:3;11422:12;11415:19;;11074:366;;;:::o;11446:118::-;11533:24;11551:5;11533:24;:::i;:::-;11528:3;11521:37;11446:118;;:::o;11570:112::-;11653:22;11669:5;11653:22;:::i;:::-;11648:3;11641:35;11570:112;;:::o;11688:222::-;11781:4;11819:2;11808:9;11804:18;11796:26;;11832:71;11900:1;11889:9;11885:17;11876:6;11832:71;:::i;:::-;11688:222;;;;:::o;11916:210::-;12003:4;12041:2;12030:9;12026:18;12018:26;;12054:65;12116:1;12105:9;12101:17;12092:6;12054:65;:::i;:::-;11916:210;;;;:::o;12132:256::-;12242:4;12280:2;12269:9;12265:18;12257:26;;12293:88;12378:1;12367:9;12363:17;12354:6;12293:88;:::i;:::-;12132:256;;;;:::o;12394:313::-;12507:4;12545:2;12534:9;12530:18;12522:26;;12594:9;12588:4;12584:20;12580:1;12569:9;12565:17;12558:47;12622:78;12695:4;12686:6;12622:78;:::i;:::-;12614:86;;12394:313;;;;:::o;12713:419::-;12879:4;12917:2;12906:9;12902:18;12894:26;;12966:9;12960:4;12956:20;12952:1;12941:9;12937:17;12930:47;12994:131;13120:4;12994:131;:::i;:::-;12986:139;;12713:419;;;:::o;13138:::-;13304:4;13342:2;13331:9;13327:18;13319:26;;13391:9;13385:4;13381:20;13377:1;13366:9;13362:17;13355:47;13419:131;13545:4;13419:131;:::i;:::-;13411:139;;13138:419;;;:::o;13563:::-;13729:4;13767:2;13756:9;13752:18;13744:26;;13816:9;13810:4;13806:20;13802:1;13791:9;13787:17;13780:47;13844:131;13970:4;13844:131;:::i;:::-;13836:139;;13563:419;;;:::o;13988:::-;14154:4;14192:2;14181:9;14177:18;14169:26;;14241:9;14235:4;14231:20;14227:1;14216:9;14212:17;14205:47;14269:131;14395:4;14269:131;:::i;:::-;14261:139;;13988:419;;;:::o;14413:::-;14579:4;14617:2;14606:9;14602:18;14594:26;;14666:9;14660:4;14656:20;14652:1;14641:9;14637:17;14630:47;14694:131;14820:4;14694:131;:::i;:::-;14686:139;;14413:419;;;:::o;14838:::-;15004:4;15042:2;15031:9;15027:18;15019:26;;15091:9;15085:4;15081:20;15077:1;15066:9;15062:17;15055:47;15119:131;15245:4;15119:131;:::i;:::-;15111:139;;14838:419;;;:::o;15263:::-;15429:4;15467:2;15456:9;15452:18;15444:26;;15516:9;15510:4;15506:20;15502:1;15491:9;15487:17;15480:47;15544:131;15670:4;15544:131;:::i;:::-;15536:139;;15263:419;;;:::o;15688:::-;15854:4;15892:2;15881:9;15877:18;15869:26;;15941:9;15935:4;15931:20;15927:1;15916:9;15912:17;15905:47;15969:131;16095:4;15969:131;:::i;:::-;15961:139;;15688:419;;;:::o;16113:::-;16279:4;16317:2;16306:9;16302:18;16294:26;;16366:9;16360:4;16356:20;16352:1;16341:9;16337:17;16330:47;16394:131;16520:4;16394:131;:::i;:::-;16386:139;;16113:419;;;:::o;16538:::-;16704:4;16742:2;16731:9;16727:18;16719:26;;16791:9;16785:4;16781:20;16777:1;16766:9;16762:17;16755:47;16819:131;16945:4;16819:131;:::i;:::-;16811:139;;16538:419;;;:::o;16963:::-;17129:4;17167:2;17156:9;17152:18;17144:26;;17216:9;17210:4;17206:20;17202:1;17191:9;17187:17;17180:47;17244:131;17370:4;17244:131;:::i;:::-;17236:139;;16963:419;;;:::o;17388:::-;17554:4;17592:2;17581:9;17577:18;17569:26;;17641:9;17635:4;17631:20;17627:1;17616:9;17612:17;17605:47;17669:131;17795:4;17669:131;:::i;:::-;17661:139;;17388:419;;;:::o;17813:::-;17979:4;18017:2;18006:9;18002:18;17994:26;;18066:9;18060:4;18056:20;18052:1;18041:9;18037:17;18030:47;18094:131;18220:4;18094:131;:::i;:::-;18086:139;;17813:419;;;:::o;18238:::-;18404:4;18442:2;18431:9;18427:18;18419:26;;18491:9;18485:4;18481:20;18477:1;18466:9;18462:17;18455:47;18519:131;18645:4;18519:131;:::i;:::-;18511:139;;18238:419;;;:::o;18663:222::-;18756:4;18794:2;18783:9;18779:18;18771:26;;18807:71;18875:1;18864:9;18860:17;18851:6;18807:71;:::i;:::-;18663:222;;;;:::o;18891:214::-;18980:4;19018:2;19007:9;19003:18;18995:26;;19031:67;19095:1;19084:9;19080:17;19071:6;19031:67;:::i;:::-;18891:214;;;;:::o;19192:99::-;19244:6;19278:5;19272:12;19262:22;;19192:99;;;:::o;19297:169::-;19381:11;19415:6;19410:3;19403:19;19455:4;19450:3;19446:14;19431:29;;19297:169;;;;:::o;19472:305::-;19512:3;19531:20;19549:1;19531:20;:::i;:::-;19526:25;;19565:20;19583:1;19565:20;:::i;:::-;19560:25;;19719:1;19651:66;19647:74;19644:1;19641:81;19638:107;;;19725:18;;:::i;:::-;19638:107;19769:1;19766;19762:9;19755:16;;19472:305;;;;:::o;19783:185::-;19823:1;19840:20;19858:1;19840:20;:::i;:::-;19835:25;;19874:20;19892:1;19874:20;:::i;:::-;19869:25;;19913:1;19903:35;;19918:18;;:::i;:::-;19903:35;19960:1;19957;19953:9;19948:14;;19783:185;;;;:::o;19974:348::-;20014:7;20037:20;20055:1;20037:20;:::i;:::-;20032:25;;20071:20;20089:1;20071:20;:::i;:::-;20066:25;;20259:1;20191:66;20187:74;20184:1;20181:81;20176:1;20169:9;20162:17;20158:105;20155:131;;;20266:18;;:::i;:::-;20155:131;20314:1;20311;20307:9;20296:20;;19974:348;;;;:::o;20328:191::-;20368:4;20388:20;20406:1;20388:20;:::i;:::-;20383:25;;20422:20;20440:1;20422:20;:::i;:::-;20417:25;;20461:1;20458;20455:8;20452:34;;;20466:18;;:::i;:::-;20452:34;20511:1;20508;20504:9;20496:17;;20328:191;;;;:::o;20525:96::-;20562:7;20591:24;20609:5;20591:24;:::i;:::-;20580:35;;20525:96;;;:::o;20627:90::-;20661:7;20704:5;20697:13;20690:21;20679:32;;20627:90;;;:::o;20723:126::-;20760:7;20800:42;20793:5;20789:54;20778:65;;20723:126;;;:::o;20855:77::-;20892:7;20921:5;20910:16;;20855:77;;;:::o;20938:86::-;20973:7;21013:4;21006:5;21002:16;20991:27;;20938:86;;;:::o;21030:143::-;21097:9;21130:37;21161:5;21130:37;:::i;:::-;21117:50;;21030:143;;;:::o;21179:126::-;21229:9;21262:37;21293:5;21262:37;:::i;:::-;21249:50;;21179:126;;;:::o;21311:113::-;21361:9;21394:24;21412:5;21394:24;:::i;:::-;21381:37;;21311:113;;;:::o;21430:307::-;21498:1;21508:113;21522:6;21519:1;21516:13;21508:113;;;21607:1;21602:3;21598:11;21592:18;21588:1;21583:3;21579:11;21572:39;21544:2;21541:1;21537:10;21532:15;;21508:113;;;21639:6;21636:1;21633:13;21630:101;;;21719:1;21710:6;21705:3;21701:16;21694:27;21630:101;21479:258;21430:307;;;:::o;21743:320::-;21787:6;21824:1;21818:4;21814:12;21804:22;;21871:1;21865:4;21861:12;21892:18;21882:81;;21948:4;21940:6;21936:17;21926:27;;21882:81;22010:2;22002:6;21999:14;21979:18;21976:38;21973:84;;;22029:18;;:::i;:::-;21973:84;21794:269;21743:320;;;:::o;22069:233::-;22108:3;22131:24;22149:5;22131:24;:::i;:::-;22122:33;;22177:66;22170:5;22167:77;22164:103;;;22247:18;;:::i;:::-;22164:103;22294:1;22287:5;22283:13;22276:20;;22069:233;;;:::o;22308:180::-;22356:77;22353:1;22346:88;22453:4;22450:1;22443:15;22477:4;22474:1;22467:15;22494:180;22542:77;22539:1;22532:88;22639:4;22636:1;22629:15;22663:4;22660:1;22653:15;22680:180;22728:77;22725:1;22718:88;22825:4;22822:1;22815:15;22849:4;22846:1;22839:15;22866:180;22914:77;22911:1;22904:88;23011:4;23008:1;23001:15;23035:4;23032:1;23025:15;23052:117;23161:1;23158;23151:12;23175:117;23284:1;23281;23274:12;23298:117;23407:1;23404;23397:12;23421:117;23530:1;23527;23520:12;23544:117;23653:1;23650;23643:12;23667:102;23708:6;23759:2;23755:7;23750:2;23743:5;23739:14;23735:28;23725:38;;23667:102;;;:::o;23775:222::-;23915:34;23911:1;23903:6;23899:14;23892:58;23984:5;23979:2;23971:6;23967:15;23960:30;23775:222;:::o;24003:221::-;24143:34;24139:1;24131:6;24127:14;24120:58;24212:4;24207:2;24199:6;24195:15;24188:29;24003:221;:::o;24230:225::-;24370:34;24366:1;24358:6;24354:14;24347:58;24439:8;24434:2;24426:6;24422:15;24415:33;24230:225;:::o;24461:221::-;24601:34;24597:1;24589:6;24585:14;24578:58;24670:4;24665:2;24657:6;24653:15;24646:29;24461:221;:::o;24688:227::-;24828:34;24824:1;24816:6;24812:14;24805:58;24897:10;24892:2;24884:6;24880:15;24873:35;24688:227;:::o;24921:225::-;25061:34;25057:1;25049:6;25045:14;25038:58;25130:8;25125:2;25117:6;25113:15;25106:33;24921:225;:::o;25152:181::-;25292:33;25288:1;25280:6;25276:14;25269:57;25152:181;:::o;25339:227::-;25479:34;25475:1;25467:6;25463:14;25456:58;25548:10;25543:2;25535:6;25531:15;25524:35;25339:227;:::o;25572:182::-;25712:34;25708:1;25700:6;25696:14;25689:58;25572:182;:::o;25760:220::-;25900:34;25896:1;25888:6;25884:14;25877:58;25969:3;25964:2;25956:6;25952:15;25945:28;25760:220;:::o;25986:224::-;26126:34;26122:1;26114:6;26110:14;26103:58;26195:7;26190:2;26182:6;26178:15;26171:32;25986:224;:::o;26216:223::-;26356:34;26352:1;26344:6;26340:14;26333:58;26425:6;26420:2;26412:6;26408:15;26401:31;26216:223;:::o;26445:224::-;26585:34;26581:1;26573:6;26569:14;26562:58;26654:7;26649:2;26641:6;26637:15;26630:32;26445:224;:::o;26675:181::-;26815:33;26811:1;26803:6;26799:14;26792:57;26675:181;:::o;26862:122::-;26935:24;26953:5;26935:24;:::i;:::-;26928:5;26925:35;26915:63;;26974:1;26971;26964:12;26915:63;26862:122;:::o;26990:116::-;27060:21;27075:5;27060:21;:::i;:::-;27053:5;27050:32;27040:60;;27096:1;27093;27086:12;27040:60;26990:116;:::o;27112:122::-;27185:24;27203:5;27185:24;:::i;:::-;27178:5;27175:35;27165:63;;27224:1;27221;27214:12;27165:63;27112:122;:::o
Swarm Source
ipfs://d9a4cc3079facaf64aaef7a29a6baf46daad707414c5cc5b60c4aa0d2e66fc60
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.