More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 195 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x474d2e0a | 19604356 | 322 days ago | IN | 0.00001 ETH | 0.00104012 | ||||
0x474d2e0a | 19604340 | 322 days ago | IN | 0.00001 ETH | 0.00104012 | ||||
Withdraw | 10910880 | 1615 days ago | IN | 0 ETH | 0.00321726 | ||||
Harvest | 10829494 | 1628 days ago | IN | 0 ETH | 0.03917949 | ||||
Harvest | 10829347 | 1628 days ago | IN | 0 ETH | 0.03294719 | ||||
Withdraw | 10827772 | 1628 days ago | IN | 0 ETH | 0.04615842 | ||||
Harvest | 10827707 | 1628 days ago | IN | 0 ETH | 0.05271401 | ||||
Withdraw | 10827283 | 1628 days ago | IN | 0 ETH | 0.03059169 | ||||
Withdraw | 10816620 | 1630 days ago | IN | 0 ETH | 0.02165784 | ||||
Harvest | 10816613 | 1630 days ago | IN | 0 ETH | 0.02769975 | ||||
Withdraw | 10815867 | 1630 days ago | IN | 0 ETH | 0.042172 | ||||
Deposit | 10814542 | 1630 days ago | IN | 0 ETH | 0.0314013 | ||||
Harvest | 10810325 | 1631 days ago | IN | 0 ETH | 0.03567114 | ||||
Deposit | 10809387 | 1631 days ago | IN | 0 ETH | 0.0376872 | ||||
Withdraw | 10808060 | 1631 days ago | IN | 0 ETH | 0.03484488 | ||||
Withdraw | 10806641 | 1631 days ago | IN | 0 ETH | 0.04032743 | ||||
Harvest | 10806639 | 1631 days ago | IN | 0 ETH | 0.04287948 | ||||
Withdraw | 10803468 | 1632 days ago | IN | 0 ETH | 0.11400826 | ||||
Withdraw | 10802482 | 1632 days ago | IN | 0 ETH | 0.09629827 | ||||
Withdraw | 10799718 | 1632 days ago | IN | 0 ETH | 0.07913036 | ||||
Deposit | 10799257 | 1632 days ago | IN | 0 ETH | 0.061941 | ||||
Withdraw | 10798667 | 1632 days ago | IN | 0 ETH | 0.03248676 | ||||
Harvest | 10798661 | 1632 days ago | IN | 0 ETH | 0.04537898 | ||||
Withdraw | 10798123 | 1632 days ago | IN | 0 ETH | 0.03520517 | ||||
Harvest | 10798114 | 1632 days ago | IN | 0 ETH | 0.03685066 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
10758633 | 1639 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
SushiFarm
Compiler Version
v0.6.7+commit.b8d736ae
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-08-29 */ // hevm: flattened sources of src/sushi-farm.sol pragma solidity >0.4.13 >=0.4.23 >=0.5.0 >=0.6.2 <0.7.0 >=0.6.7 <0.7.0; ////// lib/ds-auth/src/auth.sol // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. /* pragma solidity >=0.4.23; */ interface DSAuthority { function canCall( address src, address dst, bytes4 sig ) external view returns (bool); } contract DSAuthEvents { event LogSetAuthority (address indexed authority); event LogSetOwner (address indexed owner); } contract DSAuth is DSAuthEvents { DSAuthority public authority; address public owner; constructor() public { owner = msg.sender; emit LogSetOwner(msg.sender); } function setOwner(address owner_) public auth { owner = owner_; emit LogSetOwner(owner); } function setAuthority(DSAuthority authority_) public auth { authority = authority_; emit LogSetAuthority(address(authority)); } modifier auth { require(isAuthorized(msg.sender, msg.sig), "ds-auth-unauthorized"); _; } function isAuthorized(address src, bytes4 sig) internal view returns (bool) { if (src == address(this)) { return true; } else if (src == owner) { return true; } else if (authority == DSAuthority(0)) { return false; } else { return authority.canCall(src, address(this), sig); } } } ////// lib/ds-math/src/math.sol /// math.sol -- mixin for inline numerical wizardry // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. /* pragma solidity >0.4.13; */ contract DSMath { function add(uint x, uint y) internal pure returns (uint z) { require((z = x + y) >= x, "ds-math-add-overflow"); } function sub(uint x, uint y) internal pure returns (uint z) { require((z = x - y) <= x, "ds-math-sub-underflow"); } function mul(uint x, uint y) internal pure returns (uint z) { require(y == 0 || (z = x * y) / y == x, "ds-math-mul-overflow"); } function min(uint x, uint y) internal pure returns (uint z) { return x <= y ? x : y; } function max(uint x, uint y) internal pure returns (uint z) { return x >= y ? x : y; } function imin(int x, int y) internal pure returns (int z) { return x <= y ? x : y; } function imax(int x, int y) internal pure returns (int z) { return x >= y ? x : y; } uint constant WAD = 10 ** 18; uint constant RAY = 10 ** 27; //rounds to zero if x*y < WAD / 2 function wmul(uint x, uint y) internal pure returns (uint z) { z = add(mul(x, y), WAD / 2) / WAD; } //rounds to zero if x*y < WAD / 2 function rmul(uint x, uint y) internal pure returns (uint z) { z = add(mul(x, y), RAY / 2) / RAY; } //rounds to zero if x*y < WAD / 2 function wdiv(uint x, uint y) internal pure returns (uint z) { z = add(mul(x, WAD), y / 2) / y; } //rounds to zero if x*y < RAY / 2 function rdiv(uint x, uint y) internal pure returns (uint z) { z = add(mul(x, RAY), y / 2) / y; } // This famous algorithm is called "exponentiation by squaring" // and calculates x^n with x as fixed-point and n as regular unsigned. // // It's O(log n), instead of O(n) for naive repeated multiplication. // // These facts are why it works: // // If n is even, then x^n = (x^2)^(n/2). // If n is odd, then x^n = x * x^(n-1), // and applying the equation for even x gives // x^n = x * (x^2)^((n-1) / 2). // // Also, EVM division is flooring and // floor[(n-1) / 2] = floor[n / 2]. // function rpow(uint x, uint n) internal pure returns (uint z) { z = n % 2 != 0 ? x : RAY; for (n /= 2; n != 0; n /= 2) { x = rmul(x, x); if (n % 2 != 0) { z = rmul(z, x); } } } } ////// lib/ds-token/src/token.sol /// token.sol -- ERC20 implementation with minting and burning // Copyright (C) 2015, 2016, 2017 DappHub, LLC // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. /* pragma solidity >=0.4.23; */ /* import "ds-math/math.sol"; */ /* import "ds-auth/auth.sol"; */ contract DSToken is DSMath, DSAuth { bool public stopped; uint256 public totalSupply; mapping (address => uint256) public balanceOf; mapping (address => mapping (address => uint256)) public allowance; bytes32 public symbol; uint256 public decimals = 18; // standard token precision. override to customize bytes32 public name = ""; // Optional token name constructor(bytes32 symbol_) public { symbol = symbol_; } event Approval(address indexed src, address indexed guy, uint wad); event Transfer(address indexed src, address indexed dst, uint wad); event Mint(address indexed guy, uint wad); event Burn(address indexed guy, uint wad); event Stop(); event Start(); modifier stoppable { require(!stopped, "ds-stop-is-stopped"); _; } function approve(address guy) external returns (bool) { return approve(guy, uint(-1)); } function approve(address guy, uint wad) public stoppable returns (bool) { allowance[msg.sender][guy] = wad; emit Approval(msg.sender, guy, wad); return true; } function transfer(address dst, uint wad) external returns (bool) { return transferFrom(msg.sender, dst, wad); } function transferFrom(address src, address dst, uint wad) public stoppable returns (bool) { if (src != msg.sender && allowance[src][msg.sender] != uint(-1)) { require(allowance[src][msg.sender] >= wad, "ds-token-insufficient-approval"); allowance[src][msg.sender] = sub(allowance[src][msg.sender], wad); } require(balanceOf[src] >= wad, "ds-token-insufficient-balance"); balanceOf[src] = sub(balanceOf[src], wad); balanceOf[dst] = add(balanceOf[dst], wad); emit Transfer(src, dst, wad); return true; } function push(address dst, uint wad) external { transferFrom(msg.sender, dst, wad); } function pull(address src, uint wad) external { transferFrom(src, msg.sender, wad); } function move(address src, address dst, uint wad) external { transferFrom(src, dst, wad); } function mint(uint wad) external { mint(msg.sender, wad); } function burn(uint wad) external { burn(msg.sender, wad); } function mint(address guy, uint wad) public auth stoppable { balanceOf[guy] = add(balanceOf[guy], wad); totalSupply = add(totalSupply, wad); emit Mint(guy, wad); } function burn(address guy, uint wad) public auth stoppable { if (guy != msg.sender && allowance[guy][msg.sender] != uint(-1)) { require(allowance[guy][msg.sender] >= wad, "ds-token-insufficient-approval"); allowance[guy][msg.sender] = sub(allowance[guy][msg.sender], wad); } require(balanceOf[guy] >= wad, "ds-token-insufficient-balance"); balanceOf[guy] = sub(balanceOf[guy], wad); totalSupply = sub(totalSupply, wad); emit Burn(guy, wad); } function stop() public auth { stopped = true; emit Stop(); } function start() public auth { stopped = false; emit Start(); } function setName(bytes32 name_) external auth { name = name_; } } ////// src/constants.sol /* pragma solidity ^0.6.7; */ library Constants { // Tokens address constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; address constant SUSHI = 0x6B3595068778DD592e39A122f4f5a5cF09C90fE2; address constant UNIV2_SUSHI_ETH = 0xCE84867c3c02B05dc570d0135103d3fB9CC19433; // Uniswap address constant UNIV2_ROUTER2 = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // Sushiswap address constant MASTERCHEF = 0xc2EdaD668740f1aA35E4D8f227fB8E17dcA888Cd; } ////// src/interfaces/masterchef.sol // SPDX-License-Identifier: MIT /* pragma solidity ^0.6.2; */ interface Masterchef { function deposit(uint256 _pid, uint256 _amount) external; function withdraw(uint256 _pid, uint256 _amount) external; function userInfo(uint256, address) external view returns (uint256 amount, uint256 rewardDebt); } ////// src/interfaces/uniswap.sol // SPDX-License-Identifier: MIT /* pragma solidity ^0.6.2; */ interface UniswapRouterV2 { function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); } interface UniswapPair { function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestamp ); } ////// src/sushi-farm.sol /* pragma solidity ^0.6.7; */ /* import "ds-math/math.sol"; */ /* import "ds-token/token.sol"; */ /* import "./interfaces/masterchef.sol"; */ /* import "./interfaces/uniswap.sol"; */ /* import "./constants.sol"; */ // Sushi Farm in SushiSwap // Used to farm sushi. i.e. Deposit into this pool if you want to LONG sushi. // Based off https://github.com/iearn-finance/vaults/blob/master/contracts/yVault.sol contract SushiFarm is DSMath { // Tokens DSToken public sushi = DSToken(Constants.SUSHI); DSToken public univ2SushiEth = DSToken(Constants.UNIV2_SUSHI_ETH); DSToken public weth = DSToken(Constants.WETH); DSToken public gSushi; // Uniswap Router and Pair UniswapRouterV2 public univ2 = UniswapRouterV2(Constants.UNIV2_ROUTER2); UniswapPair public univ2Pair = UniswapPair(address(univ2SushiEth)); // Masterchef Contract Masterchef public masterchef = Masterchef(Constants.MASTERCHEF); uint256 public univ2SushiEthPoolId = 12; // 5% reward for anyone who calls HARVEST uint256 public callerRewards = 5 ether / 100; // Last harvest uint256 public lastHarvest = 0; constructor() public { gSushi = new DSToken("gSushi"); gSushi.setName("Grazing Sushi"); } // **** Harvest profits **** function harvest() public { // Only callable every hour or so if (lastHarvest > 0) { require(lastHarvest + 1 hours <= block.timestamp, "!harvest-time"); } lastHarvest = block.timestamp; // Withdraw sushi masterchef.withdraw(univ2SushiEthPoolId, 0); uint256 amount = sushi.balanceOf(address(this)); uint256 reward = div(mul(amount, callerRewards), 100 ether); // Sends 5% fee to caller sushi.transfer(msg.sender, reward); // Remove amount from rewards amount = sub(amount, reward); // Add to UniV2 pool _sushiToUniV2SushiEth(amount); // Deposit into masterchef contract uint256 balance = univ2SushiEth.balanceOf(address(this)); univ2SushiEth.approve(address(masterchef), balance); masterchef.deposit(univ2SushiEthPoolId, balance); } // **** Withdraw / Deposit functions **** function withdrawAll() external { withdraw(gSushi.balanceOf(msg.sender)); } function withdraw(uint256 _shares) public { uint256 univ2Balance = univ2SushiEthBalance(); uint256 amount = div(mul(_shares, univ2Balance), gSushi.totalSupply()); gSushi.burn(msg.sender, _shares); // Withdraw from Masterchef contract masterchef.withdraw(univ2SushiEthPoolId, amount); // Retrive shares from Uniswap pool and converts to SUSHI uint256 _before = sushi.balanceOf(address(this)); _uniV2SushiEthToSushi(amount); uint256 _after = sushi.balanceOf(address(this)); // Transfer back SUSHI difference sushi.transfer(msg.sender, sub(_after, _before)); } function depositAll() external { deposit(sushi.balanceOf(msg.sender)); } function deposit(uint256 _amount) public { sushi.transferFrom(msg.sender, address(this), _amount); uint256 _pool = univ2SushiEthBalance(); uint256 _before = univ2SushiEth.balanceOf(address(this)); _sushiToUniV2SushiEth(_amount); uint256 _after = univ2SushiEth.balanceOf(address(this)); _amount = sub(_after, _before); // Additional check for deflationary tokens uint256 shares = 0; if (gSushi.totalSupply() == 0) { shares = _amount; } else { shares = div(mul(_amount, gSushi.totalSupply()), _pool); } // Deposit into Masterchef contract to get rewards univ2SushiEth.approve(address(masterchef), _amount); masterchef.deposit(univ2SushiEthPoolId, _amount); gSushi.mint(msg.sender, shares); } // Takes <x> amount of SUSHI // Converts half of it into ETH, // Supplies them into SUSHI/ETH pool function _sushiToUniV2SushiEth(uint256 _amount) internal { uint256 half = div(_amount, 2); // Convert half of the sushi to ETH address[] memory path = new address[](2); path[0] = address(sushi); path[1] = address(weth); sushi.approve(address(univ2), half); univ2.swapExactTokensForTokens(half, 0, path, address(this), now + 60); // Supply liquidity uint256 wethBal = weth.balanceOf(address(this)); uint256 sushiBal = sushi.balanceOf(address(this)); sushi.approve(address(univ2), sushiBal); weth.approve(address(univ2), wethBal); univ2.addLiquidity( address(sushi), address(weth), sushiBal, wethBal, 0, 0, address(this), now + 60 ); } // Takes <x> amount of gSushi // And removes liquidity from SUSHI/ETH pool // Converts the ETH into Sushi function _uniV2SushiEthToSushi(uint256 _amount) internal { // Remove liquidity require( univ2SushiEth.balanceOf(address(this)) >= _amount, "not-enough-liquidity" ); univ2SushiEth.approve(address(univ2), _amount); univ2.removeLiquidity( address(sushi), address(weth), _amount, 0, 0, address(this), now + 60 ); // Convert ETH to SUSHI address[] memory path = new address[](2); path[0] = address(weth); path[1] = address(sushi); uint256 wethBal = weth.balanceOf(address(this)); weth.approve(address(univ2), wethBal); univ2.swapExactTokensForTokens( wethBal, 0, path, address(this), now + 60 ); } // 1 gSUSHI = <x> SUSHI function getGSushiOverSushiRatio() public view returns (uint256) { // How much UniV2 do we have uint256 uniV2Balance = univ2SushiEthBalance(); if (uniV2Balance == 0) { return 0; } // How many SUSHI and ETH can we get for this? (uint112 _poolSushiReserve, uint112 _poolWETHReserve, ) = univ2Pair .getReserves(); // SUSHI and WETH in pool uint256 uniV2liquidity = univ2SushiEth.totalSupply(); // Univ2 total supply uint256 uniV2percentage = div(mul(uniV2Balance, 1e18), uniV2liquidity); // How much we own %-wise uint256 removableSushi = uint256( div(mul(_poolSushiReserve, uniV2percentage), 1e18) ); uint256 removableWeth = uint256( div(mul(_poolWETHReserve, uniV2percentage), 1e18) ); // How many SUSHI can we get for the ETH? address[] memory path = new address[](2); path[0] = address(weth); path[1] = address(sushi); uint256[] memory outs = univ2.getAmountsOut(removableWeth, path); // Get RATIO return div(mul(add(outs[1], removableSushi), 1e18), gSushi.totalSupply()); } function univ2SushiEthBalance() public view returns (uint256) { (uint256 univ2Balance, ) = masterchef.userInfo( univ2SushiEthPoolId, address(this) ); return univ2Balance; } // **** Internal functions **** function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "division by zero"); uint256 c = a / b; return c; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"callerRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gSushi","outputs":[{"internalType":"contract DSToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGSushiOverSushiRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastHarvest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"masterchef","outputs":[{"internalType":"contract Masterchef","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sushi","outputs":[{"internalType":"contract DSToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"univ2","outputs":[{"internalType":"contract UniswapRouterV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"univ2Pair","outputs":[{"internalType":"contract UniswapPair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"univ2SushiEth","outputs":[{"internalType":"contract DSToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"univ2SushiEthBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"univ2SushiEthPoolId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"contract DSToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600080546001600160a01b0319908116736b3595068778dd592e39a122f4f5a5cf09c90fe217825560018054821673ce84867c3c02b05dc570d0135103d3fb9cc19433179081905560028054831673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2179055600480548316737a250d5630b4cf539739df2c5dacb4c659f2488d1790556005805483166001600160a01b03929092169190911790556006805490911673c2edad668740f1aa35e4d8f227fb8e17dca888cd179055600c60075566b1a2bc2ec50000600855600955348015620000df57600080fd5b50604051620000ee90620001ab565b6567537573686960d01b815260405190819003602001906000f0801580156200011b573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b03928316179081905560408051632d6400ff60e11b81526c4772617a696e6720537573686960981b600482015290519190921691635ac801fe91602480830192600092919082900301818387803b1580156200018c57600080fd5b505af1158015620001a1573d6000803e3d6000fd5b50505050620001b9565b6111e88062001fa683390190565b611ddd80620001c96000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806370cf41f6116100a2578063b6b55f2511610071578063b6b55f25146101b5578063c0dead1a146101d2578063de5f6268146101da578063f1a392da146101e2578063fb1db278146101ea5761010b565b806370cf41f6146101955780637298d36e1461019d578063853828b6146101a5578063a915a229146101ad5761010b565b80633fc8cef3116100de5780633fc8cef3146101755780634641257d1461017d5780636c23229e146101855780636e986ce41461018d5761010b565b80630a087903146101105780630c4f95ae146101345780632b2d9fde1461013c5780632e1a7d4d14610156575b600080fd5b6101186101f2565b604080516001600160a01b039092168252519081900360200190f35b610118610201565b610144610210565b60408051918252519081900360200190f35b6101736004803603602081101561016c57600080fd5b5035610216565b005b61011861052a565b610173610539565b6101186108a2565b6101446108b1565b610144610c3f565b610118610c45565b610173610c54565b610144610cd3565b610173600480360360208110156101cb57600080fd5b5035610d5a565b61011861116e565b61017361117d565b6101446111fa565b610118611200565b6000546001600160a01b031681565b6005546001600160a01b031681565b60085481565b6000610220610cd3565b905060006102b0610231848461120f565b600360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561027f57600080fd5b505afa158015610293573d6000803e3d6000fd5b505050506040513d60208110156102a957600080fd5b5051611278565b60035460408051632770a7eb60e21b81523360048201526024810187905290519293506001600160a01b0390911691639dc29fac9160448082019260009290919082900301818387803b15801561030657600080fd5b505af115801561031a573d6000803e3d6000fd5b505060065460075460408051630441a3e760e41b8152600481019290925260248201869052516001600160a01b03909216935063441a3e70925060448082019260009290919082900301818387803b15801561037557600080fd5b505af1158015610389573d6000803e3d6000fd5b505060008054604080516370a0823160e01b815230600482015290519294506001600160a01b0390911692506370a08231916024808301926020929190829003018186803b1580156103da57600080fd5b505afa1580156103ee573d6000803e3d6000fd5b505050506040513d602081101561040457600080fd5b50519050610411826112d5565b60008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561045d57600080fd5b505afa158015610471573d6000803e3d6000fd5b505050506040513d602081101561048757600080fd5b50516000549091506001600160a01b031663a9059cbb336104a884866117c3565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156104f757600080fd5b505af115801561050b573d6000803e3d6000fd5b505050506040513d602081101561052157600080fd5b50505050505050565b6002546001600160a01b031681565b6009541561058c5742600954610e1001111561058c576040805162461bcd60e51b815260206004820152600d60248201526c21686172766573742d74696d6560981b604482015290519081900360640190fd5b4260095560065460075460408051630441a3e760e41b8152600481019290925260006024830181905290516001600160a01b039093169263441a3e7092604480820193929182900301818387803b1580156105e657600080fd5b505af11580156105fa573d6000803e3d6000fd5b505060008054604080516370a0823160e01b815230600482015290519294506001600160a01b0390911692506370a08231916024808301926020929190829003018186803b15801561064b57600080fd5b505afa15801561065f573d6000803e3d6000fd5b505050506040513d602081101561067557600080fd5b505160085490915060009061069e9061068f90849061120f565b68056bc75e2d63100000611278565b600080546040805163a9059cbb60e01b81523360048201526024810185905290519394506001600160a01b039091169263a9059cbb92604480840193602093929083900390910190829087803b1580156106f757600080fd5b505af115801561070b573d6000803e3d6000fd5b505050506040513d602081101561072157600080fd5b5061072e905082826117c3565b915061073982611813565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561078457600080fd5b505afa158015610798573d6000803e3d6000fd5b505050506040513d60208110156107ae57600080fd5b50516001546006546040805163095ea7b360e01b81526001600160a01b03928316600482015260248101859052905193945091169163095ea7b3916044808201926020929091908290030181600087803b15801561080b57600080fd5b505af115801561081f573d6000803e3d6000fd5b505050506040513d602081101561083557600080fd5b505060065460075460408051631c57762b60e31b8152600481019290925260248201849052516001600160a01b039092169163e2bbb1589160448082019260009290919082900301818387803b15801561088e57600080fd5b505af1158015610521573d6000803e3d6000fd5b6003546001600160a01b031681565b6000806108bc610cd3565b9050806108cd576000915050610c3c565b600080600560009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561091e57600080fd5b505afa158015610932573d6000803e3d6000fd5b505050506040513d606081101561094857600080fd5b508051602091820151600154604080516318160ddd60e01b815290519396509194506000936001600160a01b03909116926318160ddd926004808201939291829003018186803b15801561099b57600080fd5b505afa1580156109af573d6000803e3d6000fd5b505050506040513d60208110156109c557600080fd5b5051905060006109e66109e086670de0b6b3a764000061120f565b83611278565b90506000610a0e610a00866001600160701b03168461120f565b670de0b6b3a7640000611278565b90506000610a28610a00866001600160701b03168561120f565b604080516002808252606080830184529394509091602083019080368337505060025482519293506001600160a01b031691839150600090610a6657fe5b6001600160a01b039283166020918202929092010152600054825191169082906001908110610a9157fe5b6001600160a01b03928316602091820292909201810191909152600480546040805163d06ca61f60e01b815292830187815260248401918252865160448501528651606096939093169463d06ca61f948994899492606490920191858101910280838360005b83811015610b0f578181015183820152602001610af7565b50505050905001935050505060006040518083038186803b158015610b3357600080fd5b505afa158015610b47573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610b7057600080fd5b8101908080516040519392919084640100000000821115610b9057600080fd5b908301906020820185811115610ba557600080fd5b8251866020820283011164010000000082111715610bc257600080fd5b82525081516020918201928201910280838360005b83811015610bef578181015183820152602001610bd7565b505050509050016040525050509050610c30610231610c2283600181518110610c1457fe5b602002602001015187611d58565b670de0b6b3a764000061120f565b99505050505050505050505b90565b60075481565b6004546001600160a01b031681565b600354604080516370a0823160e01b81523360048201529051610cd1926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610ca057600080fd5b505afa158015610cb4573d6000803e3d6000fd5b505050506040513d6020811015610cca57600080fd5b5051610216565b565b600654600754604080516393f1a40b60e01b81526004810192909252306024830152805160009384936001600160a01b03909116926393f1a40b92604480840193829003018186803b158015610d2857600080fd5b505afa158015610d3c573d6000803e3d6000fd5b505050506040513d6040811015610d5257600080fd5b505191505090565b60008054604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b158015610db557600080fd5b505af1158015610dc9573d6000803e3d6000fd5b505050506040513d6020811015610ddf57600080fd5b5060009050610dec610cd3565b600154604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e3d57600080fd5b505afa158015610e51573d6000803e3d6000fd5b505050506040513d6020811015610e6757600080fd5b50519050610e7483611813565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610ebf57600080fd5b505afa158015610ed3573d6000803e3d6000fd5b505050506040513d6020811015610ee957600080fd5b50519050610ef781836117c3565b600354604080516318160ddd60e01b815290519296506000926001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b158015610f4257600080fd5b505afa158015610f56573d6000803e3d6000fd5b505050506040513d6020811015610f6c57600080fd5b5051610f79575083611008565b611005610fff86600360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fce57600080fd5b505afa158015610fe2573d6000803e3d6000fd5b505050506040513d6020811015610ff857600080fd5b505161120f565b85611278565b90505b6001546006546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018990529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561106157600080fd5b505af1158015611075573d6000803e3d6000fd5b505050506040513d602081101561108b57600080fd5b505060065460075460408051631c57762b60e31b8152600481019290925260248201889052516001600160a01b039092169163e2bbb1589160448082019260009290919082900301818387803b1580156110e457600080fd5b505af11580156110f8573d6000803e3d6000fd5b5050600354604080516340c10f1960e01b81523360048201526024810186905290516001600160a01b0390921693506340c10f19925060448082019260009290919082900301818387803b15801561114f57600080fd5b505af1158015611163573d6000803e3d6000fd5b505050505050505050565b6001546001600160a01b031681565b600054604080516370a0823160e01b81523360048201529051610cd1926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156111c957600080fd5b505afa1580156111dd573d6000803e3d6000fd5b505050506040513d60208110156111f357600080fd5b5051610d5a565b60095481565b6006546001600160a01b031681565b600081158061122a5750508082028282828161122757fe5b04145b611272576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b92915050565b60008082116112c1576040805162461bcd60e51b815260206004820152601060248201526f6469766973696f6e206279207a65726f60801b604482015290519081900360640190fd5b60008284816112cc57fe5b04949350505050565b600154604080516370a0823160e01b8152306004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561131f57600080fd5b505afa158015611333573d6000803e3d6000fd5b505050506040513d602081101561134957600080fd5b50511015611395576040805162461bcd60e51b81526020600482015260146024820152736e6f742d656e6f7567682d6c697175696469747960601b604482015290519081900360640190fd5b600154600480546040805163095ea7b360e01b81526001600160a01b0392831693810193909352602483018590525192169163095ea7b3916044808201926020929091908290030181600087803b1580156113ef57600080fd5b505af1158015611403573d6000803e3d6000fd5b505050506040513d602081101561141957600080fd5b5050600480546000805460025460408051635d5155ef60e11b81526001600160a01b039384169681019690965290821660248601526044850186905260648501839052608485018390523060a4860152603c420160c48601528051919093169363baa2abde9360e4808301949193928390030190829087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d60408110156114c857600080fd5b50506040805160028082526060808301845292602083019080368337505060025482519293506001600160a01b03169183915060009061150457fe5b6001600160a01b03928316602091820292909201015260005482519116908290600190811061152f57fe5b6001600160a01b03928316602091820292909201810191909152600254604080516370a0823160e01b8152306004820152905160009492909216926370a0823192602480840193829003018186803b15801561158a57600080fd5b505afa15801561159e573d6000803e3d6000fd5b505050506040513d60208110156115b457600080fd5b5051600254600480546040805163095ea7b360e01b81526001600160a01b039283169381019390935260248301859052519394509091169163095ea7b3916044808201926020929091908290030181600087803b15801561161457600080fd5b505af1158015611628573d6000803e3d6000fd5b505050506040513d602081101561163e57600080fd5b5050600480546040516338ed173960e01b81529182018381526000602484018190523060648501819052603c42016084860181905260a060448701908152885160a488015288516001600160a01b03909616966338ed17399689968b9594939092909160c490910190602087810191028083838b5b838110156116cb5781810151838201526020016116b3565b505050509050019650505050505050600060405180830381600087803b1580156116f457600080fd5b505af1158015611708573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561173157600080fd5b810190808051604051939291908464010000000082111561175157600080fd5b90830190602082018581111561176657600080fd5b825186602082028301116401000000008211171561178357600080fd5b82525081516020918201928201910280838360005b838110156117b0578181015183820152602001611798565b5050505090500160405250505050505050565b80820382811115611272576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6000611820826002611278565b60408051600280825260608083018452939450909160208301908036833750506000805483519394506001600160a01b03169284925061185c57fe5b6001600160a01b03928316602091820292909201015260025482519116908290600190811061188757fe5b6001600160a01b0392831660209182029290920181019190915260008054600480546040805163095ea7b360e01b815291871692820192909252602481018890529051919094169363095ea7b3936044808301949193928390030190829087803b1580156118f457600080fd5b505af1158015611908573d6000803e3d6000fd5b505050506040513d602081101561191e57600080fd5b5050600480546040516338ed173960e01b81529182018481526000602484018190523060648501819052603c42016084860181905260a060448701908152875160a488015287516001600160a01b03909616966338ed1739968a968a9594939092909160c490910190602087810191028083838b5b838110156119ab578181015183820152602001611993565b505050509050019650505050505050600060405180830381600087803b1580156119d457600080fd5b505af11580156119e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611a1157600080fd5b8101908080516040519392919084640100000000821115611a3157600080fd5b908301906020820185811115611a4657600080fd5b8251866020820283011164010000000082111715611a6357600080fd5b82525081516020918201928201910280838360005b83811015611a90578181015183820152602001611a78565b505050509190910160408181526002546370a0823160e01b83523060048401529051600097506001600160a01b0390911695506370a08231945060248083019450602093509091829003018186803b158015611aeb57600080fd5b505afa158015611aff573d6000803e3d6000fd5b505050506040513d6020811015611b1557600080fd5b505160008054604080516370a0823160e01b8152306004820152905193945091926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015611b6757600080fd5b505afa158015611b7b573d6000803e3d6000fd5b505050506040513d6020811015611b9157600080fd5b505160008054600480546040805163095ea7b360e01b81526001600160a01b039283169381019390935260248301869052519495509091169263095ea7b392604480840193602093929083900390910190829087803b158015611bf357600080fd5b505af1158015611c07573d6000803e3d6000fd5b505050506040513d6020811015611c1d57600080fd5b5050600254600480546040805163095ea7b360e01b81526001600160a01b0392831693810193909352602483018690525192169163095ea7b3916044808201926020929091908290030181600087803b158015611c7957600080fd5b505af1158015611c8d573d6000803e3d6000fd5b505050506040513d6020811015611ca357600080fd5b505060048054600080546002546040805162e8e33760e81b81526001600160a01b0393841696810196909652908216602486015260448501869052606485018790526084850183905260a485018390523060c4860152603c420160e48601525192169263e8e33700926101048083019360609383900390910190829087803b158015611d2e57600080fd5b505af1158015611d42573d6000803e3d6000fd5b505050506040513d606081101561052157600080fd5b80820182811015611272576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfea2646970667358221220010e3608858169759e72d05e3efa60b7f16a6ac3f8c1f6c5612f6779ae30090b64736f6c6343000607003360806040526012600655600060075534801561001a57600080fd5b506040516111e83803806111e88339818101604052602081101561003d57600080fd5b5051600180546001600160a01b031916339081179091556040517fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a26005556111598061008f6000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80637a9e5e4b116100de578063b753a98c11610097578063bf7e214f11610071578063bf7e214f1461040d578063daea85c514610415578063dd62ed3e1461043b578063f2d5d56b1461046957610173565b8063b753a98c146103a3578063bb35783b146103cf578063be9a65551461040557610173565b80637a9e5e4b146102dc5780638da5cb5b1461030257806395d89b41146103265780639dc29fac1461032e578063a0712d681461035a578063a9059cbb1461037757610173565b8063313ce56711610130578063313ce5671461024057806340c10f191461024857806342966c68146102745780635ac801fe1461029157806370a08231146102ae57806375f12b21146102d457610173565b806306fdde031461017857806307da68f514610192578063095ea7b31461019c57806313af4035146101dc57806318160ddd1461020257806323b872dd1461020a575b600080fd5b610180610495565b60408051918252519081900360200190f35b61019a61049b565b005b6101c8600480360360408110156101b257600080fd5b506001600160a01b038135169060200135610537565b604080519115158252519081900360200190f35b61019a600480360360208110156101f257600080fd5b50356001600160a01b03166105f6565b6101806106a4565b6101c86004803603606081101561022057600080fd5b506001600160a01b038135811691602081013590911690604001356106aa565b61018061092f565b61019a6004803603604081101561025e57600080fd5b506001600160a01b038135169060200135610935565b61019a6004803603602081101561028a57600080fd5b5035610a76565b61019a600480360360208110156102a757600080fd5b5035610a83565b610180600480360360208110156102c457600080fd5b50356001600160a01b0316610ae6565b6101c8610af8565b61019a600480360360208110156102f257600080fd5b50356001600160a01b0316610b08565b61030a610bb2565b604080516001600160a01b039092168252519081900360200190f35b610180610bc1565b61019a6004803603604081101561034457600080fd5b506001600160a01b038135169060200135610bc7565b61019a6004803603602081101561037057600080fd5b5035610e83565b6101c86004803603604081101561038d57600080fd5b506001600160a01b038135169060200135610e8d565b61019a600480360360408110156103b957600080fd5b506001600160a01b038135169060200135610ea1565b61019a600480360360608110156103e557600080fd5b506001600160a01b03813581169160208101359091169060400135610eb1565b61019a610ec2565b61030a610f58565b6101c86004803603602081101561042b57600080fd5b50356001600160a01b0316610f67565b6101806004803603604081101561045157600080fd5b506001600160a01b0381358116916020013516610f75565b61019a6004803603604081101561047f57600080fd5b506001600160a01b038135169060200135610f92565b60075481565b6104b1336000356001600160e01b031916610f9d565b6104f9576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b1790556040517fbedf0f4abfe86d4ffad593d9607fe70e83ea706033d44d24b3b6283cf3fc4f6b90600090a1565b600154600090600160a01b900460ff161561058e576040805162461bcd60e51b8152602060048201526012602482015271191ccb5cdd1bdc0b5a5ccb5cdd1bdc1c195960721b604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b61060c336000356001600160e01b031916610f9d565b610654576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b60025481565b600154600090600160a01b900460ff1615610701576040805162461bcd60e51b8152602060048201526012602482015271191ccb5cdd1bdc0b5a5ccb5cdd1bdc1c195960721b604482015290519081900360640190fd5b6001600160a01b038416331480159061073f57506001600160a01b038416600090815260046020908152604080832033845290915290205460001914155b1561080f576001600160a01b03841660009081526004602090815260408083203384529091529020548211156107bc576040805162461bcd60e51b815260206004820152601e60248201527f64732d746f6b656e2d696e73756666696369656e742d617070726f76616c0000604482015290519081900360640190fd5b6001600160a01b03841660009081526004602090815260408083203384529091529020546107ea9083611084565b6001600160a01b03851660009081526004602090815260408083203384529091529020555b6001600160a01b03841660009081526003602052604090205482111561087c576040805162461bcd60e51b815260206004820152601d60248201527f64732d746f6b656e2d696e73756666696369656e742d62616c616e6365000000604482015290519081900360640190fd5b6001600160a01b03841660009081526003602052604090205461089f9083611084565b6001600160a01b0380861660009081526003602052604080822093909355908516815220546108ce90836110d4565b6001600160a01b0380851660008181526003602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b60065481565b61094b336000356001600160e01b031916610f9d565b610993576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600154600160a01b900460ff16156109e7576040805162461bcd60e51b8152602060048201526012602482015271191ccb5cdd1bdc0b5a5ccb5cdd1bdc1c195960721b604482015290519081900360640190fd5b6001600160a01b038216600090815260036020526040902054610a0a90826110d4565b6001600160a01b038316600090815260036020526040902055600254610a3090826110d4565b6002556040805182815290516001600160a01b038416917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a25050565b610a803382610bc7565b50565b610a99336000356001600160e01b031916610f9d565b610ae1576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600755565b60036020526000908152604090205481565b600154600160a01b900460ff1681565b610b1e336000356001600160e01b031916610f9d565b610b66576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b6001546001600160a01b031681565b60055481565b610bdd336000356001600160e01b031916610f9d565b610c25576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600154600160a01b900460ff1615610c79576040805162461bcd60e51b8152602060048201526012602482015271191ccb5cdd1bdc0b5a5ccb5cdd1bdc1c195960721b604482015290519081900360640190fd5b6001600160a01b0382163314801590610cb757506001600160a01b038216600090815260046020908152604080832033845290915290205460001914155b15610d87576001600160a01b0382166000908152600460209081526040808320338452909152902054811115610d34576040805162461bcd60e51b815260206004820152601e60248201527f64732d746f6b656e2d696e73756666696369656e742d617070726f76616c0000604482015290519081900360640190fd5b6001600160a01b0382166000908152600460209081526040808320338452909152902054610d629082611084565b6001600160a01b03831660009081526004602090815260408083203384529091529020555b6001600160a01b038216600090815260036020526040902054811115610df4576040805162461bcd60e51b815260206004820152601d60248201527f64732d746f6b656e2d696e73756666696369656e742d62616c616e6365000000604482015290519081900360640190fd5b6001600160a01b038216600090815260036020526040902054610e179082611084565b6001600160a01b038316600090815260036020526040902055600254610e3d9082611084565b6002556040805182815290516001600160a01b038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b610a803382610935565b6000610e9a3384846106aa565b9392505050565b610eac3383836106aa565b505050565b610ebc8383836106aa565b50505050565b610ed8336000356001600160e01b031916610f9d565b610f20576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b6001805460ff60a01b191690556040517f1b55ba3aa851a46be3b365aee5b5c140edd620d578922f3e8466d2cbd96f954b90600090a1565b6000546001600160a01b031681565b60006105f082600019610537565b600460209081526000928352604080842090915290825290205481565b610eac8233836106aa565b60006001600160a01b038316301415610fb8575060016105f0565b6001546001600160a01b0384811691161415610fd6575060016105f0565b6000546001600160a01b0316610fee575060006105f0565b6000546040805163b700961360e01b81526001600160a01b0386811660048301523060248301526001600160e01b0319861660448301529151919092169163b7009613916064808301926020929190829003018186803b15801561105157600080fd5b505afa158015611065573d6000803e3d6000fd5b505050506040513d602081101561107b57600080fd5b505190506105f0565b808203828111156105f0576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b808201828110156105f0576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfea26469706673582212205d78c8bfac43325139729d1133484204b57ca93624935908b44ee8612908388364736f6c63430006070033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806370cf41f6116100a2578063b6b55f2511610071578063b6b55f25146101b5578063c0dead1a146101d2578063de5f6268146101da578063f1a392da146101e2578063fb1db278146101ea5761010b565b806370cf41f6146101955780637298d36e1461019d578063853828b6146101a5578063a915a229146101ad5761010b565b80633fc8cef3116100de5780633fc8cef3146101755780634641257d1461017d5780636c23229e146101855780636e986ce41461018d5761010b565b80630a087903146101105780630c4f95ae146101345780632b2d9fde1461013c5780632e1a7d4d14610156575b600080fd5b6101186101f2565b604080516001600160a01b039092168252519081900360200190f35b610118610201565b610144610210565b60408051918252519081900360200190f35b6101736004803603602081101561016c57600080fd5b5035610216565b005b61011861052a565b610173610539565b6101186108a2565b6101446108b1565b610144610c3f565b610118610c45565b610173610c54565b610144610cd3565b610173600480360360208110156101cb57600080fd5b5035610d5a565b61011861116e565b61017361117d565b6101446111fa565b610118611200565b6000546001600160a01b031681565b6005546001600160a01b031681565b60085481565b6000610220610cd3565b905060006102b0610231848461120f565b600360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561027f57600080fd5b505afa158015610293573d6000803e3d6000fd5b505050506040513d60208110156102a957600080fd5b5051611278565b60035460408051632770a7eb60e21b81523360048201526024810187905290519293506001600160a01b0390911691639dc29fac9160448082019260009290919082900301818387803b15801561030657600080fd5b505af115801561031a573d6000803e3d6000fd5b505060065460075460408051630441a3e760e41b8152600481019290925260248201869052516001600160a01b03909216935063441a3e70925060448082019260009290919082900301818387803b15801561037557600080fd5b505af1158015610389573d6000803e3d6000fd5b505060008054604080516370a0823160e01b815230600482015290519294506001600160a01b0390911692506370a08231916024808301926020929190829003018186803b1580156103da57600080fd5b505afa1580156103ee573d6000803e3d6000fd5b505050506040513d602081101561040457600080fd5b50519050610411826112d5565b60008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561045d57600080fd5b505afa158015610471573d6000803e3d6000fd5b505050506040513d602081101561048757600080fd5b50516000549091506001600160a01b031663a9059cbb336104a884866117c3565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156104f757600080fd5b505af115801561050b573d6000803e3d6000fd5b505050506040513d602081101561052157600080fd5b50505050505050565b6002546001600160a01b031681565b6009541561058c5742600954610e1001111561058c576040805162461bcd60e51b815260206004820152600d60248201526c21686172766573742d74696d6560981b604482015290519081900360640190fd5b4260095560065460075460408051630441a3e760e41b8152600481019290925260006024830181905290516001600160a01b039093169263441a3e7092604480820193929182900301818387803b1580156105e657600080fd5b505af11580156105fa573d6000803e3d6000fd5b505060008054604080516370a0823160e01b815230600482015290519294506001600160a01b0390911692506370a08231916024808301926020929190829003018186803b15801561064b57600080fd5b505afa15801561065f573d6000803e3d6000fd5b505050506040513d602081101561067557600080fd5b505160085490915060009061069e9061068f90849061120f565b68056bc75e2d63100000611278565b600080546040805163a9059cbb60e01b81523360048201526024810185905290519394506001600160a01b039091169263a9059cbb92604480840193602093929083900390910190829087803b1580156106f757600080fd5b505af115801561070b573d6000803e3d6000fd5b505050506040513d602081101561072157600080fd5b5061072e905082826117c3565b915061073982611813565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561078457600080fd5b505afa158015610798573d6000803e3d6000fd5b505050506040513d60208110156107ae57600080fd5b50516001546006546040805163095ea7b360e01b81526001600160a01b03928316600482015260248101859052905193945091169163095ea7b3916044808201926020929091908290030181600087803b15801561080b57600080fd5b505af115801561081f573d6000803e3d6000fd5b505050506040513d602081101561083557600080fd5b505060065460075460408051631c57762b60e31b8152600481019290925260248201849052516001600160a01b039092169163e2bbb1589160448082019260009290919082900301818387803b15801561088e57600080fd5b505af1158015610521573d6000803e3d6000fd5b6003546001600160a01b031681565b6000806108bc610cd3565b9050806108cd576000915050610c3c565b600080600560009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561091e57600080fd5b505afa158015610932573d6000803e3d6000fd5b505050506040513d606081101561094857600080fd5b508051602091820151600154604080516318160ddd60e01b815290519396509194506000936001600160a01b03909116926318160ddd926004808201939291829003018186803b15801561099b57600080fd5b505afa1580156109af573d6000803e3d6000fd5b505050506040513d60208110156109c557600080fd5b5051905060006109e66109e086670de0b6b3a764000061120f565b83611278565b90506000610a0e610a00866001600160701b03168461120f565b670de0b6b3a7640000611278565b90506000610a28610a00866001600160701b03168561120f565b604080516002808252606080830184529394509091602083019080368337505060025482519293506001600160a01b031691839150600090610a6657fe5b6001600160a01b039283166020918202929092010152600054825191169082906001908110610a9157fe5b6001600160a01b03928316602091820292909201810191909152600480546040805163d06ca61f60e01b815292830187815260248401918252865160448501528651606096939093169463d06ca61f948994899492606490920191858101910280838360005b83811015610b0f578181015183820152602001610af7565b50505050905001935050505060006040518083038186803b158015610b3357600080fd5b505afa158015610b47573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610b7057600080fd5b8101908080516040519392919084640100000000821115610b9057600080fd5b908301906020820185811115610ba557600080fd5b8251866020820283011164010000000082111715610bc257600080fd5b82525081516020918201928201910280838360005b83811015610bef578181015183820152602001610bd7565b505050509050016040525050509050610c30610231610c2283600181518110610c1457fe5b602002602001015187611d58565b670de0b6b3a764000061120f565b99505050505050505050505b90565b60075481565b6004546001600160a01b031681565b600354604080516370a0823160e01b81523360048201529051610cd1926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610ca057600080fd5b505afa158015610cb4573d6000803e3d6000fd5b505050506040513d6020811015610cca57600080fd5b5051610216565b565b600654600754604080516393f1a40b60e01b81526004810192909252306024830152805160009384936001600160a01b03909116926393f1a40b92604480840193829003018186803b158015610d2857600080fd5b505afa158015610d3c573d6000803e3d6000fd5b505050506040513d6040811015610d5257600080fd5b505191505090565b60008054604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b158015610db557600080fd5b505af1158015610dc9573d6000803e3d6000fd5b505050506040513d6020811015610ddf57600080fd5b5060009050610dec610cd3565b600154604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e3d57600080fd5b505afa158015610e51573d6000803e3d6000fd5b505050506040513d6020811015610e6757600080fd5b50519050610e7483611813565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610ebf57600080fd5b505afa158015610ed3573d6000803e3d6000fd5b505050506040513d6020811015610ee957600080fd5b50519050610ef781836117c3565b600354604080516318160ddd60e01b815290519296506000926001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b158015610f4257600080fd5b505afa158015610f56573d6000803e3d6000fd5b505050506040513d6020811015610f6c57600080fd5b5051610f79575083611008565b611005610fff86600360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fce57600080fd5b505afa158015610fe2573d6000803e3d6000fd5b505050506040513d6020811015610ff857600080fd5b505161120f565b85611278565b90505b6001546006546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018990529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561106157600080fd5b505af1158015611075573d6000803e3d6000fd5b505050506040513d602081101561108b57600080fd5b505060065460075460408051631c57762b60e31b8152600481019290925260248201889052516001600160a01b039092169163e2bbb1589160448082019260009290919082900301818387803b1580156110e457600080fd5b505af11580156110f8573d6000803e3d6000fd5b5050600354604080516340c10f1960e01b81523360048201526024810186905290516001600160a01b0390921693506340c10f19925060448082019260009290919082900301818387803b15801561114f57600080fd5b505af1158015611163573d6000803e3d6000fd5b505050505050505050565b6001546001600160a01b031681565b600054604080516370a0823160e01b81523360048201529051610cd1926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156111c957600080fd5b505afa1580156111dd573d6000803e3d6000fd5b505050506040513d60208110156111f357600080fd5b5051610d5a565b60095481565b6006546001600160a01b031681565b600081158061122a5750508082028282828161122757fe5b04145b611272576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b92915050565b60008082116112c1576040805162461bcd60e51b815260206004820152601060248201526f6469766973696f6e206279207a65726f60801b604482015290519081900360640190fd5b60008284816112cc57fe5b04949350505050565b600154604080516370a0823160e01b8152306004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561131f57600080fd5b505afa158015611333573d6000803e3d6000fd5b505050506040513d602081101561134957600080fd5b50511015611395576040805162461bcd60e51b81526020600482015260146024820152736e6f742d656e6f7567682d6c697175696469747960601b604482015290519081900360640190fd5b600154600480546040805163095ea7b360e01b81526001600160a01b0392831693810193909352602483018590525192169163095ea7b3916044808201926020929091908290030181600087803b1580156113ef57600080fd5b505af1158015611403573d6000803e3d6000fd5b505050506040513d602081101561141957600080fd5b5050600480546000805460025460408051635d5155ef60e11b81526001600160a01b039384169681019690965290821660248601526044850186905260648501839052608485018390523060a4860152603c420160c48601528051919093169363baa2abde9360e4808301949193928390030190829087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d60408110156114c857600080fd5b50506040805160028082526060808301845292602083019080368337505060025482519293506001600160a01b03169183915060009061150457fe5b6001600160a01b03928316602091820292909201015260005482519116908290600190811061152f57fe5b6001600160a01b03928316602091820292909201810191909152600254604080516370a0823160e01b8152306004820152905160009492909216926370a0823192602480840193829003018186803b15801561158a57600080fd5b505afa15801561159e573d6000803e3d6000fd5b505050506040513d60208110156115b457600080fd5b5051600254600480546040805163095ea7b360e01b81526001600160a01b039283169381019390935260248301859052519394509091169163095ea7b3916044808201926020929091908290030181600087803b15801561161457600080fd5b505af1158015611628573d6000803e3d6000fd5b505050506040513d602081101561163e57600080fd5b5050600480546040516338ed173960e01b81529182018381526000602484018190523060648501819052603c42016084860181905260a060448701908152885160a488015288516001600160a01b03909616966338ed17399689968b9594939092909160c490910190602087810191028083838b5b838110156116cb5781810151838201526020016116b3565b505050509050019650505050505050600060405180830381600087803b1580156116f457600080fd5b505af1158015611708573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561173157600080fd5b810190808051604051939291908464010000000082111561175157600080fd5b90830190602082018581111561176657600080fd5b825186602082028301116401000000008211171561178357600080fd5b82525081516020918201928201910280838360005b838110156117b0578181015183820152602001611798565b5050505090500160405250505050505050565b80820382811115611272576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6000611820826002611278565b60408051600280825260608083018452939450909160208301908036833750506000805483519394506001600160a01b03169284925061185c57fe5b6001600160a01b03928316602091820292909201015260025482519116908290600190811061188757fe5b6001600160a01b0392831660209182029290920181019190915260008054600480546040805163095ea7b360e01b815291871692820192909252602481018890529051919094169363095ea7b3936044808301949193928390030190829087803b1580156118f457600080fd5b505af1158015611908573d6000803e3d6000fd5b505050506040513d602081101561191e57600080fd5b5050600480546040516338ed173960e01b81529182018481526000602484018190523060648501819052603c42016084860181905260a060448701908152875160a488015287516001600160a01b03909616966338ed1739968a968a9594939092909160c490910190602087810191028083838b5b838110156119ab578181015183820152602001611993565b505050509050019650505050505050600060405180830381600087803b1580156119d457600080fd5b505af11580156119e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611a1157600080fd5b8101908080516040519392919084640100000000821115611a3157600080fd5b908301906020820185811115611a4657600080fd5b8251866020820283011164010000000082111715611a6357600080fd5b82525081516020918201928201910280838360005b83811015611a90578181015183820152602001611a78565b505050509190910160408181526002546370a0823160e01b83523060048401529051600097506001600160a01b0390911695506370a08231945060248083019450602093509091829003018186803b158015611aeb57600080fd5b505afa158015611aff573d6000803e3d6000fd5b505050506040513d6020811015611b1557600080fd5b505160008054604080516370a0823160e01b8152306004820152905193945091926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015611b6757600080fd5b505afa158015611b7b573d6000803e3d6000fd5b505050506040513d6020811015611b9157600080fd5b505160008054600480546040805163095ea7b360e01b81526001600160a01b039283169381019390935260248301869052519495509091169263095ea7b392604480840193602093929083900390910190829087803b158015611bf357600080fd5b505af1158015611c07573d6000803e3d6000fd5b505050506040513d6020811015611c1d57600080fd5b5050600254600480546040805163095ea7b360e01b81526001600160a01b0392831693810193909352602483018690525192169163095ea7b3916044808201926020929091908290030181600087803b158015611c7957600080fd5b505af1158015611c8d573d6000803e3d6000fd5b505050506040513d6020811015611ca357600080fd5b505060048054600080546002546040805162e8e33760e81b81526001600160a01b0393841696810196909652908216602486015260448501869052606485018790526084850183905260a485018390523060c4860152603c420160e48601525192169263e8e33700926101048083019360609383900390910190829087803b158015611d2e57600080fd5b505af1158015611d42573d6000803e3d6000fd5b505050506040513d606081101561052157600080fd5b80820182811015611272576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfea2646970667358221220010e3608858169759e72d05e3efa60b7f16a6ac3f8c1f6c5612f6779ae30090b64736f6c63430006070033
Deployed Bytecode Sourcemap
13102:7345:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13102:7345:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;13153:47:0;;;:::i;:::-;;;;-1:-1:-1;;;;;13153:47:0;;;;;;;;;;;;;;13471:66;;;:::i;13739:44::-;;;:::i;:::-;;;;;;;;;;;;;;;;15085:669;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15085:669:0;;:::i;:::-;;13279:45;;;:::i;14008:923::-;;;:::i;13331:21::-;;;:::i;18779:1213::-;;;:::i;13644:39::-;;;:::i;13393:71::-;;;:::i;14988:89::-;;;:::i;20000:232::-;;;:::i;15856:856::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15856:856:0;;:::i;13207:65::-;;;:::i;15762:86::-;;;:::i;13813:30::-;;;:::i;13574:63::-;;;:::i;13153:47::-;;;-1:-1:-1;;;;;13153:47:0;;:::o;13471:66::-;;;-1:-1:-1;;;;;13471:66:0;;:::o;13739:44::-;;;;:::o;15085:669::-;15138:20;15161:22;:20;:22::i;:::-;15138:45;;15196:14;15213:53;15217:26;15221:7;15230:12;15217:3;:26::i;:::-;15245:6;;;;;;;;;-1:-1:-1;;;;;15245:6:0;-1:-1:-1;;;;;15245:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15245:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15245:20:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15245:20:0;15213:3;:53::i;:::-;15277:6;;:32;;;-1:-1:-1;;;15277:32:0;;15289:10;15277:32;;;;;;;;;;;;15196:70;;-1:-1:-1;;;;;;15277:6:0;;;;:11;;:32;;;;;:6;;:32;;;;;;;;:6;;:32;;;2:2:-1;;;;27:1;24;17:12;2:2;15277:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;15368:10:0;;15388:19;;15368:48;;;-1:-1:-1;;;15368:48:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15368:10:0;;;;-1:-1:-1;15368:19:0;;-1:-1:-1;15368:48:0;;;;;:10;;:48;;;;;;;;:10;;:48;;;2:2:-1;;;;27:1;24;17:12;2:2;15368:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;15496:15:0;15514:5;;:30;;;-1:-1:-1;;;15514:30:0;;15538:4;15514:30;;;;;;15496:15;;-1:-1:-1;;;;;;15514:5:0;;;;-1:-1:-1;15514:15:0;;:30;;;;;;;;;;;;;;:5;:30;;;2:2:-1;;;;27:1;24;17:12;2:2;15514:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15514:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15514:30:0;;-1:-1:-1;15555:29:0;15577:6;15555:21;:29::i;:::-;15595:14;15612:5;;:30;;;-1:-1:-1;;;15612:30:0;;15636:4;15612:30;;;;;;-1:-1:-1;;;;;15612:5:0;;;;:15;;:30;;;;;;;;;;;;;;;:5;:30;;;2:2:-1;;;;27:1;24;17:12;2:2;15612:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15612:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15612:30:0;15698:5;;15612:30;;-1:-1:-1;;;;;;15698:5:0;:14;15713:10;15725:20;15612:30;15737:7;15725:3;:20::i;:::-;15698:48;;;;;;;;;;;;;-1:-1:-1;;;;;15698:48:0;-1:-1:-1;;;;;15698:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15698:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15698:48:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;;15085:669:0:o;13279:45::-;;;-1:-1:-1;;;;;13279:45:0;;:::o;14008:923::-;14092:11;;:15;14088:114;;14157:15;14132:11;;14146:7;14132:21;:40;;14124:66;;;;;-1:-1:-1;;;14124:66:0;;;;;;;;;;;;-1:-1:-1;;;14124:66:0;;;;;;;;;;;;;;;14226:15;14212:11;:29;14281:10;;14301:19;;14281:43;;;-1:-1:-1;;;14281:43:0;;;;;;;;;:10;:43;;;;;;;;-1:-1:-1;;;;;14281:10:0;;;;:19;;:43;;;;;:10;:43;;;;;;:10;;:43;;;2:2:-1;;;;27:1;24;17:12;2:2;14281:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;14337:14:0;14354:5;;:30;;;-1:-1:-1;;;14354:30:0;;14378:4;14354:30;;;;;;14337:14;;-1:-1:-1;;;;;;14354:5:0;;;;-1:-1:-1;14354:15:0;;:30;;;;;;;;;;;;;;:5;:30;;;2:2:-1;;;;27:1;24;17:12;2:2;14354:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14354:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14354:30:0;14428:13;;14354:30;;-1:-1:-1;14395:14:0;;14412:42;;14416:26;;14354:30;;14416:3;:26::i;:::-;14444:9;14412:3;:42::i;:::-;14502:5;;;:34;;;-1:-1:-1;;;14502:34:0;;14517:10;14502:34;;;;;;;;;;;;14395:59;;-1:-1:-1;;;;;;14502:5:0;;;;:14;;:34;;;;;;;;;;;;;;;;;;:5;:34;;;2:2:-1;;;;27:1;24;17:12;2:2;14502:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14502:34:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14597:19:0;;-1:-1:-1;14601:6:0;14609;14597:3;:19::i;:::-;14588:28;;14659:29;14681:6;14659:21;:29::i;:::-;14764:13;;:38;;;-1:-1:-1;;;14764:38:0;;14796:4;14764:38;;;;;;14746:15;;-1:-1:-1;;;;;14764:13:0;;:23;;:38;;;;;;;;;;;;;;:13;:38;;;2:2:-1;;;;27:1;24;17:12;2:2;14764:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14764:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14764:38:0;14813:13;;14843:10;;14813:51;;;-1:-1:-1;;;14813:51:0;;-1:-1:-1;;;;;14843:10:0;;;14813:51;;;;;;;;;;;;14764:38;;-1:-1:-1;14813:13:0;;;:21;;:51;;;;;14764:38;;14813:51;;;;;;;;:13;;:51;;;2:2:-1;;;;27:1;24;17:12;2:2;14813:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14813:51:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;14875:10:0;;14894:19;;14875:48;;;-1:-1:-1;;;14875:48:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14875:10:0;;;;:18;;:48;;;;;:10;;:48;;;;;;;;:10;;:48;;;2:2:-1;;;;27:1;24;17:12;2:2;14875:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;13331:21:0;;;-1:-1:-1;;;;;13331:21:0;;:::o;18779:1213::-;18835:7;18893:20;18916:22;:20;:22::i;:::-;18893:45;-1:-1:-1;18955:17:0;18951:58;;18996:1;18989:8;;;;;18951:58;19078:25;19105:24;19135:9;;;;;;;;;-1:-1:-1;;;;;19135:9:0;-1:-1:-1;;;;;19135:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19135:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19135:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19135:37:0;;;;;;;19234:13;;19135:37;19234:27;;-1:-1:-1;;;19234:27:0;;;;19135:37;;-1:-1:-1;19135:37:0;;-1:-1:-1;19209:22:0;;-1:-1:-1;;;;;19234:13:0;;;;:25;;:27;;;;;19135:37;19234:27;;;;;;:13;:27;;;2:2:-1;;;;27:1;24;17:12;2:2;19234:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19234:27:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19234:27:0;;-1:-1:-1;19294:23:0;19320:44;19324:23;19328:12;19342:4;19324:3;:23::i;:::-;19349:14;19320:3;:44::i;:::-;19294:70;;19403:22;19450:50;19454:39;19458:17;-1:-1:-1;;;;;19454:39:0;19477:15;19454:3;:39::i;:::-;19495:4;19450:3;:50::i;:::-;19403:108;;19522:21;19568:49;19572:38;19576:16;-1:-1:-1;;;;;19572:38:0;19594:15;19572:3;:38::i;19568:49::-;19716:16;;;19730:1;19716:16;;;19692:21;19716:16;;;;;19522:106;;-1:-1:-1;19716:16:0;;;;;;;109:14:-1;19716:16:0;88:42:-1;-1:-1;;19761:4:0;;19743:7;;;;-1:-1:-1;;;;;;19761:4:0;;19743:7;;-1:-1:-1;19761:4:0;;19743:7;;;;-1:-1:-1;;;;;19743:23:0;;;:7;;;;;;;;;:23;19795:5;;19777:7;;19795:5;;;19777:4;;19795:5;;19777:7;;;;;;-1:-1:-1;;;;;19777:24:0;;;:7;;;;;;;;;;:24;;;;19836:5;;;:40;;;-1:-1:-1;;;19836:40:0;;;;;;;;;;;;;;;;;;;;;;19812:21;;19836:5;;;;;:19;;19856:13;;19871:4;;19836:40;;;;;;;;;;;;;;:5;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;19836:40:0;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19836:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19836:40:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;19836:40:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;15:2;7:11;;4:2;;;31:1;28;21:12;4:2;19836:40:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;19836:40:0;;421:4:-1;412:14;;;;19836:40:0;;;;;412:14:-1;19836:40:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;19836:40:0;;;;;;;;;;;19812:64;;19918:66;19922:39;19926:28;19930:4;19935:1;19930:7;;;;;;;;;;;;;;19939:14;19926:3;:28::i;:::-;19956:4;19922:3;:39::i;19918:66::-;19911:73;;;;;;;;;;;18779:1213;;:::o;13644:39::-;;;;:::o;13393:71::-;;;-1:-1:-1;;;;;13393:71:0;;:::o;14988:89::-;15040:6;;:28;;;-1:-1:-1;;;15040:28:0;;15057:10;15040:28;;;;;;15031:38;;-1:-1:-1;;;;;15040:6:0;;:16;;:28;;;;;;;;;;;;;;:6;:28;;;2:2:-1;;;;27:1;24;17:12;2:2;15040:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15040:28:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15040:28:0;15031:8;:38::i;:::-;14988:89::o;20000:232::-;20100:10;;20134:19;;20100:92;;;-1:-1:-1;;;20100:92:0;;;;;;;;;20176:4;20100:92;;;;;;20053:7;;;;-1:-1:-1;;;;;20100:10:0;;;;:19;;:92;;;;;;;;;;:10;:92;;;2:2:-1;;;;27:1;24;17:12;2:2;20100:92:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20100:92:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20100:92:0;;-1:-1:-1;;20000:232:0;:::o;15856:856::-;15908:5;;;:54;;;-1:-1:-1;;;15908:54:0;;15927:10;15908:54;;;;15947:4;15908:54;;;;;;;;;;;;-1:-1:-1;;;;;15908:5:0;;;;:18;;:54;;;;;;;;;;;;;;;;;:5;:54;;;2:2:-1;;;;27:1;24;17:12;2:2;15908:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15908:54:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15975:13:0;;-1:-1:-1;15991:22:0;:20;:22::i;:::-;16042:13;;:38;;;-1:-1:-1;;;16042:38:0;;16074:4;16042:38;;;;;;15975;;-1:-1:-1;16024:15:0;;-1:-1:-1;;;;;16042:13:0;;;;:23;;:38;;;;;;;;;;;;;;;:13;:38;;;2:2:-1;;;;27:1;24;17:12;2:2;16042:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16042:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16042:38:0;;-1:-1:-1;16091:30:0;16113:7;16091:21;:30::i;:::-;16149:13;;:38;;;-1:-1:-1;;;16149:38:0;;16181:4;16149:38;;;;;;16132:14;;-1:-1:-1;;;;;16149:13:0;;:23;;:38;;;;;;;;;;;;;;:13;:38;;;2:2:-1;;;;27:1;24;17:12;2:2;16149:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16149:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16149:38:0;;-1:-1:-1;16210:20:0;16149:38;16222:7;16210:3;:20::i;:::-;16320:6;;:20;;;-1:-1:-1;;;16320:20:0;;;;16200:30;;-1:-1:-1;16287:14:0;;-1:-1:-1;;;;;16320:6:0;;;;:18;;:20;;;;;;;;;;;;;;;:6;:20;;;2:2:-1;;;;27:1;24;17:12;2:2;16320:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16320:20:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16320:20:0;16316:162;;-1:-1:-1;16371:7:0;16316:162;;;16420:46;16424:34;16428:7;16437:6;;;;;;;;;-1:-1:-1;;;;;16437:6:0;-1:-1:-1;;;;;16437:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16437:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16437:20:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16437:20:0;16424:3;:34::i;:::-;16460:5;16420:3;:46::i;:::-;16411:55;;16316:162;16550:13;;16580:10;;16550:51;;;-1:-1:-1;;;16550:51:0;;-1:-1:-1;;;;;16580:10:0;;;16550:51;;;;;;;;;;;;:13;;;;;:21;;:51;;;;;;;;;;;;;;:13;;:51;;;2:2:-1;;;;27:1;24;17:12;2:2;16550:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16550:51:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;16612:10:0;;16631:19;;16612:48;;;-1:-1:-1;;;16612:48:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16612:10:0;;;;:18;;:48;;;;;:10;;:48;;;;;;;;:10;;:48;;;2:2:-1;;;;27:1;24;17:12;2:2;16612:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;16673:6:0;;:31;;;-1:-1:-1;;;16673:31:0;;16685:10;16673:31;;;;;;;;;;;;-1:-1:-1;;;;;16673:6:0;;;;-1:-1:-1;16673:11:0;;-1:-1:-1;16673:31:0;;;;;:6;;:31;;;;;;;;:6;;:31;;;2:2:-1;;;;27:1;24;17:12;2:2;16673:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16673:31:0;;;;15856:856;;;;;:::o;13207:65::-;;;-1:-1:-1;;;;;13207:65:0;;:::o;15762:86::-;15812:5;;:27;;;-1:-1:-1;;;15812:27:0;;15828:10;15812:27;;;;;;15804:36;;-1:-1:-1;;;;;15812:5:0;;:15;;:27;;;;;;;;;;;;;;:5;:27;;;2:2:-1;;;;27:1;24;17:12;2:2;15812:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15812:27:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15812:27:0;15804:7;:36::i;13813:30::-;;;;:::o;13574:63::-;;;-1:-1:-1;;;;;13574:63:0;;:::o;3240:142::-;3292:6;3319;;;:30;;-1:-1:-1;;3334:5:0;;;3348:1;3343;3334:5;3343:1;3329:15;;;;;:20;3319:30;3311:63;;;;;-1:-1:-1;;;3311:63:0;;;;;;;;;;;;-1:-1:-1;;;3311:63:0;;;;;;;;;;;;;;;3240:142;;;;:::o;20277:167::-;20335:7;20367:1;20363;:5;20355:34;;;;;-1:-1:-1;;;20355:34:0;;;;;;;;;;;;-1:-1:-1;;;20355:34:0;;;;;;;;;;;;;;;20400:9;20416:1;20412;:5;;;;;;;20277:167;-1:-1:-1;;;;20277:167:0:o;17835:907::-;17954:13;;:38;;;-1:-1:-1;;;17954:38:0;;17986:4;17954:38;;;;;;17996:7;;-1:-1:-1;;;;;17954:13:0;;:23;;:38;;;;;;;;;;;;;;:13;:38;;;2:2:-1;;;;27:1;24;17:12;2:2;17954:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17954:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17954:38:0;:49;;17932:119;;;;;-1:-1:-1;;;17932:119:0;;;;;;;;;;;;-1:-1:-1;;;17932:119:0;;;;;;;;;;;;;;;18062:13;;18092:5;;;18062:46;;;-1:-1:-1;;;18062:46:0;;-1:-1:-1;;;;;18092:5:0;;;18062:46;;;;;;;;;;;;;;:13;;;:21;;:46;;;;;;;;;;;;;;;:13;;:46;;;2:2:-1;;;;27:1;24;17:12;2:2;18062:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18062:46:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;18119:5:0;;;;18163;;18192:4;;18119:194;;;-1:-1:-1;;;18119:194:0;;-1:-1:-1;;;;;18163:5:0;;;18119:194;;;;;;;18192:4;;;18119:194;;;;;;;;;;;;;;;;;;;;;;18274:4;18119:194;;;;18300:2;18294:3;:8;18119:194;;;;;;:5;;;;;:21;;:194;;;;;;;;;;;;;;;:5;:194;;;2:2:-1;;;;27:1;24;17:12;2:2;18119:194:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18119:194:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;18383:16:0;;;18397:1;18383:16;;;18359:21;18383:16;;;;;18359:21;18383:16;;;;;109:14:-1;18383:16:0;88:42:-1;-1:-1;;18428:4:0;;18410:7;;;;-1:-1:-1;;;;;;18428:4:0;;18410:7;;-1:-1:-1;18428:4:0;;18410:7;;;;-1:-1:-1;;;;;18410:23:0;;;:7;;;;;;;;;:23;18462:5;;18444:7;;18462:5;;;18444:4;;18462:5;;18444:7;;;;;;-1:-1:-1;;;;;18444:24:0;;;:7;;;;;;;;;;:24;;;;18497:4;;:29;;;-1:-1:-1;;;18497:29:0;;18520:4;18497:29;;;;;;18479:15;;18497:4;;;;;:14;;:29;;;;;;;;;;:4;:29;;;2:2:-1;;;;27:1;24;17:12;2:2;18497:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18497:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;18497:29:0;18537:4;;18558:5;;;18537:37;;;-1:-1:-1;;;18537:37:0;;-1:-1:-1;;;;;18558:5:0;;;18537:37;;;;;;;;;;;;;;18497:29;;-1:-1:-1;18537:4:0;;;;:12;;:37;;;;;18497:29;;18537:37;;;;;;;;:4;;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;18537:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18537:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;18585:5:0;;;:149;;-1:-1:-1;;;18585:149:0;;;;;;;;:5;:149;;;;;;18695:4;18585:149;;;;;;18721:2;18715:3;:8;18585:149;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18585:5:0;;;;:30;;18630:7;;18668:4;;18695;18715:8;18585:149;;;;;;;;;18537:37;18585:149;;;;;;;;:5;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18585:149:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18585:149:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18585:149:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;18585:149:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;15:2;7:11;;4:2;;;31:1;28;21:12;4:2;18585:149:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;18585:149:0;;421:4:-1;412:14;;;;18585:149:0;;;;;412:14:-1;18585:149:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18585:149:0;;;;;;;;;;;;17835:907;;;:::o;3105:129::-;3189:5;;;3184:16;;;;3176:50;;;;;-1:-1:-1;;;3176:50:0;;;;;;;;;;;;-1:-1:-1;;;3176:50:0;;;;;;;;;;;;;;16834:872;16902:12;16917:15;16921:7;16930:1;16917:3;:15::i;:::-;17014:16;;;17028:1;17014:16;;;16990:21;17014:16;;;;;16902:30;;-1:-1:-1;17014:16:0;;;;;;;109:14:-1;17014:16:0;88:42:-1;-1:-1;;17059:5:0;;;17041:7;;;;-1:-1:-1;;;;;;17059:5:0;;17041:7;;-1:-1:-1;17041:7:0;;;;-1:-1:-1;;;;;17041:24:0;;;:7;;;;;;;;;:24;17094:4;;17076:7;;17094:4;;;17076;;17094;;17076:7;;;;;;-1:-1:-1;;;;;17076:23:0;;;:7;;;;;;;;;;:23;;;;17110:5;;;17132;;;17110:35;;;-1:-1:-1;;;17110:35:0;;17132:5;;;17110:35;;;;;;;;;;;;;;;:5;;;;;:13;;:35;;;;;17076:7;;17110:35;;;;;;;;:5;:35;;;2:2:-1;;;;27:1;24;17:12;2:2;17110:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17110:35:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;17156:5:0;;;:70;;-1:-1:-1;;;17156:70:0;;;;;;;;:5;:70;;;;;;17210:4;17156:70;;;;;;17223:2;17217:3;:8;17156:70;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17156:5:0;;;;:30;;17187:4;;17196;;17210;17217:8;17156:70;;;;;;;;;17110:35;17156:70;;;;;;;;:5;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17156:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17156:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17156:70:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;17156:70:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;15:2;7:11;;4:2;;;31:1;28;21:12;4:2;17156:70:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;17156:70:0;;421:4:-1;412:14;;;;17156:70:0;;;;;412:14:-1;17156:70:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;-1:-1;;;;17156:70:0;;;;;;;;17286:4;;-1:-1:-1;;;17286:29:0;;17309:4;17286:29;;;;;;17268:15;;-1:-1:-1;;;;;;17286:4:0;;;;-1:-1:-1;17286:14:0;;-1:-1:-1;17286:29:0;;;;;-1:-1:-1;17286:29:0;;-1:-1:-1;17286:29:0;;;;;;;:4;:29;;;2:2:-1;;;;27:1;24;17:12;2:2;17286:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17286:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17286:29:0;17326:16;17345:5;;:30;;;-1:-1:-1;;;17345:30:0;;17369:4;17345:30;;;;;;17286:29;;-1:-1:-1;17326:16:0;;-1:-1:-1;;;;;17345:5:0;;;;:15;;:30;;;;;17286:29;;17345:30;;;;;;;:5;:30;;;2:2:-1;;;;27:1;24;17:12;2:2;17345:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17345:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17345:30:0;17386:5;;;17408;;;17386:39;;;-1:-1:-1;;;17386:39:0;;-1:-1:-1;;;;;17408:5:0;;;17386:39;;;;;;;;;;;;;;17345:30;;-1:-1:-1;17386:5:0;;;;:13;;:39;;;;;17345:30;;17386:39;;;;;;;;;;;:5;:39;;;2:2:-1;;;;27:1;24;17:12;2:2;17386:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17386:39:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;17436:4:0;;17457:5;;;17436:37;;;-1:-1:-1;;;17436:37:0;;-1:-1:-1;;;;;17457:5:0;;;17436:37;;;;;;;;;;;;;;:4;;;:12;;:37;;;;;17386:39;;17436:37;;;;;;;;:4;;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;17436:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17436:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;17484:5:0;;;;17525;;17554:4;;17484:214;;;-1:-1:-1;;;17484:214:0;;-1:-1:-1;;;;;17525:5:0;;;17484:214;;;;;;;17554:4;;;17484:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;17659:4;17484:214;;;;17685:2;17679:3;:8;17484:214;;;;;:5;;;:18;;:214;;;;;;;;;;;;;;;;:5;:214;;;2:2:-1;;;;27:1;24;17:12;2:2;17484:214:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17484:214:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;2971:128:0;3055:5;;;3050:16;;;;3042:49;;;;;-1:-1:-1;;;3042:49:0;;;;;;;;;;;;-1:-1:-1;;;3042:49:0;;;;;;;;;;;;;
Swarm Source
ipfs://5d78c8bfac43325139729d1133484204b57ca93624935908b44ee86129083883
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.876985 | 34.6724 | $30.41 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.