Contract Overview
Balance:
0 BTT
BTT Value:
$0.00
[ Download CSV Export ]
Contract Name:
TakeMyMoney
Compiler Version
v0.8.16+commit.07a7930e
Contract Source Code (Solidity)
/** *Submitted for verification at bttcscan.com on 2022-08-31 */ // SPDX-License-Identifier: MIT // File: @openzeppelin/contracts/interfaces/IERC3156FlashBorrower.sol // OpenZeppelin Contracts (last updated v4.7.0) (interfaces/IERC3156FlashBorrower.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC3156 FlashBorrower, as defined in * https://eips.ethereum.org/EIPS/eip-3156[ERC-3156]. * * _Available since v4.1._ */ interface IERC3156FlashBorrower { /** * @dev Receive a flash loan. * @param initiator The initiator of the loan. * @param token The loan currency. * @param amount The amount of tokens lent. * @param fee The additional amount of tokens to repay. * @param data Arbitrary data structure, intended to contain user-defined parameters. * @return The keccak256 hash of "IERC3156FlashBorrower.onFlashLoan" */ function onFlashLoan( address initiator, address token, uint256 amount, uint256 fee, bytes calldata data ) external returns (bytes32); } // File: @openzeppelin/contracts/interfaces/IERC3156FlashLender.sol // OpenZeppelin Contracts v4.4.1 (interfaces/IERC3156FlashLender.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC3156 FlashLender, as defined in * https://eips.ethereum.org/EIPS/eip-3156[ERC-3156]. * * _Available since v4.1._ */ interface IERC3156FlashLender { /** * @dev The amount of currency available to be lended. * @param token The loan currency. * @return The amount of `token` that can be borrowed. */ function maxFlashLoan(address token) external view returns (uint256); /** * @dev The fee to be charged for a given loan. * @param token The loan currency. * @param amount The amount of tokens lent. * @return The amount of `token` to be charged for the loan, on top of the returned principal. */ function flashFee(address token, uint256 amount) external view returns (uint256); /** * @dev Initiate a flash loan. * @param receiver The receiver of the tokens in the loan, and the receiver of the callback. * @param token The loan currency. * @param amount The amount of tokens lent. * @param data Arbitrary data structure, intended to contain user-defined parameters. */ function flashLoan( IERC3156FlashBorrower receiver, address token, uint256 amount, bytes calldata data ) external returns (bool); } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev 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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount ) external returns (bool); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ 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); } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 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: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, 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) { address owner = _msgSender(); _approve(owner, 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: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, 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) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, 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) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, 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: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, 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 Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - 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 {} } // File: @openzeppelin/contracts/token/ERC20/extensions/ERC20FlashMint.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/extensions/ERC20FlashMint.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the ERC3156 Flash loans extension, as defined in * https://eips.ethereum.org/EIPS/eip-3156[ERC-3156]. * * Adds the {flashLoan} method, which provides flash loan support at the token * level. By default there is no fee, but this can be changed by overriding {flashFee}. * * _Available since v4.1._ */ abstract contract ERC20FlashMint is ERC20, IERC3156FlashLender { bytes32 private constant _RETURN_VALUE = keccak256("ERC3156FlashBorrower.onFlashLoan"); /** * @dev Returns the maximum amount of tokens available for loan. * @param token The address of the token that is requested. * @return The amount of token that can be loaned. */ function maxFlashLoan(address token) public view virtual override returns (uint256) { return token == address(this) ? type(uint256).max - ERC20.totalSupply() : 0; } /** * @dev Returns the fee applied when doing flash loans. By default this * implementation has 0 fees. This function can be overloaded to make * the flash loan mechanism deflationary. * @param token The token to be flash loaned. * @param amount The amount of tokens to be loaned. * @return The fees applied to the corresponding flash loan. */ function flashFee(address token, uint256 amount) public view virtual override returns (uint256) { require(token == address(this), "ERC20FlashMint: wrong token"); // silence warning about unused variable without the addition of bytecode. amount; return 0; } /** * @dev Returns the receiver address of the flash fee. By default this * implementation returns the address(0) which means the fee amount will be burnt. * This function can be overloaded to change the fee receiver. * @return The address for which the flash fee will be sent to. */ function _flashFeeReceiver() internal view virtual returns (address) { return address(0); } /** * @dev Performs a flash loan. New tokens are minted and sent to the * `receiver`, who is required to implement the {IERC3156FlashBorrower} * interface. By the end of the flash loan, the receiver is expected to own * amount + fee tokens and have them approved back to the token contract itself so * they can be burned. * @param receiver The receiver of the flash loan. Should implement the * {IERC3156FlashBorrower.onFlashLoan} interface. * @param token The token to be flash loaned. Only `address(this)` is * supported. * @param amount The amount of tokens to be loaned. * @param data An arbitrary datafield that is passed to the receiver. * @return `true` if the flash loan was successful. */ // This function can reenter, but it doesn't pose a risk because it always preserves the property that the amount // minted at the beginning is always recovered and burned at the end, or else the entire function will revert. // slither-disable-next-line reentrancy-no-eth function flashLoan( IERC3156FlashBorrower receiver, address token, uint256 amount, bytes calldata data ) public virtual override returns (bool) { require(amount <= maxFlashLoan(token), "ERC20FlashMint: amount exceeds maxFlashLoan"); uint256 fee = flashFee(token, amount); _mint(address(receiver), amount); require( receiver.onFlashLoan(msg.sender, token, amount, fee, data) == _RETURN_VALUE, "ERC20FlashMint: invalid return value" ); address flashFeeReceiver = _flashFeeReceiver(); _spendAllowance(address(receiver), address(this), amount + fee); if (fee == 0 || flashFeeReceiver == address(0)) { _burn(address(receiver), amount + fee); } else { _burn(address(receiver), amount); _transfer(address(receiver), flashFeeReceiver, fee); } return true; } } // File: @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol) pragma solidity ^0.8.0; /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { _spendAllowance(account, _msgSender(), amount); _burn(account, amount); } } // File: contracts/TMM,sol.sol pragma solidity ^0.8.4; contract TakeMyMoney is ERC20, ERC20Burnable, ERC20FlashMint { constructor() ERC20("TakeMyMoney", "TMM") { _mint(msg.sender, 9900 * 1e8 * 1e18 * 1e3); } function flashFee(address token, uint256 amount) public view override(ERC20FlashMint) returns (uint256) { require(token == address(this), "ERC20FlashMint: wrong token"); return amount / 1000; } }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","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":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"flashFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"token","type":"address"}],"name":"maxFlashLoan","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":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040518060400160405280600b81526020017f54616b654d794d6f6e65790000000000000000000000000000000000000000008152506040518060400160405280600381526020017f544d4d000000000000000000000000000000000000000000000000000000000081525081600390816200008f9190620004c6565b508060049081620000a19190620004c6565b505050620000c4336d30cf8e866d7078300fe380000000620000ca60201b60201c565b620006c8565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200013c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000133906200060e565b60405180910390fd5b62000150600083836200024260201b60201c565b80600260008282546200016491906200065f565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620001bb91906200065f565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002229190620006ab565b60405180910390a36200023e600083836200024760201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002ce57607f821691505b602082108103620002e457620002e362000286565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200034e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200030f565b6200035a86836200030f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003a7620003a16200039b8462000372565b6200037c565b62000372565b9050919050565b6000819050919050565b620003c38362000386565b620003db620003d282620003ae565b8484546200031c565b825550505050565b600090565b620003f2620003e3565b620003ff818484620003b8565b505050565b5b8181101562000427576200041b600082620003e8565b60018101905062000405565b5050565b601f82111562000476576200044081620002ea565b6200044b84620002ff565b810160208510156200045b578190505b620004736200046a85620002ff565b83018262000404565b50505b505050565b600082821c905092915050565b60006200049b600019846008026200047b565b1980831691505092915050565b6000620004b6838362000488565b9150826002028217905092915050565b620004d1826200024c565b67ffffffffffffffff811115620004ed57620004ec62000257565b5b620004f98254620002b5565b620005068282856200042b565b600060209050601f8311600181146200053e576000841562000529578287015190505b620005358582620004a8565b865550620005a5565b601f1984166200054e86620002ea565b60005b82811015620005785784890151825560018201915060208501945060208101905062000551565b8683101562000598578489015162000594601f89168262000488565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620005f6601f83620005ad565b91506200060382620005be565b602082019050919050565b600060208201905081810360008301526200062981620005e7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200066c8262000372565b9150620006798362000372565b925082820190508082111562000694576200069362000630565b5b92915050565b620006a58162000372565b82525050565b6000602082019050620006c260008301846200069a565b92915050565b611fdb80620006d86000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063613255ab11610097578063a457c2d711610066578063a457c2d7146102d5578063a9059cbb14610305578063d9d98ce414610335578063dd62ed3e1461036557610100565b8063613255ab1461023b57806370a082311461026b57806379cc67901461029b57806395d89b41146102b757610100565b8063313ce567116100d3578063313ce567146101a157806339509351146101bf57806342966c68146101ef5780635cffe9de1461020b57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d610395565b60405161011a919061128c565b60405180910390f35b61013d6004803603810190610138919061134c565b610427565b60405161014a91906113a7565b60405180910390f35b61015b61044a565b60405161016891906113d1565b60405180910390f35b61018b600480360381019061018691906113ec565b610454565b60405161019891906113a7565b60405180910390f35b6101a9610483565b6040516101b6919061145b565b60405180910390f35b6101d960048036038101906101d4919061134c565b61048c565b6040516101e691906113a7565b60405180910390f35b61020960048036038101906102049190611476565b6104c3565b005b61022560048036038101906102209190611546565b6104d7565b60405161023291906113a7565b60405180910390f35b610255600480360381019061025091906115ce565b6106c4565b60405161026291906113d1565b60405180910390f35b610285600480360381019061028091906115ce565b61073b565b60405161029291906113d1565b60405180910390f35b6102b560048036038101906102b0919061134c565b610783565b005b6102bf6107a3565b6040516102cc919061128c565b60405180910390f35b6102ef60048036038101906102ea919061134c565b610835565b6040516102fc91906113a7565b60405180910390f35b61031f600480360381019061031a919061134c565b6108ac565b60405161032c91906113a7565b60405180910390f35b61034f600480360381019061034a919061134c565b6108cf565b60405161035c91906113d1565b60405180910390f35b61037f600480360381019061037a91906115fb565b610955565b60405161038c91906113d1565b60405180910390f35b6060600380546103a49061166a565b80601f01602080910402602001604051908101604052809291908181526020018280546103d09061166a565b801561041d5780601f106103f25761010080835404028352916020019161041d565b820191906000526020600020905b81548152906001019060200180831161040057829003601f168201915b5050505050905090565b6000806104326109dc565b905061043f8185856109e4565b600191505092915050565b6000600254905090565b60008061045f6109dc565b905061046c858285610bad565b610477858585610c39565b60019150509392505050565b60006012905090565b6000806104976109dc565b90506104b88185856104a98589610955565b6104b391906116ca565b6109e4565b600191505092915050565b6104d46104ce6109dc565b82610eb8565b50565b60006104e2856106c4565b841115610524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051b90611770565b60405180910390fd5b600061053086866108cf565b905061053c878661108e565b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98773ffffffffffffffffffffffffffffffffffffffff166323e30c8b338989868a8a6040518763ffffffff1660e01b81526004016105a0969594939291906117ec565b6020604051808303816000875af11580156105bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e3919061187e565b14610623576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061a9061191d565b60405180910390fd5b600061062d6111ed565b90506106458830848961064091906116ca565b610bad565b60008214806106805750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1561069f5761069a88838861069591906116ca565b610eb8565b6106b5565b6106a98887610eb8565b6106b4888284610c39565b5b60019250505095945050505050565b60003073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610700576000610734565b61070861044a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610733919061193d565b5b9050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107958261078f6109dc565b83610bad565b61079f8282610eb8565b5050565b6060600480546107b29061166a565b80601f01602080910402602001604051908101604052809291908181526020018280546107de9061166a565b801561082b5780601f106108005761010080835404028352916020019161082b565b820191906000526020600020905b81548152906001019060200180831161080e57829003601f168201915b5050505050905090565b6000806108406109dc565b9050600061084e8286610955565b905083811015610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088a906119e3565b60405180910390fd5b6108a082868684036109e4565b60019250505092915050565b6000806108b76109dc565b90506108c4818585610c39565b600191505092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461093f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093690611a4f565b60405180910390fd5b6103e88261094d9190611a9e565b905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4a90611b41565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990611bd3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ba091906113d1565b60405180910390a3505050565b6000610bb98484610955565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c335781811015610c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1c90611c3f565b60405180910390fd5b610c3284848484036109e4565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9f90611cd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0e90611d63565b60405180910390fd5b610d228383836111f2565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f90611df5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e3b91906116ca565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e9f91906113d1565b60405180910390a3610eb28484846111f7565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1e90611e87565b60405180910390fd5b610f33826000836111f2565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb090611f19565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611010919061193d565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161107591906113d1565b60405180910390a3611089836000846111f7565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f490611f85565b60405180910390fd5b611109600083836111f2565b806002600082825461111b91906116ca565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461117091906116ca565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111d591906113d1565b60405180910390a36111e9600083836111f7565b5050565b600090565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561123657808201518184015260208101905061121b565b60008484015250505050565b6000601f19601f8301169050919050565b600061125e826111fc565b6112688185611207565b9350611278818560208601611218565b61128181611242565b840191505092915050565b600060208201905081810360008301526112a68184611253565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006112e3826112b8565b9050919050565b6112f3816112d8565b81146112fe57600080fd5b50565b600081359050611310816112ea565b92915050565b6000819050919050565b61132981611316565b811461133457600080fd5b50565b60008135905061134681611320565b92915050565b60008060408385031215611363576113626112ae565b5b600061137185828601611301565b925050602061138285828601611337565b9150509250929050565b60008115159050919050565b6113a18161138c565b82525050565b60006020820190506113bc6000830184611398565b92915050565b6113cb81611316565b82525050565b60006020820190506113e660008301846113c2565b92915050565b600080600060608486031215611405576114046112ae565b5b600061141386828701611301565b935050602061142486828701611301565b925050604061143586828701611337565b9150509250925092565b600060ff82169050919050565b6114558161143f565b82525050565b6000602082019050611470600083018461144c565b92915050565b60006020828403121561148c5761148b6112ae565b5b600061149a84828501611337565b91505092915050565b60006114ae826112d8565b9050919050565b6114be816114a3565b81146114c957600080fd5b50565b6000813590506114db816114b5565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611506576115056114e1565b5b8235905067ffffffffffffffff811115611523576115226114e6565b5b60208301915083600182028301111561153f5761153e6114eb565b5b9250929050565b600080600080600060808688031215611562576115616112ae565b5b6000611570888289016114cc565b955050602061158188828901611301565b945050604061159288828901611337565b935050606086013567ffffffffffffffff8111156115b3576115b26112b3565b5b6115bf888289016114f0565b92509250509295509295909350565b6000602082840312156115e4576115e36112ae565b5b60006115f284828501611301565b91505092915050565b60008060408385031215611612576116116112ae565b5b600061162085828601611301565b925050602061163185828601611301565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061168257607f821691505b6020821081036116955761169461163b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006116d582611316565b91506116e083611316565b92508282019050808211156116f8576116f761169b565b5b92915050565b7f4552433230466c6173684d696e743a20616d6f756e742065786365656473206d60008201527f6178466c6173684c6f616e000000000000000000000000000000000000000000602082015250565b600061175a602b83611207565b9150611765826116fe565b604082019050919050565b600060208201905081810360008301526117898161174d565b9050919050565b611799816112d8565b82525050565b600082825260208201905092915050565b82818337600083830152505050565b60006117cb838561179f565b93506117d88385846117b0565b6117e183611242565b840190509392505050565b600060a0820190506118016000830189611790565b61180e6020830188611790565b61181b60408301876113c2565b61182860608301866113c2565b818103608083015261183b8184866117bf565b9050979650505050505050565b6000819050919050565b61185b81611848565b811461186657600080fd5b50565b60008151905061187881611852565b92915050565b600060208284031215611894576118936112ae565b5b60006118a284828501611869565b91505092915050565b7f4552433230466c6173684d696e743a20696e76616c69642072657475726e207660008201527f616c756500000000000000000000000000000000000000000000000000000000602082015250565b6000611907602483611207565b9150611912826118ab565b604082019050919050565b60006020820190508181036000830152611936816118fa565b9050919050565b600061194882611316565b915061195383611316565b925082820390508181111561196b5761196a61169b565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006119cd602583611207565b91506119d882611971565b604082019050919050565b600060208201905081810360008301526119fc816119c0565b9050919050565b7f4552433230466c6173684d696e743a2077726f6e6720746f6b656e0000000000600082015250565b6000611a39601b83611207565b9150611a4482611a03565b602082019050919050565b60006020820190508181036000830152611a6881611a2c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611aa982611316565b9150611ab483611316565b925082611ac457611ac3611a6f565b5b828204905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611b2b602483611207565b9150611b3682611acf565b604082019050919050565b60006020820190508181036000830152611b5a81611b1e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611bbd602283611207565b9150611bc882611b61565b604082019050919050565b60006020820190508181036000830152611bec81611bb0565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611c29601d83611207565b9150611c3482611bf3565b602082019050919050565b60006020820190508181036000830152611c5881611c1c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611cbb602583611207565b9150611cc682611c5f565b604082019050919050565b60006020820190508181036000830152611cea81611cae565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611d4d602383611207565b9150611d5882611cf1565b604082019050919050565b60006020820190508181036000830152611d7c81611d40565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611ddf602683611207565b9150611dea82611d83565b604082019050919050565b60006020820190508181036000830152611e0e81611dd2565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e71602183611207565b9150611e7c82611e15565b604082019050919050565b60006020820190508181036000830152611ea081611e64565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f03602283611207565b9150611f0e82611ea7565b604082019050919050565b60006020820190508181036000830152611f3281611ef6565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611f6f601f83611207565b9150611f7a82611f39565b602082019050919050565b60006020820190508181036000830152611f9e81611f62565b905091905056fea26469706673582212201fd632ef55fac0010eaaf576a3e2217f1f03f6435717a085308793f3dbd0708864736f6c63430008100033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c8063613255ab11610097578063a457c2d711610066578063a457c2d7146102d5578063a9059cbb14610305578063d9d98ce414610335578063dd62ed3e1461036557610100565b8063613255ab1461023b57806370a082311461026b57806379cc67901461029b57806395d89b41146102b757610100565b8063313ce567116100d3578063313ce567146101a157806339509351146101bf57806342966c68146101ef5780635cffe9de1461020b57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d610395565b60405161011a919061128c565b60405180910390f35b61013d6004803603810190610138919061134c565b610427565b60405161014a91906113a7565b60405180910390f35b61015b61044a565b60405161016891906113d1565b60405180910390f35b61018b600480360381019061018691906113ec565b610454565b60405161019891906113a7565b60405180910390f35b6101a9610483565b6040516101b6919061145b565b60405180910390f35b6101d960048036038101906101d4919061134c565b61048c565b6040516101e691906113a7565b60405180910390f35b61020960048036038101906102049190611476565b6104c3565b005b61022560048036038101906102209190611546565b6104d7565b60405161023291906113a7565b60405180910390f35b610255600480360381019061025091906115ce565b6106c4565b60405161026291906113d1565b60405180910390f35b610285600480360381019061028091906115ce565b61073b565b60405161029291906113d1565b60405180910390f35b6102b560048036038101906102b0919061134c565b610783565b005b6102bf6107a3565b6040516102cc919061128c565b60405180910390f35b6102ef60048036038101906102ea919061134c565b610835565b6040516102fc91906113a7565b60405180910390f35b61031f600480360381019061031a919061134c565b6108ac565b60405161032c91906113a7565b60405180910390f35b61034f600480360381019061034a919061134c565b6108cf565b60405161035c91906113d1565b60405180910390f35b61037f600480360381019061037a91906115fb565b610955565b60405161038c91906113d1565b60405180910390f35b6060600380546103a49061166a565b80601f01602080910402602001604051908101604052809291908181526020018280546103d09061166a565b801561041d5780601f106103f25761010080835404028352916020019161041d565b820191906000526020600020905b81548152906001019060200180831161040057829003601f168201915b5050505050905090565b6000806104326109dc565b905061043f8185856109e4565b600191505092915050565b6000600254905090565b60008061045f6109dc565b905061046c858285610bad565b610477858585610c39565b60019150509392505050565b60006012905090565b6000806104976109dc565b90506104b88185856104a98589610955565b6104b391906116ca565b6109e4565b600191505092915050565b6104d46104ce6109dc565b82610eb8565b50565b60006104e2856106c4565b841115610524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051b90611770565b60405180910390fd5b600061053086866108cf565b905061053c878661108e565b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98773ffffffffffffffffffffffffffffffffffffffff166323e30c8b338989868a8a6040518763ffffffff1660e01b81526004016105a0969594939291906117ec565b6020604051808303816000875af11580156105bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e3919061187e565b14610623576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061a9061191d565b60405180910390fd5b600061062d6111ed565b90506106458830848961064091906116ca565b610bad565b60008214806106805750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1561069f5761069a88838861069591906116ca565b610eb8565b6106b5565b6106a98887610eb8565b6106b4888284610c39565b5b60019250505095945050505050565b60003073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610700576000610734565b61070861044a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610733919061193d565b5b9050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107958261078f6109dc565b83610bad565b61079f8282610eb8565b5050565b6060600480546107b29061166a565b80601f01602080910402602001604051908101604052809291908181526020018280546107de9061166a565b801561082b5780601f106108005761010080835404028352916020019161082b565b820191906000526020600020905b81548152906001019060200180831161080e57829003601f168201915b5050505050905090565b6000806108406109dc565b9050600061084e8286610955565b905083811015610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088a906119e3565b60405180910390fd5b6108a082868684036109e4565b60019250505092915050565b6000806108b76109dc565b90506108c4818585610c39565b600191505092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461093f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093690611a4f565b60405180910390fd5b6103e88261094d9190611a9e565b905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4a90611b41565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990611bd3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ba091906113d1565b60405180910390a3505050565b6000610bb98484610955565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c335781811015610c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1c90611c3f565b60405180910390fd5b610c3284848484036109e4565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9f90611cd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0e90611d63565b60405180910390fd5b610d228383836111f2565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f90611df5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e3b91906116ca565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e9f91906113d1565b60405180910390a3610eb28484846111f7565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1e90611e87565b60405180910390fd5b610f33826000836111f2565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb090611f19565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611010919061193d565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161107591906113d1565b60405180910390a3611089836000846111f7565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f490611f85565b60405180910390fd5b611109600083836111f2565b806002600082825461111b91906116ca565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461117091906116ca565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111d591906113d1565b60405180910390a36111e9600083836111f7565b5050565b600090565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561123657808201518184015260208101905061121b565b60008484015250505050565b6000601f19601f8301169050919050565b600061125e826111fc565b6112688185611207565b9350611278818560208601611218565b61128181611242565b840191505092915050565b600060208201905081810360008301526112a68184611253565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006112e3826112b8565b9050919050565b6112f3816112d8565b81146112fe57600080fd5b50565b600081359050611310816112ea565b92915050565b6000819050919050565b61132981611316565b811461133457600080fd5b50565b60008135905061134681611320565b92915050565b60008060408385031215611363576113626112ae565b5b600061137185828601611301565b925050602061138285828601611337565b9150509250929050565b60008115159050919050565b6113a18161138c565b82525050565b60006020820190506113bc6000830184611398565b92915050565b6113cb81611316565b82525050565b60006020820190506113e660008301846113c2565b92915050565b600080600060608486031215611405576114046112ae565b5b600061141386828701611301565b935050602061142486828701611301565b925050604061143586828701611337565b9150509250925092565b600060ff82169050919050565b6114558161143f565b82525050565b6000602082019050611470600083018461144c565b92915050565b60006020828403121561148c5761148b6112ae565b5b600061149a84828501611337565b91505092915050565b60006114ae826112d8565b9050919050565b6114be816114a3565b81146114c957600080fd5b50565b6000813590506114db816114b5565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611506576115056114e1565b5b8235905067ffffffffffffffff811115611523576115226114e6565b5b60208301915083600182028301111561153f5761153e6114eb565b5b9250929050565b600080600080600060808688031215611562576115616112ae565b5b6000611570888289016114cc565b955050602061158188828901611301565b945050604061159288828901611337565b935050606086013567ffffffffffffffff8111156115b3576115b26112b3565b5b6115bf888289016114f0565b92509250509295509295909350565b6000602082840312156115e4576115e36112ae565b5b60006115f284828501611301565b91505092915050565b60008060408385031215611612576116116112ae565b5b600061162085828601611301565b925050602061163185828601611301565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061168257607f821691505b6020821081036116955761169461163b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006116d582611316565b91506116e083611316565b92508282019050808211156116f8576116f761169b565b5b92915050565b7f4552433230466c6173684d696e743a20616d6f756e742065786365656473206d60008201527f6178466c6173684c6f616e000000000000000000000000000000000000000000602082015250565b600061175a602b83611207565b9150611765826116fe565b604082019050919050565b600060208201905081810360008301526117898161174d565b9050919050565b611799816112d8565b82525050565b600082825260208201905092915050565b82818337600083830152505050565b60006117cb838561179f565b93506117d88385846117b0565b6117e183611242565b840190509392505050565b600060a0820190506118016000830189611790565b61180e6020830188611790565b61181b60408301876113c2565b61182860608301866113c2565b818103608083015261183b8184866117bf565b9050979650505050505050565b6000819050919050565b61185b81611848565b811461186657600080fd5b50565b60008151905061187881611852565b92915050565b600060208284031215611894576118936112ae565b5b60006118a284828501611869565b91505092915050565b7f4552433230466c6173684d696e743a20696e76616c69642072657475726e207660008201527f616c756500000000000000000000000000000000000000000000000000000000602082015250565b6000611907602483611207565b9150611912826118ab565b604082019050919050565b60006020820190508181036000830152611936816118fa565b9050919050565b600061194882611316565b915061195383611316565b925082820390508181111561196b5761196a61169b565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006119cd602583611207565b91506119d882611971565b604082019050919050565b600060208201905081810360008301526119fc816119c0565b9050919050565b7f4552433230466c6173684d696e743a2077726f6e6720746f6b656e0000000000600082015250565b6000611a39601b83611207565b9150611a4482611a03565b602082019050919050565b60006020820190508181036000830152611a6881611a2c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611aa982611316565b9150611ab483611316565b925082611ac457611ac3611a6f565b5b828204905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611b2b602483611207565b9150611b3682611acf565b604082019050919050565b60006020820190508181036000830152611b5a81611b1e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611bbd602283611207565b9150611bc882611b61565b604082019050919050565b60006020820190508181036000830152611bec81611bb0565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611c29601d83611207565b9150611c3482611bf3565b602082019050919050565b60006020820190508181036000830152611c5881611c1c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611cbb602583611207565b9150611cc682611c5f565b604082019050919050565b60006020820190508181036000830152611cea81611cae565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611d4d602383611207565b9150611d5882611cf1565b604082019050919050565b60006020820190508181036000830152611d7c81611d40565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611ddf602683611207565b9150611dea82611d83565b604082019050919050565b60006020820190508181036000830152611e0e81611dd2565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e71602183611207565b9150611e7c82611e15565b604082019050919050565b60006020820190508181036000830152611ea081611e64565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f03602283611207565b9150611f0e82611ea7565b604082019050919050565b60006020820190508181036000830152611f3281611ef6565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611f6f601f83611207565b9150611f7a82611f39565b602082019050919050565b60006020820190508181036000830152611f9e81611f62565b905091905056fea26469706673582212201fd632ef55fac0010eaaf576a3e2217f1f03f6435717a085308793f3dbd0708864736f6c63430008100033
Deployed ByteCode Sourcemap
25475:398:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9171:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11522:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10291:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12303:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10133:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13007:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24825:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23276:959;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20894:178;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10462:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25235:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9390:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13748:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10795:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25654:216;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11051:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9171:100;9225:13;9258:5;9251:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9171:100;:::o;11522:201::-;11605:4;11622:13;11638:12;:10;:12::i;:::-;11622:28;;11661:32;11670:5;11677:7;11686:6;11661:8;:32::i;:::-;11711:4;11704:11;;;11522:201;;;;:::o;10291:108::-;10352:7;10379:12;;10372:19;;10291:108;:::o;12303:295::-;12434:4;12451:15;12469:12;:10;:12::i;:::-;12451:30;;12492:38;12508:4;12514:7;12523:6;12492:15;:38::i;:::-;12541:27;12551:4;12557:2;12561:6;12541:9;:27::i;:::-;12586:4;12579:11;;;12303:295;;;;;:::o;10133:93::-;10191:5;10216:2;10209:9;;10133:93;:::o;13007:238::-;13095:4;13112:13;13128:12;:10;:12::i;:::-;13112:28;;13151:64;13160:5;13167:7;13204:10;13176:25;13186:5;13193:7;13176:9;:25::i;:::-;:38;;;;:::i;:::-;13151:8;:64::i;:::-;13233:4;13226:11;;;13007:238;;;;:::o;24825:91::-;24881:27;24887:12;:10;:12::i;:::-;24901:6;24881:5;:27::i;:::-;24825:91;:::o;23276:959::-;23455:4;23490:19;23503:5;23490:12;:19::i;:::-;23480:6;:29;;23472:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;23568:11;23582:23;23591:5;23598:6;23582:8;:23::i;:::-;23568:37;;23616:32;23630:8;23641:6;23616:5;:32::i;:::-;20631:45;23681:8;:20;;;23702:10;23714:5;23721:6;23729:3;23734:4;;23681:58;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:75;23659:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;23831:24;23858:19;:17;:19::i;:::-;23831:46;;23888:63;23912:8;23931:4;23947:3;23938:6;:12;;;;:::i;:::-;23888:15;:63::i;:::-;23973:1;23966:3;:8;:42;;;;24006:1;23978:30;;:16;:30;;;23966:42;23962:244;;;24025:38;24039:8;24059:3;24050:6;:12;;;;:::i;:::-;24025:5;:38::i;:::-;23962:244;;;24096:32;24110:8;24121:6;24096:5;:32::i;:::-;24143:51;24161:8;24172:16;24190:3;24143:9;:51::i;:::-;23962:244;24223:4;24216:11;;;;23276:959;;;;;;;:::o;20894:178::-;20969:7;21013:4;20996:22;;:5;:22;;;:68;;21063:1;20996:68;;;21041:19;:17;:19::i;:::-;21021:17;:39;;;;:::i;:::-;20996:68;20989:75;;20894:178;;;:::o;10462:127::-;10536:7;10563:9;:18;10573:7;10563:18;;;;;;;;;;;;;;;;10556:25;;10462:127;;;:::o;25235:164::-;25312:46;25328:7;25337:12;:10;:12::i;:::-;25351:6;25312:15;:46::i;:::-;25369:22;25375:7;25384:6;25369:5;:22::i;:::-;25235:164;;:::o;9390:104::-;9446:13;9479:7;9472:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9390:104;:::o;13748:436::-;13841:4;13858:13;13874:12;:10;:12::i;:::-;13858:28;;13897:24;13924:25;13934:5;13941:7;13924:9;:25::i;:::-;13897:52;;13988:15;13968:16;:35;;13960:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14081:60;14090:5;14097:7;14125:15;14106:16;:34;14081:8;:60::i;:::-;14172:4;14165:11;;;;13748:436;;;;:::o;10795:193::-;10874:4;10891:13;10907:12;:10;:12::i;:::-;10891:28;;10930;10940:5;10947:2;10951:6;10930:9;:28::i;:::-;10976:4;10969:11;;;10795:193;;;;:::o;25654:216::-;25749:7;25794:4;25777:22;;:5;:22;;;25769:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;25858:4;25849:6;:13;;;;:::i;:::-;25842:20;;25654:216;;;;:::o;11051:151::-;11140:7;11167:11;:18;11179:5;11167:18;;;;;;;;;;;;;;;:27;11186:7;11167:27;;;;;;;;;;;;;;;;11160:34;;11051:151;;;;:::o;3197:98::-;3250:7;3277:10;3270:17;;3197:98;:::o;17382:380::-;17535:1;17518:19;;:5;:19;;;17510:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17616:1;17597:21;;:7;:21;;;17589:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17700:6;17670:11;:18;17682:5;17670:18;;;;;;;;;;;;;;;:27;17689:7;17670:27;;;;;;;;;;;;;;;:36;;;;17738:7;17722:32;;17731:5;17722:32;;;17747:6;17722:32;;;;;;:::i;:::-;;;;;;;;17382:380;;;:::o;18053:453::-;18188:24;18215:25;18225:5;18232:7;18215:9;:25::i;:::-;18188:52;;18275:17;18255:16;:37;18251:248;;18337:6;18317:16;:26;;18309:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18421:51;18430:5;18437:7;18465:6;18446:16;:25;18421:8;:51::i;:::-;18251:248;18177:329;18053:453;;;:::o;14663:671::-;14810:1;14794:18;;:4;:18;;;14786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14887:1;14873:16;;:2;:16;;;14865:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14942:38;14963:4;14969:2;14973:6;14942:20;:38::i;:::-;14993:19;15015:9;:15;15025:4;15015:15;;;;;;;;;;;;;;;;14993:37;;15064:6;15049:11;:21;;15041:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15181:6;15167:11;:20;15149:9;:15;15159:4;15149:15;;;;;;;;;;;;;;;:38;;;;15226:6;15209:9;:13;15219:2;15209:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;15265:2;15250:26;;15259:4;15250:26;;;15269:6;15250:26;;;;;;:::i;:::-;;;;;;;;15289:37;15309:4;15315:2;15319:6;15289:19;:37::i;:::-;14775:559;14663:671;;;:::o;16353:591::-;16456:1;16437:21;;:7;:21;;;16429:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16509:49;16530:7;16547:1;16551:6;16509:20;:49::i;:::-;16571:22;16596:9;:18;16606:7;16596:18;;;;;;;;;;;;;;;;16571:43;;16651:6;16633:14;:24;;16625:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16770:6;16753:14;:23;16732:9;:18;16742:7;16732:18;;;;;;;;;;;;;;;:44;;;;16814:6;16798:12;;:22;;;;;;;:::i;:::-;;;;;;;;16864:1;16838:37;;16847:7;16838:37;;;16868:6;16838:37;;;;;;:::i;:::-;;;;;;;;16888:48;16908:7;16925:1;16929:6;16888:19;:48::i;:::-;16418:526;16353:591;;:::o;15621:399::-;15724:1;15705:21;;:7;:21;;;15697:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;15775:49;15804:1;15808:7;15817:6;15775:20;:49::i;:::-;15853:6;15837:12;;:22;;;;;;;:::i;:::-;;;;;;;;15892:6;15870:9;:18;15880:7;15870:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;15935:7;15914:37;;15931:1;15914:37;;;15944:6;15914:37;;;;;;:::i;:::-;;;;;;;;15964:48;15992:1;15996:7;16005:6;15964:19;:48::i;:::-;15621:399;;:::o;22095:105::-;22155:7;22095:105;:::o;19106:125::-;;;;:::o;19835:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:124::-;5253:7;5282:24;5300:5;5282:24;:::i;:::-;5271:35;;5188:124;;;:::o;5318:178::-;5419:52;5465:5;5419:52;:::i;:::-;5412:5;5409:63;5399:91;;5486:1;5483;5476:12;5399:91;5318:178;:::o;5502:195::-;5576:5;5614:6;5601:20;5592:29;;5630:61;5685:5;5630:61;:::i;:::-;5502:195;;;;:::o;5703:117::-;5812:1;5809;5802:12;5826:117;5935:1;5932;5925:12;5949:117;6058:1;6055;6048:12;6085:552;6142:8;6152:6;6202:3;6195:4;6187:6;6183:17;6179:27;6169:122;;6210:79;;:::i;:::-;6169:122;6323:6;6310:20;6300:30;;6353:18;6345:6;6342:30;6339:117;;;6375:79;;:::i;:::-;6339:117;6489:4;6481:6;6477:17;6465:29;;6543:3;6535:4;6527:6;6523:17;6513:8;6509:32;6506:41;6503:128;;;6550:79;;:::i;:::-;6503:128;6085:552;;;;;:::o;6643:1019::-;6768:6;6776;6784;6792;6800;6849:3;6837:9;6828:7;6824:23;6820:33;6817:120;;;6856:79;;:::i;:::-;6817:120;6976:1;7001:81;7074:7;7065:6;7054:9;7050:22;7001:81;:::i;:::-;6991:91;;6947:145;7131:2;7157:53;7202:7;7193:6;7182:9;7178:22;7157:53;:::i;:::-;7147:63;;7102:118;7259:2;7285:53;7330:7;7321:6;7310:9;7306:22;7285:53;:::i;:::-;7275:63;;7230:118;7415:2;7404:9;7400:18;7387:32;7446:18;7438:6;7435:30;7432:117;;;7468:79;;:::i;:::-;7432:117;7581:64;7637:7;7628:6;7617:9;7613:22;7581:64;:::i;:::-;7563:82;;;;7358:297;6643:1019;;;;;;;;:::o;7668:329::-;7727:6;7776:2;7764:9;7755:7;7751:23;7747:32;7744:119;;;7782:79;;:::i;:::-;7744:119;7902:1;7927:53;7972:7;7963:6;7952:9;7948:22;7927:53;:::i;:::-;7917:63;;7873:117;7668:329;;;;:::o;8003:474::-;8071:6;8079;8128:2;8116:9;8107:7;8103:23;8099:32;8096:119;;;8134:79;;:::i;:::-;8096:119;8254:1;8279:53;8324:7;8315:6;8304:9;8300:22;8279:53;:::i;:::-;8269:63;;8225:117;8381:2;8407:53;8452:7;8443:6;8432:9;8428:22;8407:53;:::i;:::-;8397:63;;8352:118;8003:474;;;;;:::o;8483:180::-;8531:77;8528:1;8521:88;8628:4;8625:1;8618:15;8652:4;8649:1;8642:15;8669:320;8713:6;8750:1;8744:4;8740:12;8730:22;;8797:1;8791:4;8787:12;8818:18;8808:81;;8874:4;8866:6;8862:17;8852:27;;8808:81;8936:2;8928:6;8925:14;8905:18;8902:38;8899:84;;8955:18;;:::i;:::-;8899:84;8720:269;8669:320;;;:::o;8995:180::-;9043:77;9040:1;9033:88;9140:4;9137:1;9130:15;9164:4;9161:1;9154:15;9181:191;9221:3;9240:20;9258:1;9240:20;:::i;:::-;9235:25;;9274:20;9292:1;9274:20;:::i;:::-;9269:25;;9317:1;9314;9310:9;9303:16;;9338:3;9335:1;9332:10;9329:36;;;9345:18;;:::i;:::-;9329:36;9181:191;;;;:::o;9378:230::-;9518:34;9514:1;9506:6;9502:14;9495:58;9587:13;9582:2;9574:6;9570:15;9563:38;9378:230;:::o;9614:366::-;9756:3;9777:67;9841:2;9836:3;9777:67;:::i;:::-;9770:74;;9853:93;9942:3;9853:93;:::i;:::-;9971:2;9966:3;9962:12;9955:19;;9614:366;;;:::o;9986:419::-;10152:4;10190:2;10179:9;10175:18;10167:26;;10239:9;10233:4;10229:20;10225:1;10214:9;10210:17;10203:47;10267:131;10393:4;10267:131;:::i;:::-;10259:139;;9986:419;;;:::o;10411:118::-;10498:24;10516:5;10498:24;:::i;:::-;10493:3;10486:37;10411:118;;:::o;10535:168::-;10618:11;10652:6;10647:3;10640:19;10692:4;10687:3;10683:14;10668:29;;10535:168;;;;:::o;10709:146::-;10806:6;10801:3;10796;10783:30;10847:1;10838:6;10833:3;10829:16;10822:27;10709:146;;;:::o;10883:314::-;10979:3;11000:70;11063:6;11058:3;11000:70;:::i;:::-;10993:77;;11080:56;11129:6;11124:3;11117:5;11080:56;:::i;:::-;11161:29;11183:6;11161:29;:::i;:::-;11156:3;11152:39;11145:46;;10883:314;;;;;:::o;11203:771::-;11436:4;11474:3;11463:9;11459:19;11451:27;;11488:71;11556:1;11545:9;11541:17;11532:6;11488:71;:::i;:::-;11569:72;11637:2;11626:9;11622:18;11613:6;11569:72;:::i;:::-;11651;11719:2;11708:9;11704:18;11695:6;11651:72;:::i;:::-;11733;11801:2;11790:9;11786:18;11777:6;11733:72;:::i;:::-;11853:9;11847:4;11843:20;11837:3;11826:9;11822:19;11815:49;11881:86;11962:4;11953:6;11945;11881:86;:::i;:::-;11873:94;;11203:771;;;;;;;;;:::o;11980:77::-;12017:7;12046:5;12035:16;;11980:77;;;:::o;12063:122::-;12136:24;12154:5;12136:24;:::i;:::-;12129:5;12126:35;12116:63;;12175:1;12172;12165:12;12116:63;12063:122;:::o;12191:143::-;12248:5;12279:6;12273:13;12264:22;;12295:33;12322:5;12295:33;:::i;:::-;12191:143;;;;:::o;12340:351::-;12410:6;12459:2;12447:9;12438:7;12434:23;12430:32;12427:119;;;12465:79;;:::i;:::-;12427:119;12585:1;12610:64;12666:7;12657:6;12646:9;12642:22;12610:64;:::i;:::-;12600:74;;12556:128;12340:351;;;;:::o;12697:223::-;12837:34;12833:1;12825:6;12821:14;12814:58;12906:6;12901:2;12893:6;12889:15;12882:31;12697:223;:::o;12926:366::-;13068:3;13089:67;13153:2;13148:3;13089:67;:::i;:::-;13082:74;;13165:93;13254:3;13165:93;:::i;:::-;13283:2;13278:3;13274:12;13267:19;;12926:366;;;:::o;13298:419::-;13464:4;13502:2;13491:9;13487:18;13479:26;;13551:9;13545:4;13541:20;13537:1;13526:9;13522:17;13515:47;13579:131;13705:4;13579:131;:::i;:::-;13571:139;;13298:419;;;:::o;13723:194::-;13763:4;13783:20;13801:1;13783:20;:::i;:::-;13778:25;;13817:20;13835:1;13817:20;:::i;:::-;13812:25;;13861:1;13858;13854:9;13846:17;;13885:1;13879:4;13876:11;13873:37;;;13890:18;;:::i;:::-;13873:37;13723:194;;;;:::o;13923:224::-;14063:34;14059:1;14051:6;14047:14;14040:58;14132:7;14127:2;14119:6;14115:15;14108:32;13923:224;:::o;14153:366::-;14295:3;14316:67;14380:2;14375:3;14316:67;:::i;:::-;14309:74;;14392:93;14481:3;14392:93;:::i;:::-;14510:2;14505:3;14501:12;14494:19;;14153:366;;;:::o;14525:419::-;14691:4;14729:2;14718:9;14714:18;14706:26;;14778:9;14772:4;14768:20;14764:1;14753:9;14749:17;14742:47;14806:131;14932:4;14806:131;:::i;:::-;14798:139;;14525:419;;;:::o;14950:177::-;15090:29;15086:1;15078:6;15074:14;15067:53;14950:177;:::o;15133:366::-;15275:3;15296:67;15360:2;15355:3;15296:67;:::i;:::-;15289:74;;15372:93;15461:3;15372:93;:::i;:::-;15490:2;15485:3;15481:12;15474:19;;15133:366;;;:::o;15505:419::-;15671:4;15709:2;15698:9;15694:18;15686:26;;15758:9;15752:4;15748:20;15744:1;15733:9;15729:17;15722:47;15786:131;15912:4;15786:131;:::i;:::-;15778:139;;15505:419;;;:::o;15930:180::-;15978:77;15975:1;15968:88;16075:4;16072:1;16065:15;16099:4;16096:1;16089:15;16116:185;16156:1;16173:20;16191:1;16173:20;:::i;:::-;16168:25;;16207:20;16225:1;16207:20;:::i;:::-;16202:25;;16246:1;16236:35;;16251:18;;:::i;:::-;16236:35;16293:1;16290;16286:9;16281:14;;16116:185;;;;:::o;16307:223::-;16447:34;16443:1;16435:6;16431:14;16424:58;16516:6;16511:2;16503:6;16499:15;16492:31;16307:223;:::o;16536:366::-;16678:3;16699:67;16763:2;16758:3;16699:67;:::i;:::-;16692:74;;16775:93;16864:3;16775:93;:::i;:::-;16893:2;16888:3;16884:12;16877:19;;16536:366;;;:::o;16908:419::-;17074:4;17112:2;17101:9;17097:18;17089:26;;17161:9;17155:4;17151:20;17147:1;17136:9;17132:17;17125:47;17189:131;17315:4;17189:131;:::i;:::-;17181:139;;16908:419;;;:::o;17333:221::-;17473:34;17469:1;17461:6;17457:14;17450:58;17542:4;17537:2;17529:6;17525:15;17518:29;17333:221;:::o;17560:366::-;17702:3;17723:67;17787:2;17782:3;17723:67;:::i;:::-;17716:74;;17799:93;17888:3;17799:93;:::i;:::-;17917:2;17912:3;17908:12;17901:19;;17560:366;;;:::o;17932:419::-;18098:4;18136:2;18125:9;18121:18;18113:26;;18185:9;18179:4;18175:20;18171:1;18160:9;18156:17;18149:47;18213:131;18339:4;18213:131;:::i;:::-;18205:139;;17932:419;;;:::o;18357:179::-;18497:31;18493:1;18485:6;18481:14;18474:55;18357:179;:::o;18542:366::-;18684:3;18705:67;18769:2;18764:3;18705:67;:::i;:::-;18698:74;;18781:93;18870:3;18781:93;:::i;:::-;18899:2;18894:3;18890:12;18883:19;;18542:366;;;:::o;18914:419::-;19080:4;19118:2;19107:9;19103:18;19095:26;;19167:9;19161:4;19157:20;19153:1;19142:9;19138:17;19131:47;19195:131;19321:4;19195:131;:::i;:::-;19187:139;;18914:419;;;:::o;19339:224::-;19479:34;19475:1;19467:6;19463:14;19456:58;19548:7;19543:2;19535:6;19531:15;19524:32;19339:224;:::o;19569:366::-;19711:3;19732:67;19796:2;19791:3;19732:67;:::i;:::-;19725:74;;19808:93;19897:3;19808:93;:::i;:::-;19926:2;19921:3;19917:12;19910:19;;19569:366;;;:::o;19941:419::-;20107:4;20145:2;20134:9;20130:18;20122:26;;20194:9;20188:4;20184:20;20180:1;20169:9;20165:17;20158:47;20222:131;20348:4;20222:131;:::i;:::-;20214:139;;19941:419;;;:::o;20366:222::-;20506:34;20502:1;20494:6;20490:14;20483:58;20575:5;20570:2;20562:6;20558:15;20551:30;20366:222;:::o;20594:366::-;20736:3;20757:67;20821:2;20816:3;20757:67;:::i;:::-;20750:74;;20833:93;20922:3;20833:93;:::i;:::-;20951:2;20946:3;20942:12;20935:19;;20594:366;;;:::o;20966:419::-;21132:4;21170:2;21159:9;21155:18;21147:26;;21219:9;21213:4;21209:20;21205:1;21194:9;21190:17;21183:47;21247:131;21373:4;21247:131;:::i;:::-;21239:139;;20966:419;;;:::o;21391:225::-;21531:34;21527:1;21519:6;21515:14;21508:58;21600:8;21595:2;21587:6;21583:15;21576:33;21391:225;:::o;21622:366::-;21764:3;21785:67;21849:2;21844:3;21785:67;:::i;:::-;21778:74;;21861:93;21950:3;21861:93;:::i;:::-;21979:2;21974:3;21970:12;21963:19;;21622:366;;;:::o;21994:419::-;22160:4;22198:2;22187:9;22183:18;22175:26;;22247:9;22241:4;22237:20;22233:1;22222:9;22218:17;22211:47;22275:131;22401:4;22275:131;:::i;:::-;22267:139;;21994:419;;;:::o;22419:220::-;22559:34;22555:1;22547:6;22543:14;22536:58;22628:3;22623:2;22615:6;22611:15;22604:28;22419:220;:::o;22645:366::-;22787:3;22808:67;22872:2;22867:3;22808:67;:::i;:::-;22801:74;;22884:93;22973:3;22884:93;:::i;:::-;23002:2;22997:3;22993:12;22986:19;;22645:366;;;:::o;23017:419::-;23183:4;23221:2;23210:9;23206:18;23198:26;;23270:9;23264:4;23260:20;23256:1;23245:9;23241:17;23234:47;23298:131;23424:4;23298:131;:::i;:::-;23290:139;;23017:419;;;:::o;23442:221::-;23582:34;23578:1;23570:6;23566:14;23559:58;23651:4;23646:2;23638:6;23634:15;23627:29;23442:221;:::o;23669:366::-;23811:3;23832:67;23896:2;23891:3;23832:67;:::i;:::-;23825:74;;23908:93;23997:3;23908:93;:::i;:::-;24026:2;24021:3;24017:12;24010:19;;23669:366;;;:::o;24041:419::-;24207:4;24245:2;24234:9;24230:18;24222:26;;24294:9;24288:4;24284:20;24280:1;24269:9;24265:17;24258:47;24322:131;24448:4;24322:131;:::i;:::-;24314:139;;24041:419;;;:::o;24466:181::-;24606:33;24602:1;24594:6;24590:14;24583:57;24466:181;:::o;24653:366::-;24795:3;24816:67;24880:2;24875:3;24816:67;:::i;:::-;24809:74;;24892:93;24981:3;24892:93;:::i;:::-;25010:2;25005:3;25001:12;24994:19;;24653:366;;;:::o;25025:419::-;25191:4;25229:2;25218:9;25214:18;25206:26;;25278:9;25272:4;25268:20;25264:1;25253:9;25249:17;25242:47;25306:131;25432:4;25306:131;:::i;:::-;25298:139;;25025:419;;;:::o
Swarm Source
ipfs://1fd632ef55fac0010eaaf576a3e2217f1f03f6435717a085308793f3dbd07088
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.