ERC-20
Overview
Max Total Supply
1,000,000,000 Marvin
Holders
71
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
4,962,473.543793470021256333 MarvinValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Marvinthemartian
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-06-25 */ /** *Submitted for verification at Etherscan.io on 2023-06-22 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.20; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } contract ERC20 is Context, IERC20 { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override 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 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 returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } 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"); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _createInitialSupply(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: 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), "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); } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() external virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } 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"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } 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"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, 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) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, 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) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or 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 { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // 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 /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function _callOptionalReturn(IERC20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } interface IUniswapV3Router { function factory() external view returns (address); } interface IUniswapV3Factory { function createPool( address tokenA, address tokenB, uint24 fee ) external returns (address pool); } contract Marvinthemartian is Ownable, ERC20 { IUniswapV3Router public immutable v3Router; address public immutable pool; IERC20 public immutable WETH; mapping (address => bool) public isPool; mapping (address => bool) public isFeeExempt; mapping (address => bool) public isMaxTxExempt; uint256 public maxTransactionAmt; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; receive() payable external{} constructor() ERC20("Marvin", "Marvin"){ address wethContract; address _v3Router; // @dev assumes WETH pair if(block.chainid == 1){ wethContract = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; _v3Router = 0xE592427A0AEce92De3Edee1F18E0157C05861564; } else if(block.chainid == 5){ wethContract = 0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6; _v3Router = 0xE592427A0AEce92De3Edee1F18E0157C05861564; } else { revert("Chain not configured"); } WETH = IERC20(wethContract); v3Router = IUniswapV3Router(_v3Router); pool = IUniswapV3Factory(v3Router.factory()).createPool(address(this), address(WETH), 10000); isPool[pool] = true; isFeeExempt[msg.sender] = true; isFeeExempt[address(v3Router)] = true; isFeeExempt[address(0xdead)] = true; isMaxTxExempt[msg.sender] = true; isMaxTxExempt[address(v3Router)] = true; isMaxTxExempt[address(0xdead)] = true; uint256 totalSupply = 1 * 1e9 * 1e18; maxTransactionAmt = totalSupply * 5 / 1000; // @dev update maxWallet = totalSupply * 1 / 100; // @dev update _createInitialSupply(msg.sender, totalSupply); super._transfer(msg.sender, 0xF73237f2a914DfCaFf29C46c92F6dC3A91EAf748, totalSupply * 1 / 100); super._transfer(msg.sender, 0x780D3ffaF6eAcbd27A1A4551f8607A7A5C28Bb8f, totalSupply * 2 / 100); super._transfer(msg.sender, 0x75e89d5979E4f6Fba9F97c104c2F0AFB3F1dcB88, totalSupply * 10 / 100); super._transfer(msg.sender, 0x690469a320911A6719E267C07B3a002bc8078382, totalSupply * 1 / 100); super._transfer(msg.sender, 0x537C06b7fF61Fae1b2c683Fe8bf88bBC4f740365, totalSupply * 4 / 100); } function _transfer( address from, address to, uint256 amount ) internal override { if(limitsInEffect && !isFeeExempt[to] && !isFeeExempt[from]) { require(tradingActive, "Trading not active"); //when buy if (isPool[from] && !isMaxTxExempt[to]) { require(amount <= maxTransactionAmt, "Buy transfer amt exceeds the max buy."); require(amount + balanceOf(to) <= maxWallet, "Cannot Exceed max wallet"); } //when sell else if (isPool[to] && !isMaxTxExempt[from]) { require(amount <= maxTransactionAmt, "Sell transfer amt exceeds the max sell."); } //when transfer else if (!isMaxTxExempt[to]){ require(amount + balanceOf(to) <= maxWallet, "Cannot Exceed max wallet"); } } super._transfer(from, to, amount); } function enableTrading() external onlyOwner { tradingActive = true; } function removeLimits() external onlyOwner { limitsInEffect = false; } function updateMaxAmt(uint256 newNum) external onlyOwner { require(newNum > (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%"); maxTransactionAmt = newNum * (10**18); } function updateMaxWalletAmt(uint256 newNum) external onlyOwner { require(newNum > (totalSupply() * 1 / 100)/1e18, "Cannot set maxWallet lower than 1%"); maxWallet = newNum * (10**18); } function setIsFeeEx(address account, bool exempt) external onlyOwner { isFeeExempt[account] = exempt; } function setIsMaxTxEx(address account, bool exempt) external onlyOwner { require(!isPool[account], "Cannot remove exemption from pool"); isMaxTxExempt[account] = exempt; } function setIsPool(address _pool, bool _isPool) external onlyOwner { require(_pool != address(pool), "Cannot remove original pool"); isPool[_pool] = _isPool; } function sendEth() external onlyOwner { bool success; (success, ) = msg.sender.call{value: address(this).balance}(""); require(success, "withdraw unsuccessful"); } function transferToken(address _token, address _to) external onlyOwner { require(_token != address(0), "_token address cannot be 0"); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); SafeERC20.safeTransfer(IERC20(_token),_to, _contractBalance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"contract IERC20","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMaxTxExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"pool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeEx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsMaxTxEx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"},{"internalType":"bool","name":"_isPool","type":"bool"}],"name":"setIsPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxAmt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"v3Router","outputs":[{"internalType":"contract IUniswapV3Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e06040526001600b5f6101000a81548160ff0219169083151502179055505f600b60016101000a81548160ff02191690831515021790555034801562000044575f80fd5b506040518060400160405280600681526020017f4d617276696e00000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4d617276696e00000000000000000000000000000000000000000000000000008152505f620000c2620007ee60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600490816200016f919062000e13565b50806005908162000181919062000e13565b5050505f8060014603620001c35773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2915073e592427a0aece92de3edee1f18e0157c0586156490506200023e565b60054603620002005773b4fbf271143f4fbf7b91a5ded31805e42b2208d6915073e592427a0aece92de3edee1f18e0157c0586156490506200023d565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002349062000f55565b60405180910390fd5b5b8173ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000318919062000fda565b73ffffffffffffffffffffffffffffffffffffffff1663a16712953060c0516127106040518463ffffffff1660e01b81526004016200035a939291906200106a565b6020604051808303815f875af115801562000377573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200039d919062000fda565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050600160065f60a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f6b033b2e3c9fd0803ce800000090506103e86005826200064f9190620010d2565b6200065b919062001149565b6009819055506064600182620006729190620010d2565b6200067e919062001149565b600a81905550620006963382620007f560201b60201c565b620006d93373f73237f2a914dfcaff29c46c92f6dc3a91eaf7486064600185620006c19190620010d2565b620006cd919062001149565b6200094060201b60201c565b6200071c3373780d3ffaf6eacbd27a1a4551f8607a7a5c28bb8f6064600285620007049190620010d2565b62000710919062001149565b6200094060201b60201c565b6200075f337375e89d5979e4f6fba9f97c104c2f0afb3f1dcb886064600a85620007479190620010d2565b62000753919062001149565b6200094060201b60201c565b620007a23373690469a320911a6719e267c07b3a002bc807838260646001856200078a9190620010d2565b62000796919062001149565b6200094060201b60201c565b620007e53373537c06b7ff61fae1b2c683fe8bf88bbc4f7403656064600485620007cd9190620010d2565b620007d9919062001149565b6200094060201b60201c565b50505062001410565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000866576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200085d90620011ce565b60405180910390fd5b8060035f828254620008799190620011ee565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254620008ce9190620011ee565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000934919062001239565b60405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620009b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a890620012c8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a19906200135c565b60405180910390fd5b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101562000aa9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aa090620013f0565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000b3b9190620011ee565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405162000ba1919062001239565b60405180910390a350505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000c2b57607f821691505b60208210810362000c415762000c4062000be6565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000ca57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c68565b62000cb1868362000c68565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000cfb62000cf562000cef8462000cc9565b62000cd2565b62000cc9565b9050919050565b5f819050919050565b62000d168362000cdb565b62000d2e62000d258262000d02565b84845462000c74565b825550505050565b5f90565b62000d4462000d36565b62000d5181848462000d0b565b505050565b5b8181101562000d785762000d6c5f8262000d3a565b60018101905062000d57565b5050565b601f82111562000dc75762000d918162000c47565b62000d9c8462000c59565b8101602085101562000dac578190505b62000dc462000dbb8562000c59565b83018262000d56565b50505b505050565b5f82821c905092915050565b5f62000de95f198460080262000dcc565b1980831691505092915050565b5f62000e03838362000dd8565b9150826002028217905092915050565b62000e1e8262000baf565b67ffffffffffffffff81111562000e3a5762000e3962000bb9565b5b62000e46825462000c13565b62000e5382828562000d7c565b5f60209050601f83116001811462000e89575f841562000e74578287015190505b62000e80858262000df6565b86555062000eef565b601f19841662000e998662000c47565b5f5b8281101562000ec25784890151825560018201915060208501945060208101905062000e9b565b8683101562000ee2578489015162000ede601f89168262000dd8565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f436861696e206e6f7420636f6e666967757265640000000000000000000000005f82015250565b5f62000f3d60148362000ef7565b915062000f4a8262000f07565b602082019050919050565b5f6020820190508181035f83015262000f6e8162000f2f565b9050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000fa48262000f79565b9050919050565b62000fb68162000f98565b811462000fc1575f80fd5b50565b5f8151905062000fd48162000fab565b92915050565b5f6020828403121562000ff25762000ff162000f75565b5b5f620010018482850162000fc4565b91505092915050565b620010158162000f98565b82525050565b5f819050919050565b5f62ffffff82169050919050565b5f620010526200104c62001046846200101b565b62000cd2565b62001024565b9050919050565b620010648162001032565b82525050565b5f6060820190506200107f5f8301866200100a565b6200108e60208301856200100a565b6200109d604083018462001059565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620010de8262000cc9565b9150620010eb8362000cc9565b9250828202620010fb8162000cc9565b91508282048414831517620011155762001114620010a5565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620011558262000cc9565b9150620011628362000cc9565b9250826200117557620011746200111c565b5b828204905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f620011b6601f8362000ef7565b9150620011c38262001180565b602082019050919050565b5f6020820190508181035f830152620011e781620011a8565b9050919050565b5f620011fa8262000cc9565b9150620012078362000cc9565b9250828201905080821115620012225762001221620010a5565b5b92915050565b620012338162000cc9565b82525050565b5f6020820190506200124e5f83018462001228565b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f620012b060258362000ef7565b9150620012bd8262001254565b604082019050919050565b5f6020820190508181035f830152620012e181620012a2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6200134460238362000ef7565b91506200135182620012e8565b604082019050919050565b5f6020820190508181035f830152620013758162001336565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f620013d860268362000ef7565b9150620013e5826200137c565b604082019050919050565b5f6020820190508181035f8301526200140981620013ca565b9050919050565b60805160a05160c051613832620014425f395f61172c01525f81816109d00152610a9101525f6109ac01526138325ff3fe6080604052600436106101f1575f3560e01c80635b16ebb71161010c578063a457c2d71161009f578063c1ec8d4b1161006e578063c1ec8d4b146106ca578063dd62ed3e14610706578063f01c75e114610742578063f2fde38b1461076a578063f8b45b0514610792576101f8565b8063a457c2d7146105fe578063a9059cbb1461063a578063ad5c464814610676578063bbc0c742146106a0576101f8565b8063751039fc116100db578063751039fc1461057e5780638a8c523c146105945780638da5cb5b146105aa57806395d89b41146105d4576101f8565b80635b16ebb7146104c8578063657f644b1461050457806370a082311461052c578063715018a614610568576101f8565b806323b872dd116101845780634221b508116101535780634221b5081461042657806343befc121461044e57806348ae238f146104765780634a62bb651461049e576101f8565b806323b872dd14610348578063313ce5671461038457806339509351146103ae5780633f4218e0146103ea576101f8565b806316f0115b116101c057806316f0115b146102a257806318160ddd146102cc5780631cb5a549146102f657806320d830551461031e576101f8565b806306e99fef146101fc57806306fdde0314610212578063095ea7b31461023c5780630dc9130614610278576101f8565b366101f857005b5f80fd5b348015610207575f80fd5b506102106107bc565b005b34801561021d575f80fd5b506102266108fd565b60405161023391906126a2565b60405180910390f35b348015610247575f80fd5b50610262600480360381019061025d9190612753565b61098d565b60405161026f91906127ab565b60405180910390f35b348015610283575f80fd5b5061028c6109aa565b604051610299919061281f565b60405180910390f35b3480156102ad575f80fd5b506102b66109ce565b6040516102c39190612847565b60405180910390f35b3480156102d7575f80fd5b506102e06109f2565b6040516102ed919061286f565b60405180910390f35b348015610301575f80fd5b5061031c600480360381019061031791906128b2565b6109fb565b005b348015610329575f80fd5b50610332610b75565b60405161033f919061286f565b60405180910390f35b348015610353575f80fd5b5061036e600480360381019061036991906128f0565b610b7b565b60405161037b91906127ab565b60405180910390f35b34801561038f575f80fd5b50610398610c6d565b6040516103a5919061295b565b60405180910390f35b3480156103b9575f80fd5b506103d460048036038101906103cf9190612753565b610c75565b6040516103e191906127ab565b60405180910390f35b3480156103f5575f80fd5b50610410600480360381019061040b9190612974565b610d1c565b60405161041d91906127ab565b60405180910390f35b348015610431575f80fd5b5061044c600480360381019061044791906128b2565b610d39565b005b348015610459575f80fd5b50610474600480360381019061046f91906128b2565b610eaf565b005b348015610481575f80fd5b5061049c6004803603810190610497919061299f565b610f9b565b005b3480156104a9575f80fd5b506104b2611128565b6040516104bf91906127ab565b60405180910390f35b3480156104d3575f80fd5b506104ee60048036038101906104e99190612974565b61113a565b6040516104fb91906127ab565b60405180910390f35b34801561050f575f80fd5b5061052a600480360381019061052591906129dd565b611157565b005b348015610537575f80fd5b50610552600480360381019061054d9190612974565b61127c565b60405161055f919061286f565b60405180910390f35b348015610573575f80fd5b5061057c6112c2565b005b348015610589575f80fd5b50610592611410565b005b34801561059f575f80fd5b506105a86114bf565b005b3480156105b5575f80fd5b506105be611570565b6040516105cb9190612847565b60405180910390f35b3480156105df575f80fd5b506105e8611597565b6040516105f591906126a2565b60405180910390f35b348015610609575f80fd5b50610624600480360381019061061f9190612753565b611627565b60405161063191906127ab565b60405180910390f35b348015610645575f80fd5b50610660600480360381019061065b9190612753565b61170d565b60405161066d91906127ab565b60405180910390f35b348015610681575f80fd5b5061068a61172a565b6040516106979190612a28565b60405180910390f35b3480156106ab575f80fd5b506106b461174e565b6040516106c191906127ab565b60405180910390f35b3480156106d5575f80fd5b506106f060048036038101906106eb9190612974565b611761565b6040516106fd91906127ab565b60405180910390f35b348015610711575f80fd5b5061072c6004803603810190610727919061299f565b61177e565b604051610739919061286f565b60405180910390f35b34801561074d575f80fd5b50610768600480360381019061076391906129dd565b611800565b005b348015610775575f80fd5b50610790600480360381019061078b9190612974565b611926565b005b34801561079d575f80fd5b506107a6611ae3565b6040516107b3919061286f565b60405180910390f35b6107c4611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084790612a8b565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff164760405161087590612ad6565b5f6040518083038185875af1925050503d805f81146108af576040519150601f19603f3d011682016040523d82523d5f602084013e6108b4565b606091505b505080915050806108fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f190612b34565b60405180910390fd5b50565b60606004805461090c90612b7f565b80601f016020809104026020016040519081016040528092919081815260200182805461093890612b7f565b80156109835780601f1061095a57610100808354040283529160200191610983565b820191905f5260205f20905b81548152906001019060200180831161096657829003601f168201915b5050505050905090565b5f6109a0610999611ae9565b8484611af0565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600354905090565b610a03611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8690612a8b565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1490612bf9565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60095481565b5f610b87848484611cb3565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610bce611ae9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4490612c87565b60405180910390fd5b610c6185610c59611ae9565b858403611af0565b60019150509392505050565b5f6012905090565b5f610d12610c81611ae9565b848460025f610c8e611ae9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d0d9190612cd2565b611af0565b6001905092915050565b6007602052805f5260405f205f915054906101000a900460ff1681565b610d41611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc490612a8b565b60405180910390fd5b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4e90612d75565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610eb7611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3a90612a8b565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610fa3611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102690612a8b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361109d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109490612ddd565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110d79190612847565b602060405180830381865afa1580156110f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111169190612e0f565b90506111238383836120a6565b505050565b600b5f9054906101000a900460ff1681565b6006602052805f5260405f205f915054906101000a900460ff1681565b61115f611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e290612a8b565b60405180910390fd5b670de0b6b3a7640000606460016112006109f2565b61120a9190612e3a565b6112149190612ea8565b61121e9190612ea8565b811161125f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125690612f48565b60405180910390fd5b670de0b6b3a7640000816112739190612e3a565b600a8190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6112ca611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134d90612a8b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611418611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149b90612a8b565b60405180910390fd5b5f600b5f6101000a81548160ff021916908315150217905550565b6114c7611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154a90612a8b565b60405180910390fd5b6001600b60016101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546115a690612b7f565b80601f01602080910402602001604051908101604052809291908181526020018280546115d290612b7f565b801561161d5780601f106115f45761010080835404028352916020019161161d565b820191905f5260205f20905b81548152906001019060200180831161160057829003601f168201915b5050505050905090565b5f8060025f611634611ae9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e590612fd6565b60405180910390fd5b6117026116f9611ae9565b85858403611af0565b600191505092915050565b5f611720611719611ae9565b8484611cb3565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60019054906101000a900460ff1681565b6008602052805f5260405f205f915054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611808611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188b90612a8b565b60405180910390fd5b670de0b6b3a76400006103e860016118aa6109f2565b6118b49190612e3a565b6118be9190612ea8565b6118c89190612ea8565b8111611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190090613064565b60405180910390fd5b670de0b6b3a76400008161191d9190612e3a565b60098190555050565b61192e611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b190612a8b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1f906130f2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5590613180565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc39061320e565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ca6919061286f565b60405180910390a3505050565b600b5f9054906101000a900460ff168015611d15575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d68575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561209657600b60019054906101000a900460ff16611dbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db390613276565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611e59575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f0057600954811115611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a90613304565b60405180910390fd5b600a54611eaf8361127c565b82611eba9190612cd2565b1115611efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef29061336c565b60405180910390fd5b612095565b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611f9d575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fec57600954811115611fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fde906133fa565b60405180910390fd5b612094565b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661209357600a546120468361127c565b826120519190612cd2565b1115612092576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120899061336c565b60405180910390fd5b5b5b5b5b6120a183838361212c565b505050565b6121278363a9059cbb60e01b84846040516024016120c5929190613418565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061238e565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361219a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612191906134af565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff9061353d565b60405180910390fd5b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561228c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612283906135cb565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461231c9190612cd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612380919061286f565b60405180910390a350505050565b5f6123ef826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166124539092919063ffffffff16565b90505f8151111561244e578080602001905181019061240e91906135fd565b61244d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244490613698565b60405180910390fd5b5b505050565b606061246184845f8561246a565b90509392505050565b6060824710156124af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a690613726565b60405180910390fd5b5f808673ffffffffffffffffffffffffffffffffffffffff1685876040516124d7919061377e565b5f6040518083038185875af1925050503d805f8114612511576040519150601f19603f3d011682016040523d82523d5f602084013e612516565b606091505b509150915061252787838387612533565b92505050949350505050565b60608315612594575f83510361258c5761254c856125a7565b61258b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612582906137de565b60405180910390fd5b5b82905061259f565b61259e83836125c9565b5b949350505050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f825111156125db5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260f91906126a2565b60405180910390fd5b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561264f578082015181840152602081019050612634565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61267482612618565b61267e8185612622565b935061268e818560208601612632565b6126978161265a565b840191505092915050565b5f6020820190508181035f8301526126ba818461266a565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6126ef826126c6565b9050919050565b6126ff816126e5565b8114612709575f80fd5b50565b5f8135905061271a816126f6565b92915050565b5f819050919050565b61273281612720565b811461273c575f80fd5b50565b5f8135905061274d81612729565b92915050565b5f8060408385031215612769576127686126c2565b5b5f6127768582860161270c565b92505060206127878582860161273f565b9150509250929050565b5f8115159050919050565b6127a581612791565b82525050565b5f6020820190506127be5f83018461279c565b92915050565b5f819050919050565b5f6127e76127e26127dd846126c6565b6127c4565b6126c6565b9050919050565b5f6127f8826127cd565b9050919050565b5f612809826127ee565b9050919050565b612819816127ff565b82525050565b5f6020820190506128325f830184612810565b92915050565b612841816126e5565b82525050565b5f60208201905061285a5f830184612838565b92915050565b61286981612720565b82525050565b5f6020820190506128825f830184612860565b92915050565b61289181612791565b811461289b575f80fd5b50565b5f813590506128ac81612888565b92915050565b5f80604083850312156128c8576128c76126c2565b5b5f6128d58582860161270c565b92505060206128e68582860161289e565b9150509250929050565b5f805f60608486031215612907576129066126c2565b5b5f6129148682870161270c565b93505060206129258682870161270c565b92505060406129368682870161273f565b9150509250925092565b5f60ff82169050919050565b61295581612940565b82525050565b5f60208201905061296e5f83018461294c565b92915050565b5f60208284031215612989576129886126c2565b5b5f6129968482850161270c565b91505092915050565b5f80604083850312156129b5576129b46126c2565b5b5f6129c28582860161270c565b92505060206129d38582860161270c565b9150509250929050565b5f602082840312156129f2576129f16126c2565b5b5f6129ff8482850161273f565b91505092915050565b5f612a12826127ee565b9050919050565b612a2281612a08565b82525050565b5f602082019050612a3b5f830184612a19565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612a75602083612622565b9150612a8082612a41565b602082019050919050565b5f6020820190508181035f830152612aa281612a69565b9050919050565b5f81905092915050565b50565b5f612ac15f83612aa9565b9150612acc82612ab3565b5f82019050919050565b5f612ae082612ab6565b9150819050919050565b7f776974686472617720756e7375636365737366756c00000000000000000000005f82015250565b5f612b1e601583612622565b9150612b2982612aea565b602082019050919050565b5f6020820190508181035f830152612b4b81612b12565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612b9657607f821691505b602082108103612ba957612ba8612b52565b5b50919050565b7f43616e6e6f742072656d6f7665206f726967696e616c20706f6f6c00000000005f82015250565b5f612be3601b83612622565b9150612bee82612baf565b602082019050919050565b5f6020820190508181035f830152612c1081612bd7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612c71602883612622565b9150612c7c82612c17565b604082019050919050565b5f6020820190508181035f830152612c9e81612c65565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612cdc82612720565b9150612ce783612720565b9250828201905080821115612cff57612cfe612ca5565b5b92915050565b7f43616e6e6f742072656d6f7665206578656d7074696f6e2066726f6d20706f6f5f8201527f6c00000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d5f602183612622565b9150612d6a82612d05565b604082019050919050565b5f6020820190508181035f830152612d8c81612d53565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000005f82015250565b5f612dc7601a83612622565b9150612dd282612d93565b602082019050919050565b5f6020820190508181035f830152612df481612dbb565b9050919050565b5f81519050612e0981612729565b92915050565b5f60208284031215612e2457612e236126c2565b5b5f612e3184828501612dfb565b91505092915050565b5f612e4482612720565b9150612e4f83612720565b9250828202612e5d81612720565b91508282048414831517612e7457612e73612ca5565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612eb282612720565b9150612ebd83612720565b925082612ecd57612ecc612e7b565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f32602283612622565b9150612f3d82612ed8565b604082019050919050565b5f6020820190508181035f830152612f5f81612f26565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612fc0602583612622565b9150612fcb82612f66565b604082019050919050565b5f6020820190508181035f830152612fed81612fb4565b9050919050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f61304e602f83612622565b915061305982612ff4565b604082019050919050565b5f6020820190508181035f83015261307b81613042565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6130dc602683612622565b91506130e782613082565b604082019050919050565b5f6020820190508181035f830152613109816130d0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61316a602483612622565b915061317582613110565b604082019050919050565b5f6020820190508181035f8301526131978161315e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131f8602283612622565b91506132038261319e565b604082019050919050565b5f6020820190508181035f830152613225816131ec565b9050919050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f613260601283612622565b915061326b8261322c565b602082019050919050565b5f6020820190508181035f83015261328d81613254565b9050919050565b7f427579207472616e7366657220616d74206578636565647320746865206d61785f8201527f206275792e000000000000000000000000000000000000000000000000000000602082015250565b5f6132ee602583612622565b91506132f982613294565b604082019050919050565b5f6020820190508181035f83015261331b816132e2565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c657400000000000000005f82015250565b5f613356601883612622565b915061336182613322565b602082019050919050565b5f6020820190508181035f8301526133838161334a565b9050919050565b7f53656c6c207472616e7366657220616d74206578636565647320746865206d615f8201527f782073656c6c2e00000000000000000000000000000000000000000000000000602082015250565b5f6133e4602783612622565b91506133ef8261338a565b604082019050919050565b5f6020820190508181035f830152613411816133d8565b9050919050565b5f60408201905061342b5f830185612838565b6134386020830184612860565b9392505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613499602583612622565b91506134a48261343f565b604082019050919050565b5f6020820190508181035f8301526134c68161348d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613527602383612622565b9150613532826134cd565b604082019050919050565b5f6020820190508181035f8301526135548161351b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6135b5602683612622565b91506135c08261355b565b604082019050919050565b5f6020820190508181035f8301526135e2816135a9565b9050919050565b5f815190506135f781612888565b92915050565b5f60208284031215613612576136116126c2565b5b5f61361f848285016135e9565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f613682602a83612622565b915061368d82613628565b604082019050919050565b5f6020820190508181035f8301526136af81613676565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b5f613710602683612622565b915061371b826136b6565b604082019050919050565b5f6020820190508181035f83015261373d81613704565b9050919050565b5f81519050919050565b5f61375882613744565b6137628185612aa9565b9350613772818560208601612632565b80840191505092915050565b5f613789828461374e565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f6137c8601d83612622565b91506137d382613794565b602082019050919050565b5f6020820190508181035f8301526137f5816137bc565b905091905056fea26469706673582212206985a37cb6f8f50e3ed2e62e6ba77b4c8cf8298a772c126270905443f75cf99564736f6c63430008140033
Deployed Bytecode
0x6080604052600436106101f1575f3560e01c80635b16ebb71161010c578063a457c2d71161009f578063c1ec8d4b1161006e578063c1ec8d4b146106ca578063dd62ed3e14610706578063f01c75e114610742578063f2fde38b1461076a578063f8b45b0514610792576101f8565b8063a457c2d7146105fe578063a9059cbb1461063a578063ad5c464814610676578063bbc0c742146106a0576101f8565b8063751039fc116100db578063751039fc1461057e5780638a8c523c146105945780638da5cb5b146105aa57806395d89b41146105d4576101f8565b80635b16ebb7146104c8578063657f644b1461050457806370a082311461052c578063715018a614610568576101f8565b806323b872dd116101845780634221b508116101535780634221b5081461042657806343befc121461044e57806348ae238f146104765780634a62bb651461049e576101f8565b806323b872dd14610348578063313ce5671461038457806339509351146103ae5780633f4218e0146103ea576101f8565b806316f0115b116101c057806316f0115b146102a257806318160ddd146102cc5780631cb5a549146102f657806320d830551461031e576101f8565b806306e99fef146101fc57806306fdde0314610212578063095ea7b31461023c5780630dc9130614610278576101f8565b366101f857005b5f80fd5b348015610207575f80fd5b506102106107bc565b005b34801561021d575f80fd5b506102266108fd565b60405161023391906126a2565b60405180910390f35b348015610247575f80fd5b50610262600480360381019061025d9190612753565b61098d565b60405161026f91906127ab565b60405180910390f35b348015610283575f80fd5b5061028c6109aa565b604051610299919061281f565b60405180910390f35b3480156102ad575f80fd5b506102b66109ce565b6040516102c39190612847565b60405180910390f35b3480156102d7575f80fd5b506102e06109f2565b6040516102ed919061286f565b60405180910390f35b348015610301575f80fd5b5061031c600480360381019061031791906128b2565b6109fb565b005b348015610329575f80fd5b50610332610b75565b60405161033f919061286f565b60405180910390f35b348015610353575f80fd5b5061036e600480360381019061036991906128f0565b610b7b565b60405161037b91906127ab565b60405180910390f35b34801561038f575f80fd5b50610398610c6d565b6040516103a5919061295b565b60405180910390f35b3480156103b9575f80fd5b506103d460048036038101906103cf9190612753565b610c75565b6040516103e191906127ab565b60405180910390f35b3480156103f5575f80fd5b50610410600480360381019061040b9190612974565b610d1c565b60405161041d91906127ab565b60405180910390f35b348015610431575f80fd5b5061044c600480360381019061044791906128b2565b610d39565b005b348015610459575f80fd5b50610474600480360381019061046f91906128b2565b610eaf565b005b348015610481575f80fd5b5061049c6004803603810190610497919061299f565b610f9b565b005b3480156104a9575f80fd5b506104b2611128565b6040516104bf91906127ab565b60405180910390f35b3480156104d3575f80fd5b506104ee60048036038101906104e99190612974565b61113a565b6040516104fb91906127ab565b60405180910390f35b34801561050f575f80fd5b5061052a600480360381019061052591906129dd565b611157565b005b348015610537575f80fd5b50610552600480360381019061054d9190612974565b61127c565b60405161055f919061286f565b60405180910390f35b348015610573575f80fd5b5061057c6112c2565b005b348015610589575f80fd5b50610592611410565b005b34801561059f575f80fd5b506105a86114bf565b005b3480156105b5575f80fd5b506105be611570565b6040516105cb9190612847565b60405180910390f35b3480156105df575f80fd5b506105e8611597565b6040516105f591906126a2565b60405180910390f35b348015610609575f80fd5b50610624600480360381019061061f9190612753565b611627565b60405161063191906127ab565b60405180910390f35b348015610645575f80fd5b50610660600480360381019061065b9190612753565b61170d565b60405161066d91906127ab565b60405180910390f35b348015610681575f80fd5b5061068a61172a565b6040516106979190612a28565b60405180910390f35b3480156106ab575f80fd5b506106b461174e565b6040516106c191906127ab565b60405180910390f35b3480156106d5575f80fd5b506106f060048036038101906106eb9190612974565b611761565b6040516106fd91906127ab565b60405180910390f35b348015610711575f80fd5b5061072c6004803603810190610727919061299f565b61177e565b604051610739919061286f565b60405180910390f35b34801561074d575f80fd5b50610768600480360381019061076391906129dd565b611800565b005b348015610775575f80fd5b50610790600480360381019061078b9190612974565b611926565b005b34801561079d575f80fd5b506107a6611ae3565b6040516107b3919061286f565b60405180910390f35b6107c4611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084790612a8b565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff164760405161087590612ad6565b5f6040518083038185875af1925050503d805f81146108af576040519150601f19603f3d011682016040523d82523d5f602084013e6108b4565b606091505b505080915050806108fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f190612b34565b60405180910390fd5b50565b60606004805461090c90612b7f565b80601f016020809104026020016040519081016040528092919081815260200182805461093890612b7f565b80156109835780601f1061095a57610100808354040283529160200191610983565b820191905f5260205f20905b81548152906001019060200180831161096657829003601f168201915b5050505050905090565b5f6109a0610999611ae9565b8484611af0565b6001905092915050565b7f000000000000000000000000e592427a0aece92de3edee1f18e0157c0586156481565b7f0000000000000000000000004582f9104267aa4bdae3b5d937c6f17ec3d6cb8481565b5f600354905090565b610a03611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8690612a8b565b60405180910390fd5b7f0000000000000000000000004582f9104267aa4bdae3b5d937c6f17ec3d6cb8473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1490612bf9565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60095481565b5f610b87848484611cb3565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610bce611ae9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4490612c87565b60405180910390fd5b610c6185610c59611ae9565b858403611af0565b60019150509392505050565b5f6012905090565b5f610d12610c81611ae9565b848460025f610c8e611ae9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d0d9190612cd2565b611af0565b6001905092915050565b6007602052805f5260405f205f915054906101000a900460ff1681565b610d41611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc490612a8b565b60405180910390fd5b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4e90612d75565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610eb7611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3a90612a8b565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610fa3611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102690612a8b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361109d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109490612ddd565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110d79190612847565b602060405180830381865afa1580156110f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111169190612e0f565b90506111238383836120a6565b505050565b600b5f9054906101000a900460ff1681565b6006602052805f5260405f205f915054906101000a900460ff1681565b61115f611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e290612a8b565b60405180910390fd5b670de0b6b3a7640000606460016112006109f2565b61120a9190612e3a565b6112149190612ea8565b61121e9190612ea8565b811161125f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125690612f48565b60405180910390fd5b670de0b6b3a7640000816112739190612e3a565b600a8190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6112ca611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134d90612a8b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611418611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149b90612a8b565b60405180910390fd5b5f600b5f6101000a81548160ff021916908315150217905550565b6114c7611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154a90612a8b565b60405180910390fd5b6001600b60016101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546115a690612b7f565b80601f01602080910402602001604051908101604052809291908181526020018280546115d290612b7f565b801561161d5780601f106115f45761010080835404028352916020019161161d565b820191905f5260205f20905b81548152906001019060200180831161160057829003601f168201915b5050505050905090565b5f8060025f611634611ae9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e590612fd6565b60405180910390fd5b6117026116f9611ae9565b85858403611af0565b600191505092915050565b5f611720611719611ae9565b8484611cb3565b6001905092915050565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b600b60019054906101000a900460ff1681565b6008602052805f5260405f205f915054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611808611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188b90612a8b565b60405180910390fd5b670de0b6b3a76400006103e860016118aa6109f2565b6118b49190612e3a565b6118be9190612ea8565b6118c89190612ea8565b8111611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190090613064565b60405180910390fd5b670de0b6b3a76400008161191d9190612e3a565b60098190555050565b61192e611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b190612a8b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1f906130f2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5590613180565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc39061320e565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ca6919061286f565b60405180910390a3505050565b600b5f9054906101000a900460ff168015611d15575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d68575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561209657600b60019054906101000a900460ff16611dbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db390613276565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611e59575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f0057600954811115611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a90613304565b60405180910390fd5b600a54611eaf8361127c565b82611eba9190612cd2565b1115611efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef29061336c565b60405180910390fd5b612095565b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611f9d575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fec57600954811115611fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fde906133fa565b60405180910390fd5b612094565b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661209357600a546120468361127c565b826120519190612cd2565b1115612092576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120899061336c565b60405180910390fd5b5b5b5b5b6120a183838361212c565b505050565b6121278363a9059cbb60e01b84846040516024016120c5929190613418565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061238e565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361219a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612191906134af565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff9061353d565b60405180910390fd5b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561228c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612283906135cb565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461231c9190612cd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612380919061286f565b60405180910390a350505050565b5f6123ef826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166124539092919063ffffffff16565b90505f8151111561244e578080602001905181019061240e91906135fd565b61244d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244490613698565b60405180910390fd5b5b505050565b606061246184845f8561246a565b90509392505050565b6060824710156124af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a690613726565b60405180910390fd5b5f808673ffffffffffffffffffffffffffffffffffffffff1685876040516124d7919061377e565b5f6040518083038185875af1925050503d805f8114612511576040519150601f19603f3d011682016040523d82523d5f602084013e612516565b606091505b509150915061252787838387612533565b92505050949350505050565b60608315612594575f83510361258c5761254c856125a7565b61258b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612582906137de565b60405180910390fd5b5b82905061259f565b61259e83836125c9565b5b949350505050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f825111156125db5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260f91906126a2565b60405180910390fd5b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561264f578082015181840152602081019050612634565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61267482612618565b61267e8185612622565b935061268e818560208601612632565b6126978161265a565b840191505092915050565b5f6020820190508181035f8301526126ba818461266a565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6126ef826126c6565b9050919050565b6126ff816126e5565b8114612709575f80fd5b50565b5f8135905061271a816126f6565b92915050565b5f819050919050565b61273281612720565b811461273c575f80fd5b50565b5f8135905061274d81612729565b92915050565b5f8060408385031215612769576127686126c2565b5b5f6127768582860161270c565b92505060206127878582860161273f565b9150509250929050565b5f8115159050919050565b6127a581612791565b82525050565b5f6020820190506127be5f83018461279c565b92915050565b5f819050919050565b5f6127e76127e26127dd846126c6565b6127c4565b6126c6565b9050919050565b5f6127f8826127cd565b9050919050565b5f612809826127ee565b9050919050565b612819816127ff565b82525050565b5f6020820190506128325f830184612810565b92915050565b612841816126e5565b82525050565b5f60208201905061285a5f830184612838565b92915050565b61286981612720565b82525050565b5f6020820190506128825f830184612860565b92915050565b61289181612791565b811461289b575f80fd5b50565b5f813590506128ac81612888565b92915050565b5f80604083850312156128c8576128c76126c2565b5b5f6128d58582860161270c565b92505060206128e68582860161289e565b9150509250929050565b5f805f60608486031215612907576129066126c2565b5b5f6129148682870161270c565b93505060206129258682870161270c565b92505060406129368682870161273f565b9150509250925092565b5f60ff82169050919050565b61295581612940565b82525050565b5f60208201905061296e5f83018461294c565b92915050565b5f60208284031215612989576129886126c2565b5b5f6129968482850161270c565b91505092915050565b5f80604083850312156129b5576129b46126c2565b5b5f6129c28582860161270c565b92505060206129d38582860161270c565b9150509250929050565b5f602082840312156129f2576129f16126c2565b5b5f6129ff8482850161273f565b91505092915050565b5f612a12826127ee565b9050919050565b612a2281612a08565b82525050565b5f602082019050612a3b5f830184612a19565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612a75602083612622565b9150612a8082612a41565b602082019050919050565b5f6020820190508181035f830152612aa281612a69565b9050919050565b5f81905092915050565b50565b5f612ac15f83612aa9565b9150612acc82612ab3565b5f82019050919050565b5f612ae082612ab6565b9150819050919050565b7f776974686472617720756e7375636365737366756c00000000000000000000005f82015250565b5f612b1e601583612622565b9150612b2982612aea565b602082019050919050565b5f6020820190508181035f830152612b4b81612b12565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612b9657607f821691505b602082108103612ba957612ba8612b52565b5b50919050565b7f43616e6e6f742072656d6f7665206f726967696e616c20706f6f6c00000000005f82015250565b5f612be3601b83612622565b9150612bee82612baf565b602082019050919050565b5f6020820190508181035f830152612c1081612bd7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612c71602883612622565b9150612c7c82612c17565b604082019050919050565b5f6020820190508181035f830152612c9e81612c65565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612cdc82612720565b9150612ce783612720565b9250828201905080821115612cff57612cfe612ca5565b5b92915050565b7f43616e6e6f742072656d6f7665206578656d7074696f6e2066726f6d20706f6f5f8201527f6c00000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d5f602183612622565b9150612d6a82612d05565b604082019050919050565b5f6020820190508181035f830152612d8c81612d53565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000005f82015250565b5f612dc7601a83612622565b9150612dd282612d93565b602082019050919050565b5f6020820190508181035f830152612df481612dbb565b9050919050565b5f81519050612e0981612729565b92915050565b5f60208284031215612e2457612e236126c2565b5b5f612e3184828501612dfb565b91505092915050565b5f612e4482612720565b9150612e4f83612720565b9250828202612e5d81612720565b91508282048414831517612e7457612e73612ca5565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612eb282612720565b9150612ebd83612720565b925082612ecd57612ecc612e7b565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f32602283612622565b9150612f3d82612ed8565b604082019050919050565b5f6020820190508181035f830152612f5f81612f26565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612fc0602583612622565b9150612fcb82612f66565b604082019050919050565b5f6020820190508181035f830152612fed81612fb4565b9050919050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f61304e602f83612622565b915061305982612ff4565b604082019050919050565b5f6020820190508181035f83015261307b81613042565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6130dc602683612622565b91506130e782613082565b604082019050919050565b5f6020820190508181035f830152613109816130d0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61316a602483612622565b915061317582613110565b604082019050919050565b5f6020820190508181035f8301526131978161315e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131f8602283612622565b91506132038261319e565b604082019050919050565b5f6020820190508181035f830152613225816131ec565b9050919050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f613260601283612622565b915061326b8261322c565b602082019050919050565b5f6020820190508181035f83015261328d81613254565b9050919050565b7f427579207472616e7366657220616d74206578636565647320746865206d61785f8201527f206275792e000000000000000000000000000000000000000000000000000000602082015250565b5f6132ee602583612622565b91506132f982613294565b604082019050919050565b5f6020820190508181035f83015261331b816132e2565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c657400000000000000005f82015250565b5f613356601883612622565b915061336182613322565b602082019050919050565b5f6020820190508181035f8301526133838161334a565b9050919050565b7f53656c6c207472616e7366657220616d74206578636565647320746865206d615f8201527f782073656c6c2e00000000000000000000000000000000000000000000000000602082015250565b5f6133e4602783612622565b91506133ef8261338a565b604082019050919050565b5f6020820190508181035f830152613411816133d8565b9050919050565b5f60408201905061342b5f830185612838565b6134386020830184612860565b9392505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613499602583612622565b91506134a48261343f565b604082019050919050565b5f6020820190508181035f8301526134c68161348d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613527602383612622565b9150613532826134cd565b604082019050919050565b5f6020820190508181035f8301526135548161351b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6135b5602683612622565b91506135c08261355b565b604082019050919050565b5f6020820190508181035f8301526135e2816135a9565b9050919050565b5f815190506135f781612888565b92915050565b5f60208284031215613612576136116126c2565b5b5f61361f848285016135e9565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f613682602a83612622565b915061368d82613628565b604082019050919050565b5f6020820190508181035f8301526136af81613676565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b5f613710602683612622565b915061371b826136b6565b604082019050919050565b5f6020820190508181035f83015261373d81613704565b9050919050565b5f81519050919050565b5f61375882613744565b6137628185612aa9565b9350613772818560208601612632565b80840191505092915050565b5f613789828461374e565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f6137c8601d83612622565b91506137d382613794565b602082019050919050565b5f6020820190508181035f8301526137f5816137bc565b905091905056fea26469706673582212206985a37cb6f8f50e3ed2e62e6ba77b4c8cf8298a772c126270905443f75cf99564736f6c63430008140033
Deployed Bytecode Sourcemap
13260:5006:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17763:195;;;;;;;;;;;;;:::i;:::-;;1886:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2800:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13313:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13362:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2207:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17573:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13589:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2977:458;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2106:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3443:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13481:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17371:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17246:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17966:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13661:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13435:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17030:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2323:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5865:150;;;;;;;;;;;;;:::i;:::-;;16702:84;;;;;;;;;;;;;:::i;:::-;;16611:83;;;;;;;;;;;;;:::i;:::-;;5651:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1994:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3666:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2458:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13398:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13701:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13532:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2641:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16794:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6023:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13628:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17763:195;5788:12;:10;:12::i;:::-;5778:22;;:6;;;;;;;;;;:22;;;5770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17812:12:::1;17849:10;:15;;17872:21;17849:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17835:63;;;;;17917:7;17909:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;17801:157;17763:195::o:0;1886:100::-;1940:13;1973:5;1966:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1886:100;:::o;2800:169::-;2883:4;2900:39;2909:12;:10;:12::i;:::-;2923:7;2932:6;2900:8;:39::i;:::-;2957:4;2950:11;;2800:169;;;;:::o;13313:42::-;;;:::o;13362:29::-;;;:::o;2207:108::-;2268:7;2295:12;;2288:19;;2207:108;:::o;17573:182::-;5788:12;:10;:12::i;:::-;5778:22;;:6;;;;;;;;;;:22;;;5770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17676:4:::1;17659:22;;:5;:22;;::::0;17651:62:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17740:7;17724:6;:13;17731:5;17724:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;17573:182:::0;;:::o;13589:32::-;;;;:::o;2977:458::-;3083:4;3100:36;3110:6;3118:9;3129:6;3100:9;:36::i;:::-;3149:24;3176:11;:19;3188:6;3176:19;;;;;;;;;;;;;;;:33;3196:12;:10;:12::i;:::-;3176:33;;;;;;;;;;;;;;;;3149:60;;3248:6;3228:16;:26;;3220:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3335:57;3344:6;3352:12;:10;:12::i;:::-;3385:6;3366:16;:25;3335:8;:57::i;:::-;3423:4;3416:11;;;2977:458;;;;;:::o;2106:93::-;2164:5;2189:2;2182:9;;2106:93;:::o;3443:215::-;3531:4;3548:80;3557:12;:10;:12::i;:::-;3571:7;3617:10;3580:11;:25;3592:12;:10;:12::i;:::-;3580:25;;;;;;;;;;;;;;;:34;3606:7;3580:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3548:8;:80::i;:::-;3646:4;3639:11;;3443:215;;;;:::o;13481:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;17371:194::-;5788:12;:10;:12::i;:::-;5778:22;;:6;;;;;;;;;;:22;;;5770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17462:6:::1;:15;17469:7;17462:15;;;;;;;;;;;;;;;;;;;;;;;;;17461:16;17453:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;17551:6;17526:13;:22;17540:7;17526:22;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;17371:194:::0;;:::o;17246:117::-;5788:12;:10;:12::i;:::-;5778:22;;:6;;;;;;;;;;:22;;;5770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17349:6:::1;17326:11;:20;17338:7;17326:20;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;17246:117:::0;;:::o;17966:297::-;5788:12;:10;:12::i;:::-;5778:22;;:6;;;;;;;;;;:22;;;5770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18074:1:::1;18056:20;;:6;:20;;::::0;18048:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18118:24;18152:6;18145:24;;;18178:4;18145:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18118:66;;18195:60;18225:6;18233:3;18238:16;18195:22;:60::i;:::-;18037:226;17966:297:::0;;:::o;13661:33::-;;;;;;;;;;;;;:::o;13435:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;17030:208::-;5788:12;:10;:12::i;:::-;5778:22;;:6;;;;;;;;;;:22;;;5770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17147:4:::1;17142:3;17138:1;17122:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:23;;;;:::i;:::-;17121:30;;;;:::i;:::-;17112:6;:39;17104:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;17223:6;17213;:17;;;;:::i;:::-;17201:9;:29;;;;17030:208:::0;:::o;2323:127::-;2397:7;2424:9;:18;2434:7;2424:18;;;;;;;;;;;;;;;;2417:25;;2323:127;;;:::o;5865:150::-;5788:12;:10;:12::i;:::-;5778:22;;:6;;;;;;;;;;:22;;;5770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5974:1:::1;5937:40;;5958:6;::::0;::::1;;;;;;;;5937:40;;;;;;;;;;;;6005:1;5988:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5865:150::o:0;16702:84::-;5788:12;:10;:12::i;:::-;5778:22;;:6;;;;;;;;;;:22;;;5770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16773:5:::1;16756:14;;:22;;;;;;;;;;;;;;;;;;16702:84::o:0;16611:83::-;5788:12;:10;:12::i;:::-;5778:22;;:6;;;;;;;;;;:22;;;5770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16682:4:::1;16666:13;;:20;;;;;;;;;;;;;;;;;;16611:83::o:0;5651:79::-;5689:7;5716:6;;;;;;;;;;;5709:13;;5651:79;:::o;1994:104::-;2050:13;2083:7;2076:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1994:104;:::o;3666:413::-;3759:4;3776:24;3803:11;:25;3815:12;:10;:12::i;:::-;3803:25;;;;;;;;;;;;;;;:34;3829:7;3803:34;;;;;;;;;;;;;;;;3776:61;;3876:15;3856:16;:35;;3848:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3969:67;3978:12;:10;:12::i;:::-;3992:7;4020:15;4001:16;:34;3969:8;:67::i;:::-;4067:4;4060:11;;;3666:413;;;;:::o;2458:175::-;2544:4;2561:42;2571:12;:10;:12::i;:::-;2585:9;2596:6;2561:9;:42::i;:::-;2621:4;2614:11;;2458:175;;;;:::o;13398:28::-;;;:::o;13701:33::-;;;;;;;;;;;;;:::o;13532:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;2641:151::-;2730:7;2757:11;:18;2769:5;2757:18;;;;;;;;;;;;;;;:27;2776:7;2757:27;;;;;;;;;;;;;;;;2750:34;;2641:151;;;;:::o;16794:224::-;5788:12;:10;:12::i;:::-;5778:22;;:6;;;;;;;;;;:22;;;5770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16906:4:::1;16900;16896:1;16880:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;16879:31;;;;:::i;:::-;16870:6;:40;16862:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;17003:6;16993;:17;;;;:::i;:::-;16973;:37;;;;16794:224:::0;:::o;6023:244::-;5788:12;:10;:12::i;:::-;5778:22;;:6;;;;;;;;;;:22;;;5770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6132:1:::1;6112:22;;:8;:22;;::::0;6104:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6222:8;6193:38;;6214:6;::::0;::::1;;;;;;;;6193:38;;;;;;;;;;;;6251:8;6242:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6023:244:::0;:::o;13628:24::-;;;;:::o;297:98::-;350:7;377:10;370:17;;297:98;:::o;4974:346::-;5093:1;5076:19;;:5;:19;;;5068:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5174:1;5155:21;;:7;:21;;;5147:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5258:6;5228:11;:18;5240:5;5228:18;;;;;;;;;;;;;;;:27;5247:7;5228:27;;;;;;;;;;;;;;;:36;;;;5296:7;5280:32;;5289:5;5280:32;;;5305:6;5280:32;;;;;;:::i;:::-;;;;;;;;4974:346;;;:::o;15638:965::-;15765:14;;;;;;;;;;;:34;;;;;15784:11;:15;15796:2;15784:15;;;;;;;;;;;;;;;;;;;;;;;;;15783:16;15765:34;:56;;;;;15804:11;:17;15816:4;15804:17;;;;;;;;;;;;;;;;;;;;;;;;;15803:18;15765:56;15762:790;;;15846:13;;;;;;;;;;;15838:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;15925:6;:12;15932:4;15925:12;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;15942:13;:17;15956:2;15942:17;;;;;;;;;;;;;;;;;;;;;;;;;15941:18;15925:34;15921:620;;;15998:17;;15988:6;:27;;15980:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;16110:9;;16093:13;16103:2;16093:9;:13::i;:::-;16084:6;:22;;;;:::i;:::-;:35;;16076:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15921:620;;;16213:6;:10;16220:2;16213:10;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;16228:13;:19;16242:4;16228:19;;;;;;;;;;;;;;;;;;;;;;;;;16227:20;16213:34;16209:332;;;16286:17;;16276:6;:27;;16268:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;16209:332;;;16416:13;:17;16430:2;16416:17;;;;;;;;;;;;;;;;;;;;;;;;;16411:130;;16487:9;;16470:13;16480:2;16470:9;:13::i;:::-;16461:6;:22;;;;:::i;:::-;:35;;16453:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;16411:130;16209:332;15921:620;15762:790;16562:33;16578:4;16584:2;16588:6;16562:15;:33::i;:::-;15638:965;;;:::o;12437:211::-;12554:86;12574:5;12604:23;;;12629:2;12633:5;12581:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12554:19;:86::i;:::-;12437:211;;;:::o;4087:580::-;4211:1;4193:20;;:6;:20;;;4185:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4295:1;4274:23;;:9;:23;;;4266:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4350:21;4374:9;:17;4384:6;4374:17;;;;;;;;;;;;;;;;4350:41;;4427:6;4410:13;:23;;4402:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4548:6;4532:13;:22;4512:9;:17;4522:6;4512:17;;;;;;;;;;;;;;;:42;;;;4600:6;4576:9;:20;4586:9;4576:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4641:9;4624:35;;4633:6;4624:35;;;4652:6;4624:35;;;;;;:::i;:::-;;;;;;;;4174:493;4087:580;;;:::o;12656:333::-;12737:23;12763:69;12791:4;12763:69;;;;;;;;;;;;;;;;;12771:5;12763:27;;;;:69;;;;;:::i;:::-;12737:95;;12867:1;12847:10;:17;:21;12843:139;;;12904:10;12893:30;;;;;;;;;;;;:::i;:::-;12885:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12843:139;12726:263;12656:333;;:::o;6940:229::-;7077:12;7109:52;7131:6;7139:4;7145:1;7148:12;7109:21;:52::i;:::-;7102:59;;6940:229;;;;;:::o;8060:455::-;8230:12;8288:5;8263:21;:30;;8255:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;8348:12;8362:23;8389:6;:11;;8408:5;8415:4;8389:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8347:73;;;;8438:69;8465:6;8473:7;8482:10;8494:12;8438:26;:69::i;:::-;8431:76;;;;8060:455;;;;;;:::o;10633:644::-;10818:12;10847:7;10843:427;;;10896:1;10875:10;:17;:22;10871:290;;11093:18;11104:6;11093:10;:18::i;:::-;11085:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10871:290;11182:10;11175:17;;;;10843:427;11225:33;11233:10;11245:12;11225:7;:33::i;:::-;10633:644;;;;;;;:::o;6297:115::-;6357:4;6403:1;6381:7;:19;;;:23;6374:30;;6297:115;;;:::o;11819:552::-;12000:1;11980:10;:17;:21;11976:388;;;12212:10;12206:17;12269:15;12256:10;12252:2;12248:19;12241:44;11976:388;12339:12;12332:20;;;;;;;;;;;:::i;:::-;;;;;;;;7:99:1;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:150::-;3866:9;3899:37;3930:5;3899:37;:::i;:::-;3886:50;;3792:150;;;:::o;3948:179::-;4059:61;4114:5;4059:61;:::i;:::-;4054:3;4047:74;3948:179;;:::o;4133:270::-;4250:4;4288:2;4277:9;4273:18;4265:26;;4301:95;4393:1;4382:9;4378:17;4369:6;4301:95;:::i;:::-;4133:270;;;;:::o;4409:118::-;4496:24;4514:5;4496:24;:::i;:::-;4491:3;4484:37;4409:118;;:::o;4533:222::-;4626:4;4664:2;4653:9;4649:18;4641:26;;4677:71;4745:1;4734:9;4730:17;4721:6;4677:71;:::i;:::-;4533:222;;;;:::o;4761:118::-;4848:24;4866:5;4848:24;:::i;:::-;4843:3;4836:37;4761:118;;:::o;4885:222::-;4978:4;5016:2;5005:9;5001:18;4993:26;;5029:71;5097:1;5086:9;5082:17;5073:6;5029:71;:::i;:::-;4885:222;;;;:::o;5113:116::-;5183:21;5198:5;5183:21;:::i;:::-;5176:5;5173:32;5163:60;;5219:1;5216;5209:12;5163:60;5113:116;:::o;5235:133::-;5278:5;5316:6;5303:20;5294:29;;5332:30;5356:5;5332:30;:::i;:::-;5235:133;;;;:::o;5374:468::-;5439:6;5447;5496:2;5484:9;5475:7;5471:23;5467:32;5464:119;;;5502:79;;:::i;:::-;5464:119;5622:1;5647:53;5692:7;5683:6;5672:9;5668:22;5647:53;:::i;:::-;5637:63;;5593:117;5749:2;5775:50;5817:7;5808:6;5797:9;5793:22;5775:50;:::i;:::-;5765:60;;5720:115;5374:468;;;;;:::o;5848:619::-;5925:6;5933;5941;5990:2;5978:9;5969:7;5965:23;5961:32;5958:119;;;5996:79;;:::i;:::-;5958:119;6116:1;6141:53;6186:7;6177:6;6166:9;6162:22;6141:53;:::i;:::-;6131:63;;6087:117;6243:2;6269:53;6314:7;6305:6;6294:9;6290:22;6269:53;:::i;:::-;6259:63;;6214:118;6371:2;6397:53;6442:7;6433:6;6422:9;6418:22;6397:53;:::i;:::-;6387:63;;6342:118;5848:619;;;;;:::o;6473:86::-;6508:7;6548:4;6541:5;6537:16;6526:27;;6473:86;;;:::o;6565:112::-;6648:22;6664:5;6648:22;:::i;:::-;6643:3;6636:35;6565:112;;:::o;6683:214::-;6772:4;6810:2;6799:9;6795:18;6787:26;;6823:67;6887:1;6876:9;6872:17;6863:6;6823:67;:::i;:::-;6683:214;;;;:::o;6903:329::-;6962:6;7011:2;6999:9;6990:7;6986:23;6982:32;6979:119;;;7017:79;;:::i;:::-;6979:119;7137:1;7162:53;7207:7;7198:6;7187:9;7183:22;7162:53;:::i;:::-;7152:63;;7108:117;6903:329;;;;:::o;7238:474::-;7306:6;7314;7363:2;7351:9;7342:7;7338:23;7334:32;7331:119;;;7369:79;;:::i;:::-;7331:119;7489:1;7514:53;7559:7;7550:6;7539:9;7535:22;7514:53;:::i;:::-;7504:63;;7460:117;7616:2;7642:53;7687:7;7678:6;7667:9;7663:22;7642:53;:::i;:::-;7632:63;;7587:118;7238:474;;;;;:::o;7718:329::-;7777:6;7826:2;7814:9;7805:7;7801:23;7797:32;7794:119;;;7832:79;;:::i;:::-;7794:119;7952:1;7977:53;8022:7;8013:6;8002:9;7998:22;7977:53;:::i;:::-;7967:63;;7923:117;7718:329;;;;:::o;8053:140::-;8117:9;8150:37;8181:5;8150:37;:::i;:::-;8137:50;;8053:140;;;:::o;8199:159::-;8300:51;8345:5;8300:51;:::i;:::-;8295:3;8288:64;8199:159;;:::o;8364:250::-;8471:4;8509:2;8498:9;8494:18;8486:26;;8522:85;8604:1;8593:9;8589:17;8580:6;8522:85;:::i;:::-;8364:250;;;;:::o;8620:182::-;8760:34;8756:1;8748:6;8744:14;8737:58;8620:182;:::o;8808:366::-;8950:3;8971:67;9035:2;9030:3;8971:67;:::i;:::-;8964:74;;9047:93;9136:3;9047:93;:::i;:::-;9165:2;9160:3;9156:12;9149:19;;8808:366;;;:::o;9180:419::-;9346:4;9384:2;9373:9;9369:18;9361:26;;9433:9;9427:4;9423:20;9419:1;9408:9;9404:17;9397:47;9461:131;9587:4;9461:131;:::i;:::-;9453:139;;9180:419;;;:::o;9605:147::-;9706:11;9743:3;9728:18;;9605:147;;;;:::o;9758:114::-;;:::o;9878:398::-;10037:3;10058:83;10139:1;10134:3;10058:83;:::i;:::-;10051:90;;10150:93;10239:3;10150:93;:::i;:::-;10268:1;10263:3;10259:11;10252:18;;9878:398;;;:::o;10282:379::-;10466:3;10488:147;10631:3;10488:147;:::i;:::-;10481:154;;10652:3;10645:10;;10282:379;;;:::o;10667:171::-;10807:23;10803:1;10795:6;10791:14;10784:47;10667:171;:::o;10844:366::-;10986:3;11007:67;11071:2;11066:3;11007:67;:::i;:::-;11000:74;;11083:93;11172:3;11083:93;:::i;:::-;11201:2;11196:3;11192:12;11185:19;;10844:366;;;:::o;11216:419::-;11382:4;11420:2;11409:9;11405:18;11397:26;;11469:9;11463:4;11459:20;11455:1;11444:9;11440:17;11433:47;11497:131;11623:4;11497:131;:::i;:::-;11489:139;;11216:419;;;:::o;11641:180::-;11689:77;11686:1;11679:88;11786:4;11783:1;11776:15;11810:4;11807:1;11800:15;11827:320;11871:6;11908:1;11902:4;11898:12;11888:22;;11955:1;11949:4;11945:12;11976:18;11966:81;;12032:4;12024:6;12020:17;12010:27;;11966:81;12094:2;12086:6;12083:14;12063:18;12060:38;12057:84;;12113:18;;:::i;:::-;12057:84;11878:269;11827:320;;;:::o;12153:177::-;12293:29;12289:1;12281:6;12277:14;12270:53;12153:177;:::o;12336:366::-;12478:3;12499:67;12563:2;12558:3;12499:67;:::i;:::-;12492:74;;12575:93;12664:3;12575:93;:::i;:::-;12693:2;12688:3;12684:12;12677:19;;12336:366;;;:::o;12708:419::-;12874:4;12912:2;12901:9;12897:18;12889:26;;12961:9;12955:4;12951:20;12947:1;12936:9;12932:17;12925:47;12989:131;13115:4;12989:131;:::i;:::-;12981:139;;12708:419;;;:::o;13133:227::-;13273:34;13269:1;13261:6;13257:14;13250:58;13342:10;13337:2;13329:6;13325:15;13318:35;13133:227;:::o;13366:366::-;13508:3;13529:67;13593:2;13588:3;13529:67;:::i;:::-;13522:74;;13605:93;13694:3;13605:93;:::i;:::-;13723:2;13718:3;13714:12;13707:19;;13366:366;;;:::o;13738:419::-;13904:4;13942:2;13931:9;13927:18;13919:26;;13991:9;13985:4;13981:20;13977:1;13966:9;13962:17;13955:47;14019:131;14145:4;14019:131;:::i;:::-;14011:139;;13738:419;;;:::o;14163:180::-;14211:77;14208:1;14201:88;14308:4;14305:1;14298:15;14332:4;14329:1;14322:15;14349:191;14389:3;14408:20;14426:1;14408:20;:::i;:::-;14403:25;;14442:20;14460:1;14442:20;:::i;:::-;14437:25;;14485:1;14482;14478:9;14471:16;;14506:3;14503:1;14500:10;14497:36;;;14513:18;;:::i;:::-;14497:36;14349:191;;;;:::o;14546:220::-;14686:34;14682:1;14674:6;14670:14;14663:58;14755:3;14750:2;14742:6;14738:15;14731:28;14546:220;:::o;14772:366::-;14914:3;14935:67;14999:2;14994:3;14935:67;:::i;:::-;14928:74;;15011:93;15100:3;15011:93;:::i;:::-;15129:2;15124:3;15120:12;15113:19;;14772:366;;;:::o;15144:419::-;15310:4;15348:2;15337:9;15333:18;15325:26;;15397:9;15391:4;15387:20;15383:1;15372:9;15368:17;15361:47;15425:131;15551:4;15425:131;:::i;:::-;15417:139;;15144:419;;;:::o;15569:176::-;15709:28;15705:1;15697:6;15693:14;15686:52;15569:176;:::o;15751:366::-;15893:3;15914:67;15978:2;15973:3;15914:67;:::i;:::-;15907:74;;15990:93;16079:3;15990:93;:::i;:::-;16108:2;16103:3;16099:12;16092:19;;15751:366;;;:::o;16123:419::-;16289:4;16327:2;16316:9;16312:18;16304:26;;16376:9;16370:4;16366:20;16362:1;16351:9;16347:17;16340:47;16404:131;16530:4;16404:131;:::i;:::-;16396:139;;16123:419;;;:::o;16548:143::-;16605:5;16636:6;16630:13;16621:22;;16652:33;16679:5;16652:33;:::i;:::-;16548:143;;;;:::o;16697:351::-;16767:6;16816:2;16804:9;16795:7;16791:23;16787:32;16784:119;;;16822:79;;:::i;:::-;16784:119;16942:1;16967:64;17023:7;17014:6;17003:9;16999:22;16967:64;:::i;:::-;16957:74;;16913:128;16697:351;;;;:::o;17054:410::-;17094:7;17117:20;17135:1;17117:20;:::i;:::-;17112:25;;17151:20;17169:1;17151:20;:::i;:::-;17146:25;;17206:1;17203;17199:9;17228:30;17246:11;17228:30;:::i;:::-;17217:41;;17407:1;17398:7;17394:15;17391:1;17388:22;17368:1;17361:9;17341:83;17318:139;;17437:18;;:::i;:::-;17318:139;17102:362;17054:410;;;;:::o;17470:180::-;17518:77;17515:1;17508:88;17615:4;17612:1;17605:15;17639:4;17636:1;17629:15;17656:185;17696:1;17713:20;17731:1;17713:20;:::i;:::-;17708:25;;17747:20;17765:1;17747:20;:::i;:::-;17742:25;;17786:1;17776:35;;17791:18;;:::i;:::-;17776:35;17833:1;17830;17826:9;17821:14;;17656:185;;;;:::o;17847:221::-;17987:34;17983:1;17975:6;17971:14;17964:58;18056:4;18051:2;18043:6;18039:15;18032:29;17847:221;:::o;18074:366::-;18216:3;18237:67;18301:2;18296:3;18237:67;:::i;:::-;18230:74;;18313:93;18402:3;18313:93;:::i;:::-;18431:2;18426:3;18422:12;18415:19;;18074:366;;;:::o;18446:419::-;18612:4;18650:2;18639:9;18635:18;18627:26;;18699:9;18693:4;18689:20;18685:1;18674:9;18670:17;18663:47;18727:131;18853:4;18727:131;:::i;:::-;18719:139;;18446:419;;;:::o;18871:224::-;19011:34;19007:1;18999:6;18995:14;18988:58;19080:7;19075:2;19067:6;19063:15;19056:32;18871:224;:::o;19101:366::-;19243:3;19264:67;19328:2;19323:3;19264:67;:::i;:::-;19257:74;;19340:93;19429:3;19340:93;:::i;:::-;19458:2;19453:3;19449:12;19442:19;;19101:366;;;:::o;19473:419::-;19639:4;19677:2;19666:9;19662:18;19654:26;;19726:9;19720:4;19716:20;19712:1;19701:9;19697:17;19690:47;19754:131;19880:4;19754:131;:::i;:::-;19746:139;;19473:419;;;:::o;19898:234::-;20038:34;20034:1;20026:6;20022:14;20015:58;20107:17;20102:2;20094:6;20090:15;20083:42;19898:234;:::o;20138:366::-;20280:3;20301:67;20365:2;20360:3;20301:67;:::i;:::-;20294:74;;20377:93;20466:3;20377:93;:::i;:::-;20495:2;20490:3;20486:12;20479:19;;20138:366;;;:::o;20510:419::-;20676:4;20714:2;20703:9;20699:18;20691:26;;20763:9;20757:4;20753:20;20749:1;20738:9;20734:17;20727:47;20791:131;20917:4;20791:131;:::i;:::-;20783:139;;20510:419;;;:::o;20935:225::-;21075:34;21071:1;21063:6;21059:14;21052:58;21144:8;21139:2;21131:6;21127:15;21120:33;20935:225;:::o;21166:366::-;21308:3;21329:67;21393:2;21388:3;21329:67;:::i;:::-;21322:74;;21405:93;21494:3;21405:93;:::i;:::-;21523:2;21518:3;21514:12;21507:19;;21166:366;;;:::o;21538:419::-;21704:4;21742:2;21731:9;21727:18;21719:26;;21791:9;21785:4;21781:20;21777:1;21766:9;21762:17;21755:47;21819:131;21945:4;21819:131;:::i;:::-;21811:139;;21538:419;;;:::o;21963:223::-;22103:34;22099:1;22091:6;22087:14;22080:58;22172:6;22167:2;22159:6;22155:15;22148:31;21963:223;:::o;22192:366::-;22334:3;22355:67;22419:2;22414:3;22355:67;:::i;:::-;22348:74;;22431:93;22520:3;22431:93;:::i;:::-;22549:2;22544:3;22540:12;22533:19;;22192:366;;;:::o;22564:419::-;22730:4;22768:2;22757:9;22753:18;22745:26;;22817:9;22811:4;22807:20;22803:1;22792:9;22788:17;22781:47;22845:131;22971:4;22845:131;:::i;:::-;22837:139;;22564:419;;;:::o;22989:221::-;23129:34;23125:1;23117:6;23113:14;23106:58;23198:4;23193:2;23185:6;23181:15;23174:29;22989:221;:::o;23216:366::-;23358:3;23379:67;23443:2;23438:3;23379:67;:::i;:::-;23372:74;;23455:93;23544:3;23455:93;:::i;:::-;23573:2;23568:3;23564:12;23557:19;;23216:366;;;:::o;23588:419::-;23754:4;23792:2;23781:9;23777:18;23769:26;;23841:9;23835:4;23831:20;23827:1;23816:9;23812:17;23805:47;23869:131;23995:4;23869:131;:::i;:::-;23861:139;;23588:419;;;:::o;24013:168::-;24153:20;24149:1;24141:6;24137:14;24130:44;24013:168;:::o;24187:366::-;24329:3;24350:67;24414:2;24409:3;24350:67;:::i;:::-;24343:74;;24426:93;24515:3;24426:93;:::i;:::-;24544:2;24539:3;24535:12;24528:19;;24187:366;;;:::o;24559:419::-;24725:4;24763:2;24752:9;24748:18;24740:26;;24812:9;24806:4;24802:20;24798:1;24787:9;24783:17;24776:47;24840:131;24966:4;24840:131;:::i;:::-;24832:139;;24559:419;;;:::o;24984:224::-;25124:34;25120:1;25112:6;25108:14;25101:58;25193:7;25188:2;25180:6;25176:15;25169:32;24984:224;:::o;25214:366::-;25356:3;25377:67;25441:2;25436:3;25377:67;:::i;:::-;25370:74;;25453:93;25542:3;25453:93;:::i;:::-;25571:2;25566:3;25562:12;25555:19;;25214:366;;;:::o;25586:419::-;25752:4;25790:2;25779:9;25775:18;25767:26;;25839:9;25833:4;25829:20;25825:1;25814:9;25810:17;25803:47;25867:131;25993:4;25867:131;:::i;:::-;25859:139;;25586:419;;;:::o;26011:174::-;26151:26;26147:1;26139:6;26135:14;26128:50;26011:174;:::o;26191:366::-;26333:3;26354:67;26418:2;26413:3;26354:67;:::i;:::-;26347:74;;26430:93;26519:3;26430:93;:::i;:::-;26548:2;26543:3;26539:12;26532:19;;26191:366;;;:::o;26563:419::-;26729:4;26767:2;26756:9;26752:18;26744:26;;26816:9;26810:4;26806:20;26802:1;26791:9;26787:17;26780:47;26844:131;26970:4;26844:131;:::i;:::-;26836:139;;26563:419;;;:::o;26988:226::-;27128:34;27124:1;27116:6;27112:14;27105:58;27197:9;27192:2;27184:6;27180:15;27173:34;26988:226;:::o;27220:366::-;27362:3;27383:67;27447:2;27442:3;27383:67;:::i;:::-;27376:74;;27459:93;27548:3;27459:93;:::i;:::-;27577:2;27572:3;27568:12;27561:19;;27220:366;;;:::o;27592:419::-;27758:4;27796:2;27785:9;27781:18;27773:26;;27845:9;27839:4;27835:20;27831:1;27820:9;27816:17;27809:47;27873:131;27999:4;27873:131;:::i;:::-;27865:139;;27592:419;;;:::o;28017:332::-;28138:4;28176:2;28165:9;28161:18;28153:26;;28189:71;28257:1;28246:9;28242:17;28233:6;28189:71;:::i;:::-;28270:72;28338:2;28327:9;28323:18;28314:6;28270:72;:::i;:::-;28017:332;;;;;:::o;28355:224::-;28495:34;28491:1;28483:6;28479:14;28472:58;28564:7;28559:2;28551:6;28547:15;28540:32;28355:224;:::o;28585:366::-;28727:3;28748:67;28812:2;28807:3;28748:67;:::i;:::-;28741:74;;28824:93;28913:3;28824:93;:::i;:::-;28942:2;28937:3;28933:12;28926:19;;28585:366;;;:::o;28957:419::-;29123:4;29161:2;29150:9;29146:18;29138:26;;29210:9;29204:4;29200:20;29196:1;29185:9;29181:17;29174:47;29238:131;29364:4;29238:131;:::i;:::-;29230:139;;28957:419;;;:::o;29382:222::-;29522:34;29518:1;29510:6;29506:14;29499:58;29591:5;29586:2;29578:6;29574:15;29567:30;29382:222;:::o;29610:366::-;29752:3;29773:67;29837:2;29832:3;29773:67;:::i;:::-;29766:74;;29849:93;29938:3;29849:93;:::i;:::-;29967:2;29962:3;29958:12;29951:19;;29610:366;;;:::o;29982:419::-;30148:4;30186:2;30175:9;30171:18;30163:26;;30235:9;30229:4;30225:20;30221:1;30210:9;30206:17;30199:47;30263:131;30389:4;30263:131;:::i;:::-;30255:139;;29982:419;;;:::o;30407:225::-;30547:34;30543:1;30535:6;30531:14;30524:58;30616:8;30611:2;30603:6;30599:15;30592:33;30407:225;:::o;30638:366::-;30780:3;30801:67;30865:2;30860:3;30801:67;:::i;:::-;30794:74;;30877:93;30966:3;30877:93;:::i;:::-;30995:2;30990:3;30986:12;30979:19;;30638:366;;;:::o;31010:419::-;31176:4;31214:2;31203:9;31199:18;31191:26;;31263:9;31257:4;31253:20;31249:1;31238:9;31234:17;31227:47;31291:131;31417:4;31291:131;:::i;:::-;31283:139;;31010:419;;;:::o;31435:137::-;31489:5;31520:6;31514:13;31505:22;;31536:30;31560:5;31536:30;:::i;:::-;31435:137;;;;:::o;31578:345::-;31645:6;31694:2;31682:9;31673:7;31669:23;31665:32;31662:119;;;31700:79;;:::i;:::-;31662:119;31820:1;31845:61;31898:7;31889:6;31878:9;31874:22;31845:61;:::i;:::-;31835:71;;31791:125;31578:345;;;;:::o;31929:229::-;32069:34;32065:1;32057:6;32053:14;32046:58;32138:12;32133:2;32125:6;32121:15;32114:37;31929:229;:::o;32164:366::-;32306:3;32327:67;32391:2;32386:3;32327:67;:::i;:::-;32320:74;;32403:93;32492:3;32403:93;:::i;:::-;32521:2;32516:3;32512:12;32505:19;;32164:366;;;:::o;32536:419::-;32702:4;32740:2;32729:9;32725:18;32717:26;;32789:9;32783:4;32779:20;32775:1;32764:9;32760:17;32753:47;32817:131;32943:4;32817:131;:::i;:::-;32809:139;;32536:419;;;:::o;32961:225::-;33101:34;33097:1;33089:6;33085:14;33078:58;33170:8;33165:2;33157:6;33153:15;33146:33;32961:225;:::o;33192:366::-;33334:3;33355:67;33419:2;33414:3;33355:67;:::i;:::-;33348:74;;33431:93;33520:3;33431:93;:::i;:::-;33549:2;33544:3;33540:12;33533:19;;33192:366;;;:::o;33564:419::-;33730:4;33768:2;33757:9;33753:18;33745:26;;33817:9;33811:4;33807:20;33803:1;33792:9;33788:17;33781:47;33845:131;33971:4;33845:131;:::i;:::-;33837:139;;33564:419;;;:::o;33989:98::-;34040:6;34074:5;34068:12;34058:22;;33989:98;;;:::o;34093:386::-;34197:3;34225:38;34257:5;34225:38;:::i;:::-;34279:88;34360:6;34355:3;34279:88;:::i;:::-;34272:95;;34376:65;34434:6;34429:3;34422:4;34415:5;34411:16;34376:65;:::i;:::-;34466:6;34461:3;34457:16;34450:23;;34201:278;34093:386;;;;:::o;34485:271::-;34615:3;34637:93;34726:3;34717:6;34637:93;:::i;:::-;34630:100;;34747:3;34740:10;;34485:271;;;;:::o;34762:179::-;34902:31;34898:1;34890:6;34886:14;34879:55;34762:179;:::o;34947:366::-;35089:3;35110:67;35174:2;35169:3;35110:67;:::i;:::-;35103:74;;35186:93;35275:3;35186:93;:::i;:::-;35304:2;35299:3;35295:12;35288:19;;34947:366;;;:::o;35319:419::-;35485:4;35523:2;35512:9;35508:18;35500:26;;35572:9;35566:4;35562:20;35558:1;35547:9;35543:17;35536:47;35600:131;35726:4;35600:131;:::i;:::-;35592:139;;35319:419;;;:::o
Swarm Source
ipfs://6985a37cb6f8f50e3ed2e62e6ba77b4c8cf8298a772c126270905443f75cf995
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.