Contract Overview
Balance:
0 MATIC
MATIC Value:
$0.00
Txn Hash |
Method
|
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0x35955850cc5073396b9408a1a7cdd10689b04799df635a13c9e1d351ae5aa279 | 0x60806040 | 28006948 | 320 days 10 hrs ago | 0x593f0a6bfc70576a9286ea7b2ab4e471b2860000 | IN | Create: SEEDBOX | 0 MATIC | 0.21456896168 |
[ Download CSV Export ]
Contract Name:
SEEDBOX
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity Multiple files format)
/** * MIT License * =========== * * Copyright (c) 2022 SeedBox * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * */ pragma solidity 0.8.0; import './LERC20.sol'; import './Address.sol'; import './SafeMath.sol'; contract SEEDBOX is LERC20 { using SafeMath for uint256; using Address for address; address public _treasury; mapping(address => bool) public feeCharge; mapping(address => bool) public blacklistedContracts; uint256 public _treasuryFee; uint256 public constant maxFee = 1500; uint256 public constant percentageConst = 10000; bool public feeEnabled; bool public initialized; modifier notInBlackListContracts() { require( (address(msg.sender).isContract() && !blacklistedContracts[msg.sender]) || !address(msg.sender).isContract(), 'Address: should be allowed' ); _; } constructor( uint256 totalSupply_, string memory name_, string memory symbol_, address admin_, address recoveryAdmin_, uint256 timelockPeriod_, address lossless_, address treasuryPool ) LERC20( totalSupply_, name_, symbol_, admin_, recoveryAdmin_, timelockPeriod_, lossless_ ) { _setTreasury(treasuryPool); _setFees(100); feeEnabled = false; initialized = false; } function init() external onlyOwner { require(!initialized, "Already initialized"); initialized = true; _mint(owner(), 1e18 * 300000000); } function updateTreasury(address treasury) external onlyOwner { _setTreasury(treasury); } function addFeeChargeAddress(address _free) external onlyOwner { feeCharge[_free] = true; } function deleteFeeChargeAddress(address _free) external onlyOwner { feeCharge[_free] = false; } function enableFee(bool status) external onlyOwner { feeEnabled = status; } function updateFee(uint256 fee) external onlyOwner { _setFees(fee); } function addBlacklistedContract(address _contract) external onlyOwner returns (bool) { require(_contract.isContract(), 'Address: is not contract or not deployed'); blacklistedContracts[_contract] = true; return true; } function removeBlacklistedContract(address _contract) external onlyOwner returns (bool) { require(_contract.isContract(), 'Address: is not contract or not deployed'); blacklistedContracts[_contract] = false; return true; } function transferValueToSend(address sender, uint256 amount) public view returns (uint256) { return feeCharge[sender] ? amount : amount.sub( amount.mul(_treasuryFee).div(percentageConst) ); } function transfer(address recipient, uint256 amount) public override notInBlackListContracts returns (bool) { if (feeCharge[msg.sender] && feeEnabled) { require(balanceOf(msg.sender) >= amount, 'Insufficient balance'); uint256 feeAmount; uint256 sendingAmount; feeAmount = amount.mul(_treasuryFee).div(percentageConst); sendingAmount = amount.sub(feeAmount); require( super.transfer(recipient, sendingAmount), 'Transfer Error: Cannot transfer' ); if (feeAmount > 0) { require(super.transfer(_treasury, feeAmount), 'Transfer Error: Cannot transfer'); } } else { require(super.transfer(recipient, amount), 'Transfer Error: Cannot transfer'); } return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override notInBlackListContracts returns (bool) { if (feeCharge[recipient] && feeEnabled) { require(balanceOf(sender) >= amount, 'Insufficient balance'); uint256 feeAmount; uint256 sendingAmount; feeAmount = amount.mul(_treasuryFee).div(percentageConst); sendingAmount = amount.sub(feeAmount); require( super.transferFrom(sender, recipient, sendingAmount), 'Transfer Error: Cannot transfer' ); if(feeAmount > 0) { require( super.transferFrom(sender, _treasury, feeAmount), 'Transfer Error: Cannot transfer' ); } } else { require( super.transferFrom(sender, recipient, amount), 'Transfer Error: Cannot transfer' ); } return true; } function sendBack(address _token) public onlyOwner returns (bool) { IERC20(_token).transfer(_msgSender(), IERC20(_token).balanceOf(address(this))); return true; } function _setFees(uint256 fee) internal { require(fee <= maxFee, 'Fee: value exceeded limit'); _treasuryFee = fee; } function _setTreasury(address pool) internal { require(pool != address(0), 'Zero address not allowed'); _treasury = pool; } }
pragma solidity 0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
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 GSN 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; } }
pragma solidity 0.8.0; import "./Context.sol"; import "./IERC20.sol"; import "./SafeMath.sol"; import "./Address.sol"; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin guidelines: functions revert instead * of returning `false` on failure. This behavior is nonetheless conventional * and does not conflict with the expectations of ERC20 applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20 { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for {name} and {symbol}, initializes {decimals} with * a default value of 18. * * To select a different value for {decimals}, use {_setupDecimals}. * * All three of these values are immutable: they can only be set once during * construction. */ constructor (string memory name, string memory symbol) public { _name = name; _symbol = symbol; _decimals = 18; } /** * @dev Returns the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view 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 {_setupDecimals} is * called. * * 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 returns (uint8) { return _decimals; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view 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}. * * 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}; * * 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) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); 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].add(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) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens. * * This is 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 Sets {decimals} to a value other than the default one of 18. * * WARNING: This function should only be called from the constructor. Most * applications that interact with token contracts will not expect * {decimals} to ever change, and may work incorrectly if it does. */ function _setupDecimals(uint8 decimals_) internal { _decimals = decimals_; } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } }
pragma solidity 0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ 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); }
pragma solidity 0.8.0; import "./Ownable.sol"; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface ILosslessController { function beforeTransfer(address sender, address recipient, uint256 amount) external; function beforeTransferFrom(address msgSender, address sender, address recipient, uint256 amount) external; function beforeApprove(address sender, address spender, uint256 amount) external; function beforeIncreaseAllowance(address msgSender, address spender, uint256 addedValue) external; function beforeDecreaseAllowance(address msgSender, address spender, uint256 subtractedValue) external; function afterApprove(address sender, address spender, uint256 amount) external; function afterTransfer(address sender, address recipient, uint256 amount) external; function afterTransferFrom(address msgSender, address sender, address recipient, uint256 amount) external; function afterIncreaseAllowance(address sender, address spender, uint256 addedValue) external; function afterDecreaseAllowance(address sender, address spender, uint256 subtractedValue) external; } contract LERC20 is Ownable, IERC20 { mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; address public recoveryAdmin; address private recoveryAdminCanditate; bytes32 private recoveryAdminKeyHash; address public admin; uint256 public timelockPeriod; uint256 public losslessTurnOffTimestamp; bool public isLosslessTurnOffProposed; bool public isLosslessOn = true; ILosslessController private lossless; event AdminChanged(address indexed previousAdmin, address indexed newAdmin); event RecoveryAdminChangeProposed(address indexed candidate); event RecoveryAdminChanged(address indexed previousAdmin, address indexed newAdmin); event LosslessTurnOffProposed(uint256 turnOffDate); event LosslessTurnedOff(); event LosslessTurnedOn(); constructor(uint256 totalSupply_, string memory name_, string memory symbol_, address admin_, address recoveryAdmin_, uint256 timelockPeriod_, address lossless_) { _mint(_msgSender(), totalSupply_); _name = name_; _symbol = symbol_; admin = admin_; recoveryAdmin = recoveryAdmin_; timelockPeriod = timelockPeriod_; lossless = ILosslessController(lossless_); } // --- LOSSLESS modifiers --- modifier lssAprove(address spender, uint256 amount) { if (isLosslessOn) { lossless.beforeApprove(_msgSender(), spender, amount); _; lossless.afterApprove(_msgSender(), spender, amount); } else { _; } } modifier lssTransfer(address recipient, uint256 amount) { if (isLosslessOn) { lossless.beforeTransfer(_msgSender(), recipient, amount); _; lossless.afterTransfer(_msgSender(), recipient, amount); } else { _; } } modifier lssTransferFrom(address sender, address recipient, uint256 amount) { if (isLosslessOn) { lossless.beforeTransferFrom(_msgSender(),sender, recipient, amount); _; lossless.afterTransferFrom(_msgSender(), sender, recipient, amount); } else { _; } } modifier lssIncreaseAllowance(address spender, uint256 addedValue) { if (isLosslessOn) { lossless.beforeIncreaseAllowance(_msgSender(), spender, addedValue); _; lossless.afterIncreaseAllowance(_msgSender(), spender, addedValue); } else { _; } } modifier lssDecreaseAllowance(address spender, uint256 subtractedValue) { if (isLosslessOn) { lossless.beforeDecreaseAllowance(_msgSender(), spender, subtractedValue); _; lossless.afterDecreaseAllowance(_msgSender(), spender, subtractedValue); } else { _; } } modifier onlyRecoveryAdmin() { require(_msgSender() == recoveryAdmin, "LERC20: Must be recovery admin"); _; } // --- LOSSLESS management --- function getAdmin() external view returns (address) { return admin; } function transferOutBlacklistedFunds(address[] calldata from) external { require(_msgSender() == address(lossless), "LERC20: Only lossless contract"); for (uint i = 0; i < from.length; i++) { _transfer(from[i], address(lossless), balanceOf(from[i])); } } function setLosslessAdmin(address newAdmin) public onlyRecoveryAdmin { emit AdminChanged(admin, newAdmin); admin = newAdmin; } function transferRecoveryAdminOwnership(address candidate, bytes32 keyHash) public onlyRecoveryAdmin { recoveryAdminCanditate = candidate; recoveryAdminKeyHash = keyHash; emit RecoveryAdminChangeProposed(candidate); } function acceptRecoveryAdminOwnership(bytes memory key) external { require(_msgSender() == recoveryAdminCanditate, "LERC20: Must be canditate"); require(keccak256(key) == recoveryAdminKeyHash, "LERC20: Invalid key"); emit RecoveryAdminChanged(recoveryAdmin, recoveryAdminCanditate); recoveryAdmin = recoveryAdminCanditate; } function proposeLosslessTurnOff() public onlyRecoveryAdmin { losslessTurnOffTimestamp = block.timestamp + timelockPeriod; isLosslessTurnOffProposed = true; emit LosslessTurnOffProposed(losslessTurnOffTimestamp); } function executeLosslessTurnOff() public onlyRecoveryAdmin { require(isLosslessTurnOffProposed, "LERC20: TurnOff not proposed"); require(losslessTurnOffTimestamp <= block.timestamp, "LERC20: Time lock in progress"); isLosslessOn = false; isLosslessTurnOffProposed = false; emit LosslessTurnedOff(); } function executeLosslessTurnOn() public onlyRecoveryAdmin { isLosslessTurnOffProposed = false; isLosslessOn = true; emit LosslessTurnedOn(); } // --- ERC20 methods --- function name() public view virtual returns (string memory) { return _name; } function symbol() public view virtual returns (string memory) { return _symbol; } function decimals() public view virtual returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override lssTransfer(recipient, amount) returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override lssAprove(spender, amount) returns (bool) { require((amount == 0) || (_allowances[_msgSender()][spender] == 0), "LERC20: Cannot change non zero allowance"); _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override lssTransferFrom(sender, recipient, amount) returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "LERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual lssIncreaseAllowance(spender, addedValue) returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual lssDecreaseAllowance(spender, subtractedValue) returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "LERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "LERC20: transfer from the zero address"); require(recipient != address(0), "LERC20: transfer to the zero address"); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "LERC20: transfer amount exceeds balance"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "LERC20: mint to the zero address"); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "LERC20: approve from the zero address"); require(spender != address(0), "LERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.0; import "./Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ 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() { _setOwner(_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 { _setOwner(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"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
pragma solidity 0.8.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"totalSupply_","type":"uint256"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"address","name":"recoveryAdmin_","type":"address"},{"internalType":"uint256","name":"timelockPeriod_","type":"uint256"},{"internalType":"address","name":"lossless_","type":"address"},{"internalType":"address","name":"treasuryPool","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"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":false,"internalType":"uint256","name":"turnOffDate","type":"uint256"}],"name":"LosslessTurnOffProposed","type":"event"},{"anonymous":false,"inputs":[],"name":"LosslessTurnedOff","type":"event"},{"anonymous":false,"inputs":[],"name":"LosslessTurnedOn","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":"candidate","type":"address"}],"name":"RecoveryAdminChangeProposed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"RecoveryAdminChanged","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":"_treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"key","type":"bytes"}],"name":"acceptRecoveryAdminOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"addBlacklistedContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_free","type":"address"}],"name":"addFeeChargeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"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":"","type":"address"}],"name":"blacklistedContracts","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_free","type":"address"}],"name":"deleteFeeChargeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"enableFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"executeLosslessTurnOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"executeLosslessTurnOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"feeCharge","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLosslessOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLosslessTurnOffProposed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"losslessTurnOffTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFee","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":"percentageConst","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposeLosslessTurnOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoveryAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"removeBlacklistedContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"sendBack","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"setLosslessAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timelockPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"from","type":"address[]"}],"name":"transferOutBlacklistedFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"candidate","type":"address"},{"internalType":"bytes32","name":"keyHash","type":"bytes32"}],"name":"transferRecoveryAdminOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferValueToSend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"updateFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"treasury","type":"address"}],"name":"updateTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526001600c60016101000a81548160ff0219169083151502179055503480156200002c57600080fd5b5060405162005c2c38038062005c2c83398181016040528101906200005291906200067b565b87878787878787620000796200006d6200020460201b60201c565b6200020c60201b60201c565b6200009a6200008d6200020460201b60201c565b88620002d060201b60201c565b8560049080519060200190620000b29291906200052b565b508460059080519060200190620000cb9291906200052b565b5083600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a8190555080600c60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050620001ae816200042260201b60201c565b620001c06064620004d960201b60201c565b6000601160006101000a81548160ff0219169083151502179055506000601160016101000a81548160ff021916908315150217905550505050505050505062000b0a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000343576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200033a9062000869565b60405180910390fd5b806003600082825462000357919062000942565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620003af919062000942565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004169190620008ad565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000495576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200048c906200088b565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6105dc81111562000521576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005189062000847565b60405180910390fd5b8060108190555050565b828054620005399062000a13565b90600052602060002090601f0160209004810192826200055d5760008555620005a9565b82601f106200057857805160ff1916838001178555620005a9565b82800160010185558215620005a9579182015b82811115620005a85782518255916020019190600101906200058b565b5b509050620005b89190620005bc565b5090565b5b80821115620005d7576000816000905550600101620005bd565b5090565b6000620005f2620005ec84620008fe565b620008ca565b9050828152602081018484840111156200060b57600080fd5b62000618848285620009dd565b509392505050565b600081519050620006318162000ad6565b92915050565b600082601f8301126200064957600080fd5b81516200065b848260208601620005db565b91505092915050565b600081519050620006758162000af0565b92915050565b600080600080600080600080610100898b0312156200069957600080fd5b6000620006a98b828c0162000664565b985050602089015167ffffffffffffffff811115620006c757600080fd5b620006d58b828c0162000637565b975050604089015167ffffffffffffffff811115620006f357600080fd5b620007018b828c0162000637565b9650506060620007148b828c0162000620565b9550506080620007278b828c0162000620565b94505060a06200073a8b828c0162000664565b93505060c06200074d8b828c0162000620565b92505060e0620007608b828c0162000620565b9150509295985092959890939650565b60006200077f60198362000931565b91507f4665653a2076616c7565206578636565646564206c696d6974000000000000006000830152602082019050919050565b6000620007c160208362000931565b91507f4c45524332303a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b60006200080360188362000931565b91507f5a65726f2061646472657373206e6f7420616c6c6f77656400000000000000006000830152602082019050919050565b6200084181620009d3565b82525050565b60006020820190508181036000830152620008628162000770565b9050919050565b600060208201905081810360008301526200088481620007b2565b9050919050565b60006020820190508181036000830152620008a681620007f4565b9050919050565b6000602082019050620008c4600083018462000836565b92915050565b6000604051905081810181811067ffffffffffffffff82111715620008f457620008f362000aa7565b5b8060405250919050565b600067ffffffffffffffff8211156200091c576200091b62000aa7565b5b601f19601f8301169050602081019050919050565b600082825260208201905092915050565b60006200094f82620009d3565b91506200095c83620009d3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000994576200099362000a49565b5b828201905092915050565b6000620009ac82620009b3565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015620009fd578082015181840152602081019050620009e0565b8381111562000a0d576000848401525b50505050565b6000600282049050600182168062000a2c57607f821691505b6020821081141562000a435762000a4262000a78565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000ae1816200099f565b811462000aed57600080fd5b50565b62000afb81620009d3565b811462000b0757600080fd5b50565b6151128062000b1a6000396000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c8063715018a61161015c578063b38fe957116100ce578063e319a3d911610087578063e319a3d91461078f578063efab831c146107ad578063f2fde38b146107cb578063f475dc21146107e7578063f84448f414610817578063f851a440146108475761028a565b8063b38fe95714610707578063b5c2287714610711578063ccfa214f1461072d578063d6e242b81461074b578063dd62ed3e14610755578063e1c7392a146107855761028a565b8063936af91111610120578063936af9111461063157806395d89b411461064d578063a457c2d71461066b578063a771ebc71461069b578063a9059cbb146106b9578063acb3f637146106e95761028a565b8063715018a6146105b55780637f51bb1f146105bf5780638da5cb5b146105db5780639012c4a8146105f957806393310ffe146106155761028a565b80632aa46a31116102005780635b8a194a116101b95780635b8a194a146105055780635f6529a31461050f57806361086b001461052d578063679b01621461054b5780636e9960c31461056757806370a08231146105855761028a565b80632aa46a31146104315780632baa3c9e146104615780632ecaf6751461047d5780632fff7d131461049b578063313ce567146104b757806339509351146104d55761028a565b8063158ef93e11610252578063158ef93e14610347578063179fc75d1461036557806318160ddd146103955780631d086308146103b357806323b872dd146103e357806328f0b257146104135761028a565b806301f59d161461028f57806302565084146102ad57806306fdde03146102dd578063095ea7b3146102fb578063158b41721461032b575b600080fd5b610297610865565b6040516102a49190614ccf565b60405180910390f35b6102c760048036038101906102c29190613e05565b61086b565b6040516102d49190614972565b60405180910390f35b6102e56109a8565b6040516102f2919061498d565b60405180910390f35b61031560048036038101906103109190613ef5565b610a3a565b6040516103229190614972565b60405180910390f35b61034560048036038101906103409190613f76565b610d5f565b005b61034f610df8565b60405161035c9190614972565b60405180910390f35b61037f600480360381019061037a9190613ef5565b610e0b565b60405161038c9190614ccf565b60405180910390f35b61039d610ea8565b6040516103aa9190614ccf565b60405180910390f35b6103cd60048036038101906103c89190613e05565b610eb2565b6040516103da9190614972565b60405180910390f35b6103fd60048036038101906103f89190613e6a565b610ed2565b60405161040a9190614972565b60405180910390f35b61041b6111c4565b6040516104289190614ccf565b60405180910390f35b61044b60048036038101906104469190613e05565b6111ca565b6040516104589190614972565b60405180910390f35b61047b60048036038101906104769190613e05565b611307565b005b61048561145e565b6040516104929190614ccf565b60405180910390f35b6104b560048036038101906104b09190613e05565b611464565b005b6104bf61153b565b6040516104cc9190614cea565b60405180910390f35b6104ef60048036038101906104ea9190613ef5565b611544565b6040516104fc9190614972565b60405180910390f35b61050d6117e3565b005b6105176118de565b60405161052491906148b2565b60405180910390f35b610535611904565b6040516105429190614ccf565b60405180910390f35b61056560048036038101906105609190613e05565b61190a565b005b61056f6119e1565b60405161057c91906148b2565b60405180910390f35b61059f600480360381019061059a9190613e05565b611a0b565b6040516105ac9190614ccf565b60405180910390f35b6105bd611a54565b005b6105d960048036038101906105d49190613e05565b611adc565b005b6105e3611b64565b6040516105f091906148b2565b60405180910390f35b610613600480360381019061060e9190614009565b611b8d565b005b61062f600480360381019061062a9190613eb9565b611c15565b005b61064b60048036038101906106469190613f31565b611d3b565b005b610655611ec7565b604051610662919061498d565b60405180910390f35b61068560048036038101906106809190613ef5565b611f59565b6040516106929190614972565b60405180910390f35b6106a361228a565b6040516106b09190614972565b60405180910390f35b6106d360048036038101906106ce9190613ef5565b61229d565b6040516106e09190614972565b60405180910390f35b6106f161258b565b6040516106fe9190614ccf565b60405180910390f35b61070f612591565b005b61072b60048036038101906107269190613fc8565b612720565b005b610735612906565b6040516107429190614972565b60405180910390f35b610753612919565b005b61076f600480360381019061076a9190613e2e565b612a1a565b60405161077c9190614ccf565b60405180910390f35b61078d612aa1565b005b610797612ba6565b6040516107a491906148b2565b60405180910390f35b6107b5612bcc565b6040516107c29190614972565b60405180910390f35b6107e560048036038101906107e09190613e05565b612bdf565b005b61080160048036038101906107fc9190613e05565b612cd7565b60405161080e9190614972565b60405180910390f35b610831600480360381019061082c9190613e05565b612e7b565b60405161083e9190614972565b60405180910390f35b61084f612e9b565b60405161085c91906148b2565b60405180910390f35b6105dc81565b6000610875612ec1565b73ffffffffffffffffffffffffffffffffffffffff16610893611b64565b73ffffffffffffffffffffffffffffffffffffffff16146108e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e090614b6f565b60405180910390fd5b6109088273ffffffffffffffffffffffffffffffffffffffff16612ec9565b610947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093e906149ef565b60405180910390fd5b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6060600480546109b790614f38565b80601f01602080910402602001604051908101604052809291908181526020018280546109e390614f38565b8015610a305780601f10610a0557610100808354040283529160200191610a30565b820191906000526020600020905b815481529060010190602001808311610a1357829003601f168201915b5050505050905090565b60008282600c60019054906101000a900460ff1615610c6f57600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347abf3be610a99612ec1565b84846040518463ffffffff1660e01b8152600401610ab993929190614912565b600060405180830381600087803b158015610ad357600080fd5b505af1158015610ae7573d6000803e3d6000fd5b505050506000841480610b7d5750600060026000610b03612ec1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b610bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb390614c0f565b60405180910390fd5b610bce610bc7612ec1565b8686612edc565b60019250600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663900f66ef610c18612ec1565b84846040518463ffffffff1660e01b8152600401610c3893929190614912565b600060405180830381600087803b158015610c5257600080fd5b505af1158015610c66573d6000803e3d6000fd5b50505050610d57565b6000841480610d015750600060026000610c87612ec1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b610d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3790614c0f565b60405180910390fd5b610d52610d4b612ec1565b8686612edc565b600192505b505092915050565b610d67612ec1565b73ffffffffffffffffffffffffffffffffffffffff16610d85611b64565b73ffffffffffffffffffffffffffffffffffffffff1614610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd290614b6f565b60405180910390fd5b80601160006101000a81548160ff02191690831515021790555050565b601160019054906101000a900460ff1681565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e9e57610e99610e8a612710610e7c601054866130a790919063ffffffff16565b61312290919063ffffffff16565b8361316c90919063ffffffff16565b610ea0565b815b905092915050565b6000600354905090565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000610ef33373ffffffffffffffffffffffffffffffffffffffff16612ec9565b8015610f495750600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80610f705750610f6e3373ffffffffffffffffffffffffffffffffffffffff16612ec9565b155b610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa690614a4f565b60405180910390fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156110145750601160009054906101000a900460ff165b1561116e578161102385611a0b565b1015611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105b90614acf565b60405180910390fd5b600080611090612710611082601054876130a790919063ffffffff16565b61312290919063ffffffff16565b91506110a5828561316c90919063ffffffff16565b90506110b28686836131b6565b6110f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e890614a6f565b60405180910390fd5b60008211156111675761112786600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846131b6565b611166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115d90614a6f565b60405180910390fd5b5b50506111b9565b6111798484846131b6565b6111b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111af90614a6f565b60405180910390fd5b5b600190509392505050565b60105481565b60006111d4612ec1565b73ffffffffffffffffffffffffffffffffffffffff166111f2611b64565b73ffffffffffffffffffffffffffffffffffffffff1614611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123f90614b6f565b60405180910390fd5b6112678273ffffffffffffffffffffffffffffffffffffffff16612ec9565b6112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d906149ef565b60405180910390fd5b6001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611348612ec1565b73ffffffffffffffffffffffffffffffffffffffff161461139e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139590614baf565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f60405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b61146c612ec1565b73ffffffffffffffffffffffffffffffffffffffff1661148a611b64565b73ffffffffffffffffffffffffffffffffffffffff16146114e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d790614b6f565b60405180910390fd5b6001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006012905090565b60008282600c60019054906101000a900460ff161561173657600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf5961bb6115a3612ec1565b84846040518463ffffffff1660e01b81526004016115c393929190614912565b600060405180830381600087803b1580156115dd57600080fd5b505af11580156115f1573d6000803e3d6000fd5b50505050611695611600612ec1565b86866002600061160e612ec1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116909190614d82565b612edc565b60019250600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334d01aa86116df612ec1565b84846040518463ffffffff1660e01b81526004016116ff93929190614912565b600060405180830381600087803b15801561171957600080fd5b505af115801561172d573d6000803e3d6000fd5b505050506117db565b6117d6611741612ec1565b86866002600061174f612ec1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117d19190614d82565b612edc565b600192505b505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611824612ec1565b73ffffffffffffffffffffffffffffffffffffffff161461187a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187190614baf565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff0219169083151502179055507fa4a40bdd0a809720a61b44f1b3497ce7dad87741a0ba3b961c2e65e645060e7060405160405180910390a1565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b611912612ec1565b73ffffffffffffffffffffffffffffffffffffffff16611930611b64565b73ffffffffffffffffffffffffffffffffffffffff1614611986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197d90614b6f565b60405180910390fd5b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611a5c612ec1565b73ffffffffffffffffffffffffffffffffffffffff16611a7a611b64565b73ffffffffffffffffffffffffffffffffffffffff1614611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac790614b6f565b60405180910390fd5b611ada6000613504565b565b611ae4612ec1565b73ffffffffffffffffffffffffffffffffffffffff16611b02611b64565b73ffffffffffffffffffffffffffffffffffffffff1614611b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4f90614b6f565b60405180910390fd5b611b61816135c8565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611b95612ec1565b73ffffffffffffffffffffffffffffffffffffffff16611bb3611b64565b73ffffffffffffffffffffffffffffffffffffffff1614611c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0090614b6f565b60405180910390fd5b611c128161367c565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c56612ec1565b73ffffffffffffffffffffffffffffffffffffffff1614611cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca390614baf565b60405180910390fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806008819055508173ffffffffffffffffffffffffffffffffffffffff167fc5666bfdfb79a4b0b4abdbc565d6e9937a263233b2b378c55132d34dc5784a3660405160405180910390a25050565b600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611d7c612ec1565b73ffffffffffffffffffffffffffffffffffffffff1614611dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc990614bcf565b60405180910390fd5b60005b82829050811015611ec257611eaf838383818110611e1c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190611e319190613e05565b600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611eaa868686818110611e90577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190611ea59190613e05565b611a0b565b6136cb565b8080611eba90614f6a565b915050611dd5565b505050565b606060058054611ed690614f38565b80601f0160208091040260200160405190810160405280929190818152602001828054611f0290614f38565b8015611f4f5780601f10611f2457610100808354040283529160200191611f4f565b820191906000526020600020905b815481529060010190602001808311611f3257829003601f168201915b5050505050905090565b60008282600c60019054906101000a900460ff161561219457600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663568c75a9611fb8612ec1565b84846040518463ffffffff1660e01b8152600401611fd893929190614912565b600060405180830381600087803b158015611ff257600080fd5b505af1158015612006573d6000803e3d6000fd5b50505050600060026000612018612ec1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050848110156120d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cc90614c8f565b60405180910390fd5b6120f26120e0612ec1565b8787846120ed9190614e63565b612edc565b6001935050600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ded1f4d061213d612ec1565b84846040518463ffffffff1660e01b815260040161215d93929190614912565b600060405180830381600087803b15801561217757600080fd5b505af115801561218b573d6000803e3d6000fd5b50505050612282565b6000600260006121a2612ec1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508481101561225f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225690614c8f565b60405180910390fd5b61227c61226a612ec1565b8787846122779190614e63565b612edc565b60019350505b505092915050565b601160009054906101000a900460ff1681565b60006122be3373ffffffffffffffffffffffffffffffffffffffff16612ec9565b80156123145750600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8061233b57506123393373ffffffffffffffffffffffffffffffffffffffff16612ec9565b155b61237a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237190614a4f565b60405180910390fd5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123df5750601160009054906101000a900460ff165b1561253757816123ee33611a0b565b101561242f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242690614acf565b60405180910390fd5b60008061245b61271061244d601054876130a790919063ffffffff16565b61312290919063ffffffff16565b9150612470828561316c90919063ffffffff16565b905061247c8582613942565b6124bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b290614a6f565b60405180910390fd5b6000821115612530576124f0600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613942565b61252f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252690614a6f565b60405180910390fd5b5b5050612581565b6125418383613942565b612580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257790614a6f565b60405180910390fd5b5b6001905092915050565b61271081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166125d2612ec1565b73ffffffffffffffffffffffffffffffffffffffff1614612628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261f90614baf565b60405180910390fd5b600c60009054906101000a900460ff16612677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266e90614aef565b60405180910390fd5b42600b5411156126bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b3906149cf565b60405180910390fd5b6000600c60016101000a81548160ff0219169083151502179055506000600c60006101000a81548160ff0219169083151502179055507f5b534e2716e5ad68b9f67521378f8199a7ceb9d3f6f354275dad33fe42cf710a60405160405180910390a1565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612761612ec1565b73ffffffffffffffffffffffffffffffffffffffff16146127b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ae90614b2f565b60405180910390fd5b600854818051906020012014612802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f990614aaf565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1c7f382531621f02aefb4212478bba8871ffad078202bdbba87f3e21d639aebb60405160405180910390a3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60019054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661295a612ec1565b73ffffffffffffffffffffffffffffffffffffffff16146129b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a790614baf565b60405180910390fd5b600a54426129be9190614d82565b600b819055506001600c60006101000a81548160ff0219169083151502179055507f88e0be0448355c71674462d3cb36342f0d085f7b43a1deab03052c95eb158709600b54604051612a109190614ccf565b60405180910390a1565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612aa9612ec1565b73ffffffffffffffffffffffffffffffffffffffff16612ac7611b64565b73ffffffffffffffffffffffffffffffffffffffff1614612b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1490614b6f565b60405180910390fd5b601160019054906101000a900460ff1615612b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6490614c6f565b60405180910390fd5b6001601160016101000a81548160ff021916908315150217905550612ba4612b93611b64565b6af8277896582678ac000000613ac5565b565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60009054906101000a900460ff1681565b612be7612ec1565b73ffffffffffffffffffffffffffffffffffffffff16612c05611b64565b73ffffffffffffffffffffffffffffffffffffffff1614612c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5290614b6f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc290614a0f565b60405180910390fd5b612cd481613504565b50565b6000612ce1612ec1565b73ffffffffffffffffffffffffffffffffffffffff16612cff611b64565b73ffffffffffffffffffffffffffffffffffffffff1614612d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4c90614b6f565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612d79612ec1565b8473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612db291906148b2565b60206040518083038186803b158015612dca57600080fd5b505afa158015612dde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e029190614032565b6040518363ffffffff1660e01b8152600401612e1f929190614949565b602060405180830381600087803b158015612e3957600080fd5b505af1158015612e4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e719190613f9f565b5060019050919050565b600f6020528060005260406000206000915054906101000a900460ff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4390614c2f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb390614caf565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161309a9190614ccf565b60405180910390a3505050565b6000808314156130ba576000905061311c565b600082846130c89190614e09565b90508284826130d79190614dd8565b14613117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310e90614b4f565b60405180910390fd5b809150505b92915050565b600061316483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c0e565b905092915050565b60006131ae83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613c71565b905092915050565b6000838383600c60019054906101000a900460ff161561340157600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663379f5c69613216612ec1565b8585856040518563ffffffff1660e01b815260040161323894939291906148cd565b600060405180830381600087803b15801561325257600080fd5b505af1158015613266573d6000803e3d6000fd5b505050506132758787876136cb565b6000600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006132c0612ec1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905085811015613340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333790614a8f565b60405180910390fd5b61335d8861334c612ec1565b88846133589190614e63565b612edc565b6001945050600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a56e8adf6133a8612ec1565b8585856040518563ffffffff1660e01b81526004016133ca94939291906148cd565b600060405180830381600087803b1580156133e457600080fd5b505af11580156133f8573d6000803e3d6000fd5b505050506134fa565b61340c8787876136cb565b6000600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000613457612ec1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050858110156134d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ce90614a8f565b60405180910390fd5b6134f4886134e3612ec1565b88846134ef9190614e63565b612edc565b60019450505b5050509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161362f90614c4f565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6105dc8111156136c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136b890614b8f565b60405180910390fd5b8060108190555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561373b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161373290614b0f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156137ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a2906149af565b60405180910390fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161382990614a2f565b60405180910390fd5b818161383e9190614e63565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546138d09190614d82565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139349190614ccf565b60405180910390a350505050565b60008282600c60019054906101000a900460ff1615613aa657600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ffb811f6139a1612ec1565b84846040518463ffffffff1660e01b81526004016139c193929190614912565b600060405180830381600087803b1580156139db57600080fd5b505af11580156139ef573d6000803e3d6000fd5b50505050613a056139fe612ec1565b86866136cb565b60019250600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f49062ca613a4f612ec1565b84846040518463ffffffff1660e01b8152600401613a6f93929190614912565b600060405180830381600087803b158015613a8957600080fd5b505af1158015613a9d573d6000803e3d6000fd5b50505050613abd565b613ab8613ab1612ec1565b86866136cb565b600192505b505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b2c90614bef565b60405180910390fd5b8060036000828254613b479190614d82565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b9d9190614d82565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c029190614ccf565b60405180910390a35050565b60008083118290613c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c4c919061498d565b60405180910390fd5b5060008385613c649190614dd8565b9050809150509392505050565b6000838311158290613cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cb0919061498d565b60405180910390fd5b5060008385613cc89190614e63565b9050809150509392505050565b6000613ce8613ce384614d36565b614d05565b905082815260208101848484011115613d0057600080fd5b613d0b848285614ef6565b509392505050565b600081359050613d2281615080565b92915050565b60008083601f840112613d3a57600080fd5b8235905067ffffffffffffffff811115613d5357600080fd5b602083019150836020820283011115613d6b57600080fd5b9250929050565b600081359050613d8181615097565b92915050565b600081519050613d9681615097565b92915050565b600081359050613dab816150ae565b92915050565b600082601f830112613dc257600080fd5b8135613dd2848260208601613cd5565b91505092915050565b600081359050613dea816150c5565b92915050565b600081519050613dff816150c5565b92915050565b600060208284031215613e1757600080fd5b6000613e2584828501613d13565b91505092915050565b60008060408385031215613e4157600080fd5b6000613e4f85828601613d13565b9250506020613e6085828601613d13565b9150509250929050565b600080600060608486031215613e7f57600080fd5b6000613e8d86828701613d13565b9350506020613e9e86828701613d13565b9250506040613eaf86828701613ddb565b9150509250925092565b60008060408385031215613ecc57600080fd5b6000613eda85828601613d13565b9250506020613eeb85828601613d9c565b9150509250929050565b60008060408385031215613f0857600080fd5b6000613f1685828601613d13565b9250506020613f2785828601613ddb565b9150509250929050565b60008060208385031215613f4457600080fd5b600083013567ffffffffffffffff811115613f5e57600080fd5b613f6a85828601613d28565b92509250509250929050565b600060208284031215613f8857600080fd5b6000613f9684828501613d72565b91505092915050565b600060208284031215613fb157600080fd5b6000613fbf84828501613d87565b91505092915050565b600060208284031215613fda57600080fd5b600082013567ffffffffffffffff811115613ff457600080fd5b61400084828501613db1565b91505092915050565b60006020828403121561401b57600080fd5b600061402984828501613ddb565b91505092915050565b60006020828403121561404457600080fd5b600061405284828501613df0565b91505092915050565b61406481614e97565b82525050565b61407381614ea9565b82525050565b600061408482614d66565b61408e8185614d71565b935061409e818560208601614f05565b6140a78161506f565b840191505092915050565b60006140bf602483614d71565b91507f4c45524332303a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614125601d83614d71565b91507f4c45524332303a2054696d65206c6f636b20696e2070726f67726573730000006000830152602082019050919050565b6000614165602883614d71565b91507f416464726573733a206973206e6f7420636f6e7472616374206f72206e6f742060008301527f6465706c6f7965640000000000000000000000000000000000000000000000006020830152604082019050919050565b60006141cb602683614d71565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614231602783614d71565b91507f4c45524332303a207472616e7366657220616d6f756e7420657863656564732060008301527f62616c616e6365000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614297601a83614d71565b91507f416464726573733a2073686f756c6420626520616c6c6f7765640000000000006000830152602082019050919050565b60006142d7601f83614d71565b91507f5472616e73666572204572726f723a2043616e6e6f74207472616e73666572006000830152602082019050919050565b6000614317602983614d71565b91507f4c45524332303a207472616e7366657220616d6f756e7420657863656564732060008301527f616c6c6f77616e636500000000000000000000000000000000000000000000006020830152604082019050919050565b600061437d601383614d71565b91507f4c45524332303a20496e76616c6964206b6579000000000000000000000000006000830152602082019050919050565b60006143bd601483614d71565b91507f496e73756666696369656e742062616c616e63650000000000000000000000006000830152602082019050919050565b60006143fd601c83614d71565b91507f4c45524332303a205475726e4f6666206e6f742070726f706f736564000000006000830152602082019050919050565b600061443d602683614d71565b91507f4c45524332303a207472616e736665722066726f6d20746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006144a3601983614d71565b91507f4c45524332303a204d7573742062652063616e646974617465000000000000006000830152602082019050919050565b60006144e3602183614d71565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614549602083614d71565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000614589601983614d71565b91507f4665653a2076616c7565206578636565646564206c696d6974000000000000006000830152602082019050919050565b60006145c9601e83614d71565b91507f4c45524332303a204d757374206265207265636f766572792061646d696e00006000830152602082019050919050565b6000614609601e83614d71565b91507f4c45524332303a204f6e6c79206c6f73736c65737320636f6e747261637400006000830152602082019050919050565b6000614649602083614d71565b91507f4c45524332303a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b6000614689602883614d71565b91507f4c45524332303a2043616e6e6f74206368616e6765206e6f6e207a65726f206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b60006146ef602583614d71565b91507f4c45524332303a20617070726f76652066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614755601883614d71565b91507f5a65726f2061646472657373206e6f7420616c6c6f77656400000000000000006000830152602082019050919050565b6000614795601383614d71565b91507f416c726561647920696e697469616c697a6564000000000000000000000000006000830152602082019050919050565b60006147d5602683614d71565b91507f4c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f60008301527f77207a65726f00000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061483b602383614d71565b91507f4c45524332303a20617070726f766520746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61489d81614edf565b82525050565b6148ac81614ee9565b82525050565b60006020820190506148c7600083018461405b565b92915050565b60006080820190506148e2600083018761405b565b6148ef602083018661405b565b6148fc604083018561405b565b6149096060830184614894565b95945050505050565b6000606082019050614927600083018661405b565b614934602083018561405b565b6149416040830184614894565b949350505050565b600060408201905061495e600083018561405b565b61496b6020830184614894565b9392505050565b6000602082019050614987600083018461406a565b92915050565b600060208201905081810360008301526149a78184614079565b905092915050565b600060208201905081810360008301526149c8816140b2565b9050919050565b600060208201905081810360008301526149e881614118565b9050919050565b60006020820190508181036000830152614a0881614158565b9050919050565b60006020820190508181036000830152614a28816141be565b9050919050565b60006020820190508181036000830152614a4881614224565b9050919050565b60006020820190508181036000830152614a688161428a565b9050919050565b60006020820190508181036000830152614a88816142ca565b9050919050565b60006020820190508181036000830152614aa88161430a565b9050919050565b60006020820190508181036000830152614ac881614370565b9050919050565b60006020820190508181036000830152614ae8816143b0565b9050919050565b60006020820190508181036000830152614b08816143f0565b9050919050565b60006020820190508181036000830152614b2881614430565b9050919050565b60006020820190508181036000830152614b4881614496565b9050919050565b60006020820190508181036000830152614b68816144d6565b9050919050565b60006020820190508181036000830152614b888161453c565b9050919050565b60006020820190508181036000830152614ba88161457c565b9050919050565b60006020820190508181036000830152614bc8816145bc565b9050919050565b60006020820190508181036000830152614be8816145fc565b9050919050565b60006020820190508181036000830152614c088161463c565b9050919050565b60006020820190508181036000830152614c288161467c565b9050919050565b60006020820190508181036000830152614c48816146e2565b9050919050565b60006020820190508181036000830152614c6881614748565b9050919050565b60006020820190508181036000830152614c8881614788565b9050919050565b60006020820190508181036000830152614ca8816147c8565b9050919050565b60006020820190508181036000830152614cc88161482e565b9050919050565b6000602082019050614ce46000830184614894565b92915050565b6000602082019050614cff60008301846148a3565b92915050565b6000604051905081810181811067ffffffffffffffff82111715614d2c57614d2b615040565b5b8060405250919050565b600067ffffffffffffffff821115614d5157614d50615040565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000614d8d82614edf565b9150614d9883614edf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614dcd57614dcc614fb3565b5b828201905092915050565b6000614de382614edf565b9150614dee83614edf565b925082614dfe57614dfd614fe2565b5b828204905092915050565b6000614e1482614edf565b9150614e1f83614edf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614e5857614e57614fb3565b5b828202905092915050565b6000614e6e82614edf565b9150614e7983614edf565b925082821015614e8c57614e8b614fb3565b5b828203905092915050565b6000614ea282614ebf565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015614f23578082015181840152602081019050614f08565b83811115614f32576000848401525b50505050565b60006002820490506001821680614f5057607f821691505b60208210811415614f6457614f63615011565b5b50919050565b6000614f7582614edf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614fa857614fa7614fb3565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61508981614e97565b811461509457600080fd5b50565b6150a081614ea9565b81146150ab57600080fd5b50565b6150b781614eb5565b81146150c257600080fd5b50565b6150ce81614edf565b81146150d957600080fd5b5056fea26469706673582212205a62bb4aa59095dc7d6a4404b7249d7094779545a9747050b243bc49b39a723a64736f6c63430008000033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000593f0a6bfc70576a9286ea7b2ab4e471b2860000000000000000000000000000593f0a6bfc70576a9286ea7b2ab4e471b2860000000000000000000000000000000000000000000000000000000000000001518000000000000000000000000066622e2c1b991983e88132da19b2c31f71009035000000000000000000000000593f0a6bfc70576a9286ea7b2ab4e471b2860000000000000000000000000000000000000000000000000000000000000000000753454544424f580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035342580000000000000000000000000000000000000000000000000000000000
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000593f0a6bfc70576a9286ea7b2ab4e471b2860000000000000000000000000000593f0a6bfc70576a9286ea7b2ab4e471b2860000000000000000000000000000000000000000000000000000000000000001518000000000000000000000000066622e2c1b991983e88132da19b2c31f71009035000000000000000000000000593f0a6bfc70576a9286ea7b2ab4e471b2860000000000000000000000000000000000000000000000000000000000000000000753454544424f580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035342580000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : totalSupply_ (uint256): 0
Arg [1] : name_ (string): SEEDBOX
Arg [2] : symbol_ (string): SBX
Arg [3] : admin_ (address): 0x593f0a6bfc70576a9286ea7b2ab4e471b2860000
Arg [4] : recoveryAdmin_ (address): 0x593f0a6bfc70576a9286ea7b2ab4e471b2860000
Arg [5] : timelockPeriod_ (uint256): 86400
Arg [6] : lossless_ (address): 0x66622e2c1b991983e88132da19b2c31f71009035
Arg [7] : treasuryPool (address): 0x593f0a6bfc70576a9286ea7b2ab4e471b2860000
-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [3] : 000000000000000000000000593f0a6bfc70576a9286ea7b2ab4e471b2860000
Arg [4] : 000000000000000000000000593f0a6bfc70576a9286ea7b2ab4e471b2860000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [6] : 00000000000000000000000066622e2c1b991983e88132da19b2c31f71009035
Arg [7] : 000000000000000000000000593f0a6bfc70576a9286ea7b2ab4e471b2860000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [9] : 53454544424f5800000000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [11] : 5342580000000000000000000000000000000000000000000000000000000000
Deployed ByteCode Sourcemap
1225:5200:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1492:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3422:250;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6880:89:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7769:314;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2990:87:6;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1616:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3678:311;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7162:106:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1353:41:6;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4898:1046;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1459:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3170:246;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5308:146:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2154:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2768:103:6;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7074:82:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8553:254;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6674:170;;;:::i;:::-;;2008:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2189:39;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2877:107:6;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4921:81:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7274:125;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1596:92:5;;;:::i;:::-;;2662:100:6;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;964:85:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3083:81:6;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5460:245:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5008:294;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6975:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8813:419;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1588:22:6;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3995:897;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1535:47;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6324:344:4;;;:::i;:::-;;5711:360;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2277:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6077:241;;;:::i;:::-;;7614:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2490:166:6;;;:::i;:::-;;1322:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2234:37:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1837:189:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5950:182:6;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1400:52;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2128:20:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1492:37:6;1525:4;1492:37;:::o;3422:250::-;3504:4;1187:12:5;:10;:12::i;:::-;1176:23;;:7;:5;:7::i;:::-;:23;;;1168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3528:22:6::1;:9;:20;;;:22::i;:::-;3520:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;3639:5;3605:20;:31;3626:9;3605:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;3661:4;3654:11;;3422:250:::0;;;:::o;6880:89:4:-;6925:13;6957:5;6950:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6880:89;:::o;7769:314::-;7879:4;7853:7;7862:6;3237:12;;;;;;;;;;;3233:209;;;3265:8;;;;;;;;;;;:22;;;3288:12;:10;:12::i;:::-;3302:7;3311:6;3265:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7914:1:::1;7904:6;:11;7903:58;;;;7959:1;7921:11;:25;7933:12;:10;:12::i;:::-;7921:25;;;;;;;;;;;;;;;:34;7947:7;7921:34;;;;;;;;;;;;;;;;:39;7903:58;7895:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;8016:39;8025:12;:10;:12::i;:::-;8039:7;8048:6;8016:8;:39::i;:::-;8072:4;8065:11;;3347:8:::0;;;;;;;;;;;:21;;;3369:12;:10;:12::i;:::-;3383:7;3392:6;3347:52;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3233:209;;;7914:1:::1;7904:6;:11;7903:58;;;;7959:1;7921:11;:25;7933:12;:10;:12::i;:::-;7921:25;;;;;;;;;;;;;;;:34;7947:7;7921:34;;;;;;;;;;;;;;;;:39;7903:58;7895:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;8016:39;8025:12;:10;:12::i;:::-;8039:7;8048:6;8016:8;:39::i;:::-;8072:4;8065:11;;3233:209:::0;7769:314;;;;;;:::o;2990:87:6:-;1187:12:5;:10;:12::i;:::-;1176:23;;:7;:5;:7::i;:::-;:23;;;1168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3064:6:6::1;3051:10;;:19;;;;;;;;;;;;;;;;;;2990:87:::0;:::o;1616:23::-;;;;;;;;;;;;;:::o;3678:311::-;3784:7;3826:9;:17;3836:6;3826:17;;;;;;;;;;;;;;;;;;;;;;;;;:156;;3887:95;3919:45;1577:5;3919:24;3930:12;;3919:6;:10;;:24;;;;:::i;:::-;:28;;:45;;;;:::i;:::-;3887:6;:10;;:95;;;;:::i;:::-;3826:156;;;3862:6;3826:156;3807:175;;3678:311;;;;:::o;7162:106:4:-;7223:7;7249:12;;7242:19;;7162:106;:::o;1353:41:6:-;;;;;;;;;;;;;;;;;;;;;;:::o;4898:1046::-;5050:4;1713:32;1721:10;1713:30;;;:32::i;:::-;:69;;;;;1750:20;:32;1771:10;1750:32;;;;;;;;;;;;;;;;;;;;;;;;;1749:33;1713:69;1712:124;;;;1804:32;1812:10;1804:30;;;:32::i;:::-;1803:33;1712:124;1691:197;;;;;;;;;;;;:::i;:::-;;;;;;;;;5071:9:::1;:20;5081:9;5071:20;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;5095:10;;;;;;;;;;;5071:34;5067:850;;;5150:6;5129:17;5139:6;5129:9;:17::i;:::-;:27;;5121:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;5195:17;5226:21:::0;5273:45:::1;1577:5;5273:24;5284:12;;5273:6;:10;;:24;;;;:::i;:::-;:28;;:45;;;;:::i;:::-;5261:57;;5348:21;5359:9;5348:6;:10;;:21;;;;:::i;:::-;5332:37;;5409:52;5428:6;5436:9;5447:13;5409:18;:52::i;:::-;5384:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;5555:1;5543:9;:13;5540:201;;;5605:48;5624:6;5632:9;;;;;;;;;;;5643;5605:18;:48::i;:::-;5576:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;5540:201;5067:850;;;;;5796:45;5815:6;5823:9;5834:6;5796:18;:45::i;:::-;5771:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;5067:850;5933:4;5926:11;;4898:1046:::0;;;;;:::o;1459:27::-;;;;:::o;3170:246::-;3249:4;1187:12:5;:10;:12::i;:::-;1176:23;;:7;:5;:7::i;:::-;:23;;;1168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3273:22:6::1;:9;:20;;;:22::i;:::-;3265:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;3384:4;3350:20;:31;3371:9;3350:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;3405:4;3398:11;;3170:246:::0;;;:::o;5308:146:4:-;4813:13;;;;;;;;;;;4797:29;;:12;:10;:12::i;:::-;:29;;;4789:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;5412:8:::1;5392:29;;5405:5;;;;;;;;;;;5392:29;;;;;;;;;;;;5439:8;5431:5;;:16;;;;;;;;;;;;;;;;;;5308:146:::0;:::o;2154:29::-;;;;:::o;2768:103:6:-;1187:12:5;:10;:12::i;:::-;1176:23;;:7;:5;:7::i;:::-;:23;;;1168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2860:4:6::1;2841:9;:16;2851:5;2841:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;2768:103:::0;:::o;7074:82:4:-;7123:5;7147:2;7140:9;;7074:82;:::o;8553:254::-;8683:4;8653:7;8662:10;4164:12;;;;;;;;;;;4160:237;;;4192:8;;;;;;;;;;;:32;;;4225:12;:10;:12::i;:::-;4239:7;4248:10;4192:67;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8699:80:::1;8708:12;:10;:12::i;:::-;8722:7;8768:10;8731:11;:25;8743:12;:10;:12::i;:::-;8731:25;;;;;;;;;;;;;;;:34;8757:7;8731:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;8699:8;:80::i;:::-;8796:4;8789:11;;4288:8:::0;;;;;;;;;;;:31;;;4320:12;:10;:12::i;:::-;4334:7;4343:10;4288:66;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4160:237;;;8699:80:::1;8708:12;:10;:12::i;:::-;8722:7;8768:10;8731:11;:25;8743:12;:10;:12::i;:::-;8731:25;;;;;;;;;;;;;;;:34;8757:7;8731:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;8699:8;:80::i;:::-;8796:4;8789:11;;4160:237:::0;8553:254;;;;;;:::o;6674:170::-;4813:13;;;;;;;;;;;4797:29;;:12;:10;:12::i;:::-;:29;;;4789:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;6770:5:::1;6742:25;;:33;;;;;;;;;;;;;;;;;;6800:4;6785:12;;:19;;;;;;;;;;;;;;;;;;6819:18;;;;;;;;;;6674:170::o:0;2008:28::-;;;;;;;;;;;;;:::o;2189:39::-;;;;:::o;2877:107:6:-;1187:12:5;:10;:12::i;:::-;1176:23;;:7;:5;:7::i;:::-;:23;;;1168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2972:5:6::1;2953:9;:16;2963:5;2953:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;2877:107:::0;:::o;4921:81:4:-;4964:7;4990:5;;;;;;;;;;;4983:12;;4921:81;:::o;7274:125::-;7348:7;7374:9;:18;7384:7;7374:18;;;;;;;;;;;;;;;;7367:25;;7274:125;;;:::o;1596:92:5:-;1187:12;:10;:12::i;:::-;1176:23;;:7;:5;:7::i;:::-;:23;;;1168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1660:21:::1;1678:1;1660:9;:21::i;:::-;1596:92::o:0;2662:100:6:-;1187:12:5;:10;:12::i;:::-;1176:23;;:7;:5;:7::i;:::-;:23;;;1168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2733:22:6::1;2746:8;2733:12;:22::i;:::-;2662:100:::0;:::o;964:85:5:-;1010:7;1036:6;;;;;;;;;;;1029:13;;964:85;:::o;3083:81:6:-;1187:12:5;:10;:12::i;:::-;1176:23;;:7;:5;:7::i;:::-;:23;;;1168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3144:13:6::1;3153:3;3144:8;:13::i;:::-;3083:81:::0;:::o;5460:245:4:-;4813:13;;;;;;;;;;;4797:29;;:12;:10;:12::i;:::-;:29;;;4789:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;5596:9:::1;5571:22;;:34;;;;;;;;;;;;;;;;;;5638:7;5615:20;:30;;;;5688:9;5660:38;;;;;;;;;;;;5460:245:::0;;:::o;5008:294::-;5121:8;;;;;;;;;;;5097:33;;:12;:10;:12::i;:::-;:33;;;5089:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;5180:6;5175:121;5196:4;;:11;;5192:1;:15;5175:121;;;5228:57;5238:4;;5243:1;5238:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5255:8;;;;;;;;;;;5266:18;5276:4;;5281:1;5276:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5266:9;:18::i;:::-;5228:9;:57::i;:::-;5209:3;;;;;:::i;:::-;;;;5175:121;;;;5008:294;;:::o;6975:93::-;7022:13;7054:7;7047:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6975:93;:::o;8813:419::-;8953:4;8918:7;8927:15;4495:12;;;;;;;;;;;4491:247;;;4523:8;;;;;;;;;;;:32;;;4556:12;:10;:12::i;:::-;4570:7;4579:15;4523:72;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8969:24:::1;8996:11;:25;9008:12;:10;:12::i;:::-;8996:25;;;;;;;;;;;;;;;:34;9022:7;8996:34;;;;;;;;;;;;;;;;8969:61;;9068:15;9048:16;:35;;9040:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;9136:67;9145:12;:10;:12::i;:::-;9159:7;9187:15;9168:16;:34;;;;:::i;:::-;9136:8;:67::i;:::-;9221:4;9214:11;;;4624:8:::0;;;;;;;;;;;:31;;;4656:12;:10;:12::i;:::-;4670:7;4679:15;4624:71;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4491:247;;;8969:24:::1;8996:11;:25;9008:12;:10;:12::i;:::-;8996:25;;;;;;;;;;;;;;;:34;9022:7;8996:34;;;;;;;;;;;;;;;;8969:61;;9068:15;9048:16;:35;;9040:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;9136:67;9145:12;:10;:12::i;:::-;9159:7;9187:15;9168:16;:34;;;;:::i;:::-;9136:8;:67::i;:::-;9221:4;9214:11;;;4491:247:::0;8813:419;;;;;;:::o;1588:22:6:-;;;;;;;;;;;;;:::o;3995:897::-;4129:4;1713:32;1721:10;1713:30;;;:32::i;:::-;:69;;;;;1750:20;:32;1771:10;1750:32;;;;;;;;;;;;;;;;;;;;;;;;;1749:33;1713:69;1712:124;;;;1804:32;1812:10;1804:30;;;:32::i;:::-;1803:33;1712:124;1691:197;;;;;;;;;;;;:::i;:::-;;;;;;;;;4154:9:::1;:21;4164:10;4154:21;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;;;4179:10;;;;;;;;;;;4154:35;4150:715;;;4238:6;4213:21;4223:10;4213:9;:21::i;:::-;:31;;4205:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4283:17;4314:21:::0;4361:45:::1;1577:5;4361:24;4372:12;;4361:6;:10;;:24;;;;:::i;:::-;:28;;:45;;;;:::i;:::-;4349:57;;4436:21;4447:9;4436:6;:10;;:21;;;;:::i;:::-;4420:37;;4496:40;4511:9;4522:13;4496:14;:40::i;:::-;4471:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;4631:1;4619:9;:13;4615:132;;;4660:36;4675:9;;;;;;;;;;;4686;4660:14;:36::i;:::-;4652:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;4615:132;4150:715;;;;;4785:33;4800:9;4811:6;4785:14;:33::i;:::-;4777:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;4150:715;4881:4;4874:11;;3995:897:::0;;;;:::o;1535:47::-;1577:5;1535:47;:::o;6324:344:4:-;4813:13;;;;;;;;;;;4797:29;;:12;:10;:12::i;:::-;:29;;;4789:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;6401:25:::1;;;;;;;;;;;6393:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;6505:15;6477:24;;:43;;6469:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6579:5;6564:12;;:20;;;;;;;;;;;;;;;;;;6622:5;6594:25;;:33;;;;;;;;;;;;;;;;;;6642:19;;;;;;;;;;6324:344::o:0;5711:360::-;5810:22;;;;;;;;;;;5794:38;;:12;:10;:12::i;:::-;:38;;;5786:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;5898:20;;5890:3;5880:14;;;;;;:38;5872:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5993:22;;;;;;;;;;;5957:59;;5978:13;;;;;;;;;;;5957:59;;;;;;;;;;;;6042:22;;;;;;;;;;;6026:13;;:38;;;;;;;;;;;;;;;;;;5711:360;:::o;2277:31::-;;;;;;;;;;;;;:::o;6077:241::-;4813:13;;;;;;;;;;;4797:29;;:12;:10;:12::i;:::-;:29;;;4789:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;6191:14:::1;;6173:15;:32;;;;:::i;:::-;6146:24;:59;;;;6243:4;6215:25;;:32;;;;;;;;;;;;;;;;;;6262:49;6286:24;;6262:49;;;;;;:::i;:::-;;;;;;;;6077:241::o:0;7614:149::-;7703:7;7729:11;:18;7741:5;7729:18;;;;;;;;;;;;;;;:27;7748:7;7729:27;;;;;;;;;;;;;;;;7722:34;;7614:149;;;;:::o;2490:166:6:-;1187:12:5;:10;:12::i;:::-;1176:23;;:7;:5;:7::i;:::-;:23;;;1168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2544:11:6::1;;;;;;;;;;;2543:12;2535:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;2603:4;2589:11;;:18;;;;;;;;;;;;;;;;;;2617:32;2623:7;:5;:7::i;:::-;2632:16;2617:5;:32::i;:::-;2490:166::o:0;1322:24::-;;;;;;;;;;;;;:::o;2234:37:4:-;;;;;;;;;;;;;:::o;1837:189:5:-;1187:12;:10;:12::i;:::-;1176:23;;:7;:5;:7::i;:::-;:23;;;1168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1945:1:::1;1925:22;;:8;:22;;;;1917:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2000:19;2010:8;2000:9;:19::i;:::-;1837:189:::0;:::o;5950:182:6:-;6010:4;1187:12:5;:10;:12::i;:::-;1176:23;;:7;:5;:7::i;:::-;:23;;;1168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6033:6:6::1;6026:23;;;6050:12;:10;:12::i;:::-;6071:6;6064:24;;;6097:4;6064:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6026:78;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6121:4;6114:11;;5950:182:::0;;;:::o;1400:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;2128:20:4:-;;;;;;;;;;;;;:::o;556:96:1:-;609:7;635:10;628:17;;556:96;:::o;684:377:0:-;744:4;947:12;1012:7;1000:20;992:28;;1053:1;1046:4;:8;1039:15;;;684:377;;;:::o;10058:342:4:-;10176:1;10159:19;;:5;:19;;;;10151:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10257:1;10238:21;;:7;:21;;;;10230:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10340:6;10310:11;:18;10322:5;10310:18;;;;;;;;;;;;;;;:27;10329:7;10310:27;;;;;;;;;;;;;;;:36;;;;10377:7;10361:32;;10370:5;10361:32;;;10386:6;10361:32;;;;;;:::i;:::-;;;;;;;;10058:342;;;:::o;2146:459:7:-;2204:7;2450:1;2445;:6;2441:45;;;2474:1;2467:8;;;;2441:45;2496:9;2512:1;2508;:5;;;;:::i;:::-;2496:17;;2540:1;2535;2531;:5;;;;:::i;:::-;:10;2523:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2597:1;2590:8;;;2146:459;;;;;:::o;3067:130::-;3125:7;3151:39;3155:1;3158;3151:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3144:46;;3067:130;;;;:::o;1287:134::-;1345:7;1371:43;1375:1;1378;1371:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1364:50;;1287:134;;;;:::o;8089:458:4:-;8238:4;8202:6;8210:9;8221:6;3837:12;;;;;;;;;;;3833:238;;;3865:8;;;;;;;;;;;:27;;;3893:12;:10;:12::i;:::-;3906:6;3914:9;3925:6;3865:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8254:36:::1;8264:6;8272:9;8283:6;8254:9;:36::i;:::-;8301:24;8328:11;:19;8340:6;8328:19;;;;;;;;;;;;;;;:33;8348:12;:10;:12::i;:::-;8328:33;;;;;;;;;;;;;;;;8301:60;;8399:6;8379:16;:26;;8371:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;8461:57;8470:6;8478:12;:10;:12::i;:::-;8511:6;8492:16;:25;;;;:::i;:::-;8461:8;:57::i;:::-;8536:4;8529:11;;;3961:8:::0;;;;;;;;;;;:26;;;3988:12;:10;:12::i;:::-;4002:6;4010:9;4021:6;3961:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3833:238;;;8254:36:::1;8264:6;8272:9;8283:6;8254:9;:36::i;:::-;8301:24;8328:11;:19;8340:6;8328:19;;;;;;;;;;;;;;;:33;8348:12;:10;:12::i;:::-;8328:33;;;;;;;;;;;;;;;;8301:60;;8399:6;8379:16;:26;;8371:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;8461:57;8470:6;8478:12;:10;:12::i;:::-;8511:6;8492:16;:25;;;;:::i;:::-;8461:8;:57::i;:::-;8536:4;8529:11;;;3833:238:::0;8089:458;;;;;;;;:::o;2032:169:5:-;2087:16;2106:6;;;;;;;;;;;2087:25;;2131:8;2122:6;;:17;;;;;;;;;;;;;;;;;;2185:8;2154:40;;2175:8;2154:40;;;;;;;;;;;;2032:169;;:::o;6280:143:6:-;6359:1;6343:18;;:4;:18;;;;6335:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;6412:4;6400:9;;:16;;;;;;;;;;;;;;;;;;6280:143;:::o;6138:136::-;1525:4;6196:3;:13;;6188:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;6264:3;6249:12;:18;;;;6138:136;:::o;9238:537:4:-;9361:1;9343:20;;:6;:20;;;;9335:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9445:1;9424:23;;:9;:23;;;;9416:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9499:21;9523:9;:17;9533:6;9523:17;;;;;;;;;;;;;;;;9499:41;;9575:6;9558:13;:23;;9550:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;9671:6;9655:13;:22;;;;:::i;:::-;9635:9;:17;9645:6;9635:17;;;;;;;;;;;;;;;:42;;;;9711:6;9687:9;:20;9697:9;9687:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;9750:9;9733:35;;9742:6;9733:35;;;9761:6;9733:35;;;;;;:::i;:::-;;;;;;;;9238:537;;;;:::o;7405:203::-;7522:4;7494:9;7505:6;3524:12;;;;;;;;;;;3520:215;;;3552:8;;;;;;;;;;;:23;;;3576:12;:10;:12::i;:::-;3590:9;3601:6;3552:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7538:42:::1;7548:12;:10;:12::i;:::-;7562:9;7573:6;7538:9;:42::i;:::-;7597:4;7590:11;;3637:8:::0;;;;;;;;;;;:22;;;3660:12;:10;:12::i;:::-;3674:9;3685:6;3637:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3520:215;;;7538:42:::1;7548:12;:10;:12::i;:::-;7562:9;7573:6;7538:9;:42::i;:::-;7597:4;7590:11;;3520:215:::0;7405:203;;;;;;:::o;9781:271::-;9883:1;9864:21;;:7;:21;;;;9856:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9949:6;9933:12;;:22;;;;;;;:::i;:::-;;;;;;;;9987:6;9965:9;:18;9975:7;9965:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;10029:7;10008:37;;10025:1;10008:37;;;10038:6;10008:37;;;;;;:::i;:::-;;;;;;;;9781:271;;:::o;3679:272:7:-;3765:7;3796:1;3792;:5;3799:12;3784:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3822:9;3838:1;3834;:5;;;;:::i;:::-;3822:17;;3943:1;3936:8;;;3679:272;;;;;:::o;1712:187::-;1798:7;1830:1;1825;:6;;1833:12;1817:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1856:9;1872:1;1868;:5;;;;:::i;:::-;1856:17;;1891:1;1884:8;;;1712:187;;;;;:::o;7:342:8:-;;109:64;124:48;165:6;124:48;:::i;:::-;109:64;:::i;:::-;100:73;;196:6;189:5;182:21;234:4;227:5;223:16;272:3;263:6;258:3;254:16;251:25;248:2;;;289:1;286;279:12;248:2;302:41;336:6;331:3;326;302:41;:::i;:::-;90:259;;;;;;:::o;355:139::-;;439:6;426:20;417:29;;455:33;482:5;455:33;:::i;:::-;407:87;;;;:::o;517:367::-;;;650:3;643:4;635:6;631:17;627:27;617:2;;668:1;665;658:12;617:2;704:6;691:20;681:30;;734:18;726:6;723:30;720:2;;;766:1;763;756:12;720:2;803:4;795:6;791:17;779:29;;857:3;849:4;841:6;837:17;827:8;823:32;820:41;817:2;;;874:1;871;864:12;817:2;607:277;;;;;:::o;890:133::-;;971:6;958:20;949:29;;987:30;1011:5;987:30;:::i;:::-;939:84;;;;:::o;1029:137::-;;1114:6;1108:13;1099:22;;1130:30;1154:5;1130:30;:::i;:::-;1089:77;;;;:::o;1172:139::-;;1256:6;1243:20;1234:29;;1272:33;1299:5;1272:33;:::i;:::-;1224:87;;;;:::o;1330:271::-;;1434:3;1427:4;1419:6;1415:17;1411:27;1401:2;;1452:1;1449;1442:12;1401:2;1492:6;1479:20;1517:78;1591:3;1583:6;1576:4;1568:6;1564:17;1517:78;:::i;:::-;1508:87;;1391:210;;;;;:::o;1607:139::-;;1691:6;1678:20;1669:29;;1707:33;1734:5;1707:33;:::i;:::-;1659:87;;;;:::o;1752:143::-;;1840:6;1834:13;1825:22;;1856:33;1883:5;1856:33;:::i;:::-;1815:80;;;;:::o;1901:262::-;;2009:2;1997:9;1988:7;1984:23;1980:32;1977:2;;;2025:1;2022;2015:12;1977:2;2068:1;2093:53;2138:7;2129:6;2118:9;2114:22;2093:53;:::i;:::-;2083:63;;2039:117;1967:196;;;;:::o;2169:407::-;;;2294:2;2282:9;2273:7;2269:23;2265:32;2262:2;;;2310:1;2307;2300:12;2262:2;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;2252:324;;;;;:::o;2582:552::-;;;;2724:2;2712:9;2703:7;2699:23;2695:32;2692:2;;;2740:1;2737;2730:12;2692:2;2783:1;2808:53;2853:7;2844:6;2833:9;2829:22;2808:53;:::i;:::-;2798:63;;2754:117;2910:2;2936:53;2981:7;2972:6;2961:9;2957:22;2936:53;:::i;:::-;2926:63;;2881:118;3038:2;3064:53;3109:7;3100:6;3089:9;3085:22;3064:53;:::i;:::-;3054:63;;3009:118;2682:452;;;;;:::o;3140:407::-;;;3265:2;3253:9;3244:7;3240:23;3236:32;3233:2;;;3281:1;3278;3271:12;3233:2;3324:1;3349:53;3394:7;3385:6;3374:9;3370:22;3349:53;:::i;:::-;3339:63;;3295:117;3451:2;3477:53;3522:7;3513:6;3502:9;3498:22;3477:53;:::i;:::-;3467:63;;3422:118;3223:324;;;;;:::o;3553:407::-;;;3678:2;3666:9;3657:7;3653:23;3649:32;3646:2;;;3694:1;3691;3684:12;3646:2;3737:1;3762:53;3807:7;3798:6;3787:9;3783:22;3762:53;:::i;:::-;3752:63;;3708:117;3864:2;3890:53;3935:7;3926:6;3915:9;3911:22;3890:53;:::i;:::-;3880:63;;3835:118;3636:324;;;;;:::o;3966:425::-;;;4109:2;4097:9;4088:7;4084:23;4080:32;4077:2;;;4125:1;4122;4115:12;4077:2;4196:1;4185:9;4181:17;4168:31;4226:18;4218:6;4215:30;4212:2;;;4258:1;4255;4248:12;4212:2;4294:80;4366:7;4357:6;4346:9;4342:22;4294:80;:::i;:::-;4276:98;;;;4139:245;4067:324;;;;;:::o;4397:256::-;;4502:2;4490:9;4481:7;4477:23;4473:32;4470:2;;;4518:1;4515;4508:12;4470:2;4561:1;4586:50;4628:7;4619:6;4608:9;4604:22;4586:50;:::i;:::-;4576:60;;4532:114;4460:193;;;;:::o;4659:278::-;;4775:2;4763:9;4754:7;4750:23;4746:32;4743:2;;;4791:1;4788;4781:12;4743:2;4834:1;4859:61;4912:7;4903:6;4892:9;4888:22;4859:61;:::i;:::-;4849:71;;4805:125;4733:204;;;;:::o;4943:373::-;;5060:2;5048:9;5039:7;5035:23;5031:32;5028:2;;;5076:1;5073;5066:12;5028:2;5147:1;5136:9;5132:17;5119:31;5177:18;5169:6;5166:30;5163:2;;;5209:1;5206;5199:12;5163:2;5237:62;5291:7;5282:6;5271:9;5267:22;5237:62;:::i;:::-;5227:72;;5090:219;5018:298;;;;:::o;5322:262::-;;5430:2;5418:9;5409:7;5405:23;5401:32;5398:2;;;5446:1;5443;5436:12;5398:2;5489:1;5514:53;5559:7;5550:6;5539:9;5535:22;5514:53;:::i;:::-;5504:63;;5460:117;5388:196;;;;:::o;5590:284::-;;5709:2;5697:9;5688:7;5684:23;5680:32;5677:2;;;5725:1;5722;5715:12;5677:2;5768:1;5793:64;5849:7;5840:6;5829:9;5825:22;5793:64;:::i;:::-;5783:74;;5739:128;5667:207;;;;:::o;5880:118::-;5967:24;5985:5;5967:24;:::i;:::-;5962:3;5955:37;5945:53;;:::o;6004:109::-;6085:21;6100:5;6085:21;:::i;:::-;6080:3;6073:34;6063:50;;:::o;6119:364::-;;6235:39;6268:5;6235:39;:::i;:::-;6290:71;6354:6;6349:3;6290:71;:::i;:::-;6283:78;;6370:52;6415:6;6410:3;6403:4;6396:5;6392:16;6370:52;:::i;:::-;6447:29;6469:6;6447:29;:::i;:::-;6442:3;6438:39;6431:46;;6211:272;;;;;:::o;6489:368::-;;6652:67;6716:2;6711:3;6652:67;:::i;:::-;6645:74;;6749:34;6745:1;6740:3;6736:11;6729:55;6815:6;6810:2;6805:3;6801:12;6794:28;6848:2;6843:3;6839:12;6832:19;;6635:222;;;:::o;6863:327::-;;7026:67;7090:2;7085:3;7026:67;:::i;:::-;7019:74;;7123:31;7119:1;7114:3;7110:11;7103:52;7181:2;7176:3;7172:12;7165:19;;7009:181;;;:::o;7196:372::-;;7359:67;7423:2;7418:3;7359:67;:::i;:::-;7352:74;;7456:34;7452:1;7447:3;7443:11;7436:55;7522:10;7517:2;7512:3;7508:12;7501:32;7559:2;7554:3;7550:12;7543:19;;7342:226;;;:::o;7574:370::-;;7737:67;7801:2;7796:3;7737:67;:::i;:::-;7730:74;;7834:34;7830:1;7825:3;7821:11;7814:55;7900:8;7895:2;7890:3;7886:12;7879:30;7935:2;7930:3;7926:12;7919:19;;7720:224;;;:::o;7950:371::-;;8113:67;8177:2;8172:3;8113:67;:::i;:::-;8106:74;;8210:34;8206:1;8201:3;8197:11;8190:55;8276:9;8271:2;8266:3;8262:12;8255:31;8312:2;8307:3;8303:12;8296:19;;8096:225;;;:::o;8327:324::-;;8490:67;8554:2;8549:3;8490:67;:::i;:::-;8483:74;;8587:28;8583:1;8578:3;8574:11;8567:49;8642:2;8637:3;8633:12;8626:19;;8473:178;;;:::o;8657:329::-;;8820:67;8884:2;8879:3;8820:67;:::i;:::-;8813:74;;8917:33;8913:1;8908:3;8904:11;8897:54;8977:2;8972:3;8968:12;8961:19;;8803:183;;;:::o;8992:373::-;;9155:67;9219:2;9214:3;9155:67;:::i;:::-;9148:74;;9252:34;9248:1;9243:3;9239:11;9232:55;9318:11;9313:2;9308:3;9304:12;9297:33;9356:2;9351:3;9347:12;9340:19;;9138:227;;;:::o;9371:317::-;;9534:67;9598:2;9593:3;9534:67;:::i;:::-;9527:74;;9631:21;9627:1;9622:3;9618:11;9611:42;9679:2;9674:3;9670:12;9663:19;;9517:171;;;:::o;9694:318::-;;9857:67;9921:2;9916:3;9857:67;:::i;:::-;9850:74;;9954:22;9950:1;9945:3;9941:11;9934:43;10003:2;9998:3;9994:12;9987:19;;9840:172;;;:::o;10018:326::-;;10181:67;10245:2;10240:3;10181:67;:::i;:::-;10174:74;;10278:30;10274:1;10269:3;10265:11;10258:51;10335:2;10330:3;10326:12;10319:19;;10164:180;;;:::o;10350:370::-;;10513:67;10577:2;10572:3;10513:67;:::i;:::-;10506:74;;10610:34;10606:1;10601:3;10597:11;10590:55;10676:8;10671:2;10666:3;10662:12;10655:30;10711:2;10706:3;10702:12;10695:19;;10496:224;;;:::o;10726:323::-;;10889:67;10953:2;10948:3;10889:67;:::i;:::-;10882:74;;10986:27;10982:1;10977:3;10973:11;10966:48;11040:2;11035:3;11031:12;11024:19;;10872:177;;;:::o;11055:365::-;;11218:67;11282:2;11277:3;11218:67;:::i;:::-;11211:74;;11315:34;11311:1;11306:3;11302:11;11295:55;11381:3;11376:2;11371:3;11367:12;11360:25;11411:2;11406:3;11402:12;11395:19;;11201:219;;;:::o;11426:330::-;;11589:67;11653:2;11648:3;11589:67;:::i;:::-;11582:74;;11686:34;11682:1;11677:3;11673:11;11666:55;11747:2;11742:3;11738:12;11731:19;;11572:184;;;:::o;11762:323::-;;11925:67;11989:2;11984:3;11925:67;:::i;:::-;11918:74;;12022:27;12018:1;12013:3;12009:11;12002:48;12076:2;12071:3;12067:12;12060:19;;11908:177;;;:::o;12091:328::-;;12254:67;12318:2;12313:3;12254:67;:::i;:::-;12247:74;;12351:32;12347:1;12342:3;12338:11;12331:53;12410:2;12405:3;12401:12;12394:19;;12237:182;;;:::o;12425:328::-;;12588:67;12652:2;12647:3;12588:67;:::i;:::-;12581:74;;12685:32;12681:1;12676:3;12672:11;12665:53;12744:2;12739:3;12735:12;12728:19;;12571:182;;;:::o;12759:330::-;;12922:67;12986:2;12981:3;12922:67;:::i;:::-;12915:74;;13019:34;13015:1;13010:3;13006:11;12999:55;13080:2;13075:3;13071:12;13064:19;;12905:184;;;:::o;13095:372::-;;13258:67;13322:2;13317:3;13258:67;:::i;:::-;13251:74;;13355:34;13351:1;13346:3;13342:11;13335:55;13421:10;13416:2;13411:3;13407:12;13400:32;13458:2;13453:3;13449:12;13442:19;;13241:226;;;:::o;13473:369::-;;13636:67;13700:2;13695:3;13636:67;:::i;:::-;13629:74;;13733:34;13729:1;13724:3;13720:11;13713:55;13799:7;13794:2;13789:3;13785:12;13778:29;13833:2;13828:3;13824:12;13817:19;;13619:223;;;:::o;13848:322::-;;14011:67;14075:2;14070:3;14011:67;:::i;:::-;14004:74;;14108:26;14104:1;14099:3;14095:11;14088:47;14161:2;14156:3;14152:12;14145:19;;13994:176;;;:::o;14176:317::-;;14339:67;14403:2;14398:3;14339:67;:::i;:::-;14332:74;;14436:21;14432:1;14427:3;14423:11;14416:42;14484:2;14479:3;14475:12;14468:19;;14322:171;;;:::o;14499:370::-;;14662:67;14726:2;14721:3;14662:67;:::i;:::-;14655:74;;14759:34;14755:1;14750:3;14746:11;14739:55;14825:8;14820:2;14815:3;14811:12;14804:30;14860:2;14855:3;14851:12;14844:19;;14645:224;;;:::o;14875:367::-;;15038:67;15102:2;15097:3;15038:67;:::i;:::-;15031:74;;15135:34;15131:1;15126:3;15122:11;15115:55;15201:5;15196:2;15191:3;15187:12;15180:27;15233:2;15228:3;15224:12;15217:19;;15021:221;;;:::o;15248:118::-;15335:24;15353:5;15335:24;:::i;:::-;15330:3;15323:37;15313:53;;:::o;15372:112::-;15455:22;15471:5;15455:22;:::i;:::-;15450:3;15443:35;15433:51;;:::o;15490:222::-;;15621:2;15610:9;15606:18;15598:26;;15634:71;15702:1;15691:9;15687:17;15678:6;15634:71;:::i;:::-;15588:124;;;;:::o;15718:553::-;;15933:3;15922:9;15918:19;15910:27;;15947:71;16015:1;16004:9;16000:17;15991:6;15947:71;:::i;:::-;16028:72;16096:2;16085:9;16081:18;16072:6;16028:72;:::i;:::-;16110;16178:2;16167:9;16163:18;16154:6;16110:72;:::i;:::-;16192;16260:2;16249:9;16245:18;16236:6;16192:72;:::i;:::-;15900:371;;;;;;;:::o;16277:442::-;;16464:2;16453:9;16449:18;16441:26;;16477:71;16545:1;16534:9;16530:17;16521:6;16477:71;:::i;:::-;16558:72;16626:2;16615:9;16611:18;16602:6;16558:72;:::i;:::-;16640;16708:2;16697:9;16693:18;16684:6;16640:72;:::i;:::-;16431:288;;;;;;:::o;16725:332::-;;16884:2;16873:9;16869:18;16861:26;;16897:71;16965:1;16954:9;16950:17;16941:6;16897:71;:::i;:::-;16978:72;17046:2;17035:9;17031:18;17022:6;16978:72;:::i;:::-;16851:206;;;;;:::o;17063:210::-;;17188:2;17177:9;17173:18;17165:26;;17201:65;17263:1;17252:9;17248:17;17239:6;17201:65;:::i;:::-;17155:118;;;;:::o;17279:313::-;;17430:2;17419:9;17415:18;17407:26;;17479:9;17473:4;17469:20;17465:1;17454:9;17450:17;17443:47;17507:78;17580:4;17571:6;17507:78;:::i;:::-;17499:86;;17397:195;;;;:::o;17598:419::-;;17802:2;17791:9;17787:18;17779:26;;17851:9;17845:4;17841:20;17837:1;17826:9;17822:17;17815:47;17879:131;18005:4;17879:131;:::i;:::-;17871:139;;17769:248;;;:::o;18023:419::-;;18227:2;18216:9;18212:18;18204:26;;18276:9;18270:4;18266:20;18262:1;18251:9;18247:17;18240:47;18304:131;18430:4;18304:131;:::i;:::-;18296:139;;18194:248;;;:::o;18448:419::-;;18652:2;18641:9;18637:18;18629:26;;18701:9;18695:4;18691:20;18687:1;18676:9;18672:17;18665:47;18729:131;18855:4;18729:131;:::i;:::-;18721:139;;18619:248;;;:::o;18873:419::-;;19077:2;19066:9;19062:18;19054:26;;19126:9;19120:4;19116:20;19112:1;19101:9;19097:17;19090:47;19154:131;19280:4;19154:131;:::i;:::-;19146:139;;19044:248;;;:::o;19298:419::-;;19502:2;19491:9;19487:18;19479:26;;19551:9;19545:4;19541:20;19537:1;19526:9;19522:17;19515:47;19579:131;19705:4;19579:131;:::i;:::-;19571:139;;19469:248;;;:::o;19723:419::-;;19927:2;19916:9;19912:18;19904:26;;19976:9;19970:4;19966:20;19962:1;19951:9;19947:17;19940:47;20004:131;20130:4;20004:131;:::i;:::-;19996:139;;19894:248;;;:::o;20148:419::-;;20352:2;20341:9;20337:18;20329:26;;20401:9;20395:4;20391:20;20387:1;20376:9;20372:17;20365:47;20429:131;20555:4;20429:131;:::i;:::-;20421:139;;20319:248;;;:::o;20573:419::-;;20777:2;20766:9;20762:18;20754:26;;20826:9;20820:4;20816:20;20812:1;20801:9;20797:17;20790:47;20854:131;20980:4;20854:131;:::i;:::-;20846:139;;20744:248;;;:::o;20998:419::-;;21202:2;21191:9;21187:18;21179:26;;21251:9;21245:4;21241:20;21237:1;21226:9;21222:17;21215:47;21279:131;21405:4;21279:131;:::i;:::-;21271:139;;21169:248;;;:::o;21423:419::-;;21627:2;21616:9;21612:18;21604:26;;21676:9;21670:4;21666:20;21662:1;21651:9;21647:17;21640:47;21704:131;21830:4;21704:131;:::i;:::-;21696:139;;21594:248;;;:::o;21848:419::-;;22052:2;22041:9;22037:18;22029:26;;22101:9;22095:4;22091:20;22087:1;22076:9;22072:17;22065:47;22129:131;22255:4;22129:131;:::i;:::-;22121:139;;22019:248;;;:::o;22273:419::-;;22477:2;22466:9;22462:18;22454:26;;22526:9;22520:4;22516:20;22512:1;22501:9;22497:17;22490:47;22554:131;22680:4;22554:131;:::i;:::-;22546:139;;22444:248;;;:::o;22698:419::-;;22902:2;22891:9;22887:18;22879:26;;22951:9;22945:4;22941:20;22937:1;22926:9;22922:17;22915:47;22979:131;23105:4;22979:131;:::i;:::-;22971:139;;22869:248;;;:::o;23123:419::-;;23327:2;23316:9;23312:18;23304:26;;23376:9;23370:4;23366:20;23362:1;23351:9;23347:17;23340:47;23404:131;23530:4;23404:131;:::i;:::-;23396:139;;23294:248;;;:::o;23548:419::-;;23752:2;23741:9;23737:18;23729:26;;23801:9;23795:4;23791:20;23787:1;23776:9;23772:17;23765:47;23829:131;23955:4;23829:131;:::i;:::-;23821:139;;23719:248;;;:::o;23973:419::-;;24177:2;24166:9;24162:18;24154:26;;24226:9;24220:4;24216:20;24212:1;24201:9;24197:17;24190:47;24254:131;24380:4;24254:131;:::i;:::-;24246:139;;24144:248;;;:::o;24398:419::-;;24602:2;24591:9;24587:18;24579:26;;24651:9;24645:4;24641:20;24637:1;24626:9;24622:17;24615:47;24679:131;24805:4;24679:131;:::i;:::-;24671:139;;24569:248;;;:::o;24823:419::-;;25027:2;25016:9;25012:18;25004:26;;25076:9;25070:4;25066:20;25062:1;25051:9;25047:17;25040:47;25104:131;25230:4;25104:131;:::i;:::-;25096:139;;24994:248;;;:::o;25248:419::-;;25452:2;25441:9;25437:18;25429:26;;25501:9;25495:4;25491:20;25487:1;25476:9;25472:17;25465:47;25529:131;25655:4;25529:131;:::i;:::-;25521:139;;25419:248;;;:::o;25673:419::-;;25877:2;25866:9;25862:18;25854:26;;25926:9;25920:4;25916:20;25912:1;25901:9;25897:17;25890:47;25954:131;26080:4;25954:131;:::i;:::-;25946:139;;25844:248;;;:::o;26098:419::-;;26302:2;26291:9;26287:18;26279:26;;26351:9;26345:4;26341:20;26337:1;26326:9;26322:17;26315:47;26379:131;26505:4;26379:131;:::i;:::-;26371:139;;26269:248;;;:::o;26523:419::-;;26727:2;26716:9;26712:18;26704:26;;26776:9;26770:4;26766:20;26762:1;26751:9;26747:17;26740:47;26804:131;26930:4;26804:131;:::i;:::-;26796:139;;26694:248;;;:::o;26948:419::-;;27152:2;27141:9;27137:18;27129:26;;27201:9;27195:4;27191:20;27187:1;27176:9;27172:17;27165:47;27229:131;27355:4;27229:131;:::i;:::-;27221:139;;27119:248;;;:::o;27373:419::-;;27577:2;27566:9;27562:18;27554:26;;27626:9;27620:4;27616:20;27612:1;27601:9;27597:17;27590:47;27654:131;27780:4;27654:131;:::i;:::-;27646:139;;27544:248;;;:::o;27798:419::-;;28002:2;27991:9;27987:18;27979:26;;28051:9;28045:4;28041:20;28037:1;28026:9;28022:17;28015:47;28079:131;28205:4;28079:131;:::i;:::-;28071:139;;27969:248;;;:::o;28223:222::-;;28354:2;28343:9;28339:18;28331:26;;28367:71;28435:1;28424:9;28420:17;28411:6;28367:71;:::i;:::-;28321:124;;;;:::o;28451:214::-;;28578:2;28567:9;28563:18;28555:26;;28591:67;28655:1;28644:9;28640:17;28631:6;28591:67;:::i;:::-;28545:120;;;;:::o;28671:283::-;;28737:2;28731:9;28721:19;;28779:4;28771:6;28767:17;28886:6;28874:10;28871:22;28850:18;28838:10;28835:34;28832:62;28829:2;;;28897:18;;:::i;:::-;28829:2;28937:10;28933:2;28926:22;28711:243;;;;:::o;28960:331::-;;29111:18;29103:6;29100:30;29097:2;;;29133:18;;:::i;:::-;29097:2;29218:4;29214:9;29207:4;29199:6;29195:17;29191:33;29183:41;;29279:4;29273;29269:15;29261:23;;29026:265;;;:::o;29297:99::-;;29383:5;29377:12;29367:22;;29356:40;;;:::o;29402:169::-;;29520:6;29515:3;29508:19;29560:4;29555:3;29551:14;29536:29;;29498:73;;;;:::o;29577:305::-;;29636:20;29654:1;29636:20;:::i;:::-;29631:25;;29670:20;29688:1;29670:20;:::i;:::-;29665:25;;29824:1;29756:66;29752:74;29749:1;29746:81;29743:2;;;29830:18;;:::i;:::-;29743:2;29874:1;29871;29867:9;29860:16;;29621:261;;;;:::o;29888:185::-;;29945:20;29963:1;29945:20;:::i;:::-;29940:25;;29979:20;29997:1;29979:20;:::i;:::-;29974:25;;30018:1;30008:2;;30023:18;;:::i;:::-;30008:2;30065:1;30062;30058:9;30053:14;;29930:143;;;;:::o;30079:348::-;;30142:20;30160:1;30142:20;:::i;:::-;30137:25;;30176:20;30194:1;30176:20;:::i;:::-;30171:25;;30364:1;30296:66;30292:74;30289:1;30286:81;30281:1;30274:9;30267:17;30263:105;30260:2;;;30371:18;;:::i;:::-;30260:2;30419:1;30416;30412:9;30401:20;;30127:300;;;;:::o;30433:191::-;;30493:20;30511:1;30493:20;:::i;:::-;30488:25;;30527:20;30545:1;30527:20;:::i;:::-;30522:25;;30566:1;30563;30560:8;30557:2;;;30571:18;;:::i;:::-;30557:2;30616:1;30613;30609:9;30601:17;;30478:146;;;;:::o;30630:96::-;;30696:24;30714:5;30696:24;:::i;:::-;30685:35;;30675:51;;;:::o;30732:90::-;;30809:5;30802:13;30795:21;30784:32;;30774:48;;;:::o;30828:77::-;;30894:5;30883:16;;30873:32;;;:::o;30911:126::-;;30988:42;30981:5;30977:54;30966:65;;30956:81;;;:::o;31043:77::-;;31109:5;31098:16;;31088:32;;;:::o;31126:86::-;;31201:4;31194:5;31190:16;31179:27;;31169:43;;;:::o;31218:154::-;31302:6;31297:3;31292;31279:30;31364:1;31355:6;31350:3;31346:16;31339:27;31269:103;;;:::o;31378:307::-;31446:1;31456:113;31470:6;31467:1;31464:13;31456:113;;;31555:1;31550:3;31546:11;31540:18;31536:1;31531:3;31527:11;31520:39;31492:2;31489:1;31485:10;31480:15;;31456:113;;;31587:6;31584:1;31581:13;31578:2;;;31667:1;31658:6;31653:3;31649:16;31642:27;31578:2;31427:258;;;;:::o;31691:320::-;;31772:1;31766:4;31762:12;31752:22;;31819:1;31813:4;31809:12;31840:18;31830:2;;31896:4;31888:6;31884:17;31874:27;;31830:2;31958;31950:6;31947:14;31927:18;31924:38;31921:2;;;31977:18;;:::i;:::-;31921:2;31742:269;;;;:::o;32017:233::-;;32079:24;32097:5;32079:24;:::i;:::-;32070:33;;32125:66;32118:5;32115:77;32112:2;;;32195:18;;:::i;:::-;32112:2;32242:1;32235:5;32231:13;32224:20;;32060:190;;;:::o;32256:180::-;32304:77;32301:1;32294:88;32401:4;32398:1;32391:15;32425:4;32422:1;32415:15;32442:180;32490:77;32487:1;32480:88;32587:4;32584:1;32577:15;32611:4;32608:1;32601:15;32628:180;32676:77;32673:1;32666:88;32773:4;32770:1;32763:15;32797:4;32794:1;32787:15;32814:180;32862:77;32859:1;32852:88;32959:4;32956:1;32949:15;32983:4;32980:1;32973:15;33000:102;;33092:2;33088:7;33083:2;33076:5;33072:14;33068:28;33058:38;;33048:54;;;:::o;33108:122::-;33181:24;33199:5;33181:24;:::i;:::-;33174:5;33171:35;33161:2;;33220:1;33217;33210:12;33161:2;33151:79;:::o;33236:116::-;33306:21;33321:5;33306:21;:::i;:::-;33299:5;33296:32;33286:2;;33342:1;33339;33332:12;33286:2;33276:76;:::o;33358:122::-;33431:24;33449:5;33431:24;:::i;:::-;33424:5;33421:35;33411:2;;33470:1;33467;33460:12;33411:2;33401:79;:::o;33486:122::-;33559:24;33577:5;33559:24;:::i;:::-;33552:5;33549:35;33539:2;;33598:1;33595;33588:12;33539:2;33529:79;:::o
Swarm Source
ipfs://5a62bb4aa59095dc7d6a4404b7249d7094779545a9747050b243bc49b39a723a
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.