Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Latest 15 from a total of 15 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw Token | 10893139 | 2008 days ago | IN | 0 ETH | 0.00469482 | ||||
| Withdraw Token | 8596876 | 2371 days ago | IN | 0 ETH | 0.00023839 | ||||
| Withdraw Token | 8499095 | 2386 days ago | IN | 0 ETH | 0.00013244 | ||||
| Withdraw Token | 8455060 | 2393 days ago | IN | 0 ETH | 0.00008101 | ||||
| Withdraw Token | 8394133 | 2403 days ago | IN | 0 ETH | 0.00028077 | ||||
| Withdraw Token | 8363397 | 2407 days ago | IN | 0 ETH | 0.00008211 | ||||
| Withdraw Token | 8350449 | 2409 days ago | IN | 0 ETH | 0.00008211 | ||||
| Withdraw Token | 8296699 | 2418 days ago | IN | 0 ETH | 0.00010698 | ||||
| Withdraw Token | 8240165 | 2427 days ago | IN | 0 ETH | 0.00002674 | ||||
| Withdraw Token | 8207627 | 2432 days ago | IN | 0 ETH | 0.00002674 | ||||
| Withdraw Token | 8175935 | 2436 days ago | IN | 0 ETH | 0.00008211 | ||||
| Withdraw Token | 8169356 | 2438 days ago | IN | 0 ETH | 0.00013508 | ||||
| Withdraw Token | 8163006 | 2439 days ago | IN | 0 ETH | 0.0005324 | ||||
| Withdraw Token | 8138623 | 2442 days ago | IN | 0 ETH | 0.00003064 | ||||
| Withdraw Token | 8111674 | 2447 days ago | IN | 0 ETH | 0.0001086 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 8597422 | 2371 days ago | 0.04744149 ETH | ||||
| - | 8597422 | 2371 days ago | 0.04744149 ETH | ||||
| - | 8596952 | 2371 days ago | 0.57623416 ETH | ||||
| - | 8596952 | 2371 days ago | 0.57623416 ETH | ||||
| - | 8596251 | 2371 days ago | 0.94792021 ETH | ||||
| - | 8596251 | 2371 days ago | 0.94792021 ETH | ||||
| - | 8593487 | 2372 days ago | 0.2298451 ETH | ||||
| - | 8593487 | 2372 days ago | 0.2298451 ETH | ||||
| - | 8593136 | 2372 days ago | 0.363 ETH | ||||
| - | 8593136 | 2372 days ago | 0.363 ETH | ||||
| - | 8592268 | 2372 days ago | 0.55765359 ETH | ||||
| - | 8592268 | 2372 days ago | 0.55765359 ETH | ||||
| - | 8589811 | 2372 days ago | 0.03641031 ETH | ||||
| - | 8589811 | 2372 days ago | 0.03641031 ETH | ||||
| - | 8589574 | 2372 days ago | 2.28187765 ETH | ||||
| - | 8589574 | 2372 days ago | 2.28187765 ETH | ||||
| - | 8589249 | 2372 days ago | 10 ETH | ||||
| - | 8589249 | 2372 days ago | 10 ETH | ||||
| - | 8589249 | 2372 days ago | 10 ETH | ||||
| - | 8589249 | 2372 days ago | 10 ETH | ||||
| - | 8589249 | 2372 days ago | 40 ETH | ||||
| - | 8588160 | 2372 days ago | 2 ETH | ||||
| - | 8588160 | 2372 days ago | 2 ETH | ||||
| - | 8588031 | 2372 days ago | 1.37688894 ETH | ||||
| - | 8588031 | 2372 days ago | 1.37688894 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
SplitSwap
Compiler Version
v0.5.8+commit.23d335f2
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2019-07-02
*/
pragma solidity ^0.5.7;
interface TokenInterface {
function allowance(address, address) external view returns (uint);
function balanceOf(address) external view returns (uint);
function approve(address, uint) external;
function transfer(address, uint) external returns (bool);
function transferFrom(address, address, uint) external returns (bool);
function deposit() external payable;
function withdraw(uint) external;
}
interface UniswapExchange {
function getEthToTokenInputPrice(uint ethSold) external view returns (uint tokenBought);
function getTokenToEthInputPrice(uint tokenSold) external view returns (uint ethBought);
function ethToTokenSwapInput(uint minTokens, uint deadline) external payable returns (uint tokenBought);
function tokenToEthSwapInput(uint tokenSold, uint minEth, uint deadline) external returns (uint ethBought);
}
interface KyberInterface {
function trade(
address src,
uint srcAmount,
address dest,
address destAddress,
uint maxDestAmount,
uint minConversionRate,
address walletId
) external payable returns (uint);
function getExpectedRate(
address src,
address dest,
uint srcQty
) external view returns (uint, uint);
}
interface Eth2DaiInterface {
function getBuyAmount(address dest, address src, uint srcAmt) external view returns(uint);
function getPayAmount(address src, address dest, uint destAmt) external view returns (uint);
function sellAllAmount(
address src,
uint srcAmt,
address dest,
uint minDest
) external returns (uint destAmt);
function buyAllAmount(
address dest,
uint destAmt,
address src,
uint maxSrc
) external returns (uint srcAmt);
}
contract DSMath {
function add(uint x, uint y) internal pure returns (uint z) {
require((z = x + y) >= x, "math-not-safe");
}
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, "math-not-safe");
}
uint constant WAD = 10 ** 18;
uint constant RAY = 10 ** 27;
function rmul(uint x, uint y) internal pure returns (uint z) {
z = add(mul(x, y), RAY / 2) / RAY;
}
function rdiv(uint x, uint y) internal pure returns (uint z) {
z = add(mul(x, RAY), y / 2) / y;
}
function wmul(uint x, uint y) internal pure returns (uint z) {
z = add(mul(x, y), WAD / 2) / WAD;
}
function wdiv(uint x, uint y) internal pure returns (uint z) {
z = add(mul(x, WAD), y / 2) / y;
}
}
contract Helper is DSMath {
address public eth2daiAddr = 0x39755357759cE0d7f32dC8dC45414CCa409AE24e;
address public uniswapAddr = 0x09cabEC1eAd1c0Ba254B09efb3EE13841712bE14; // Uniswap DAI exchange
address public kyberAddr = 0x818E6FECD516Ecc3849DAf6845e3EC868087B755;
address public ethAddr = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
address public wethAddr = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
address public daiAddr = 0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359;
address public adminOne = 0xa7615CD307F323172331865181DC8b80a2834324;
address public adminTwo = 0x7284a8451d9a0e7Dc62B3a71C0593eA2eC5c5638;
uint public maxSplitAmtEth = 60000000000000000000;
uint public maxSplitAmtDai = 20000000000000000000000;
uint public cut = 997500000000000000; // 0.25% charge
uint public minDai = 200000000000000000000; // DAI < 200 swap with Kyber or Uniswap
uint public minEth = 1000000000000000000; // ETH < 1 swap with Kyber or Uniswap
function setAllowance(TokenInterface _token, address _spender) internal {
if (_token.allowance(address(this), _spender) != uint(-1)) {
_token.approve(_spender, uint(-1));
}
}
modifier isAdmin {
require(msg.sender == adminOne || msg.sender == adminTwo, "Not an Admin");
_;
}
}
contract AdminStuffs is Helper {
function setSplitEth(uint amt) public isAdmin {
maxSplitAmtEth = amt;
}
function setSplitDai(uint amt) public isAdmin {
maxSplitAmtDai = amt;
}
function withdrawToken(address token) public isAdmin {
uint daiBal = TokenInterface(token).balanceOf(address(this));
TokenInterface(token).transfer(msg.sender, daiBal);
}
function withdrawEth() public payable isAdmin {
msg.sender.transfer(address(this).balance);
}
function changeFee(uint amt) public isAdmin {
if (amt > 997000000000000000) {
cut = 997000000000000000; // maximum fees can be 0.3%. Minimum 0%
} else {
cut = amt;
}
}
function changeMinEth(uint amt) public isAdmin {
minEth = amt;
}
function changeMinDai(uint amt) public isAdmin {
minDai = amt;
}
}
contract SplitHelper is AdminStuffs {
function getBest(address src, address dest, uint srcAmt) public view returns (uint bestExchange, uint destAmt) {
uint finalSrcAmt = srcAmt;
if (src == daiAddr) {
finalSrcAmt = wmul(srcAmt, cut);
}
uint eth2DaiPrice = getRateEth2Dai(src, dest, finalSrcAmt);
uint kyberPrice = getRateKyber(src, dest, finalSrcAmt);
uint uniswapPrice = getRateUniswap(src, dest, finalSrcAmt);
if (eth2DaiPrice > kyberPrice && eth2DaiPrice > uniswapPrice) {
destAmt = eth2DaiPrice;
bestExchange = 0;
} else if (kyberPrice > eth2DaiPrice && kyberPrice > uniswapPrice) {
destAmt = kyberPrice;
bestExchange = 1;
} else {
destAmt = uniswapPrice;
bestExchange = 2;
}
if (dest == daiAddr) {
destAmt = wmul(destAmt, cut);
}
require(destAmt != 0, "Dest Amt = 0");
}
function getBestUniswapKyber(address src, address dest, uint srcAmt) public view returns (uint bestExchange, uint destAmt) {
uint finalSrcAmt = srcAmt;
if (src == daiAddr) {
finalSrcAmt = wmul(srcAmt, cut);
}
uint kyberPrice = getRateKyber(src, dest, finalSrcAmt);
uint uniswapPrice = getRateUniswap(src, dest, finalSrcAmt);
if (kyberPrice >= uniswapPrice) {
destAmt = kyberPrice;
bestExchange = 1;
} else {
destAmt = uniswapPrice;
bestExchange = 2;
}
if (dest == daiAddr) {
destAmt = wmul(destAmt, cut);
}
require(destAmt != 0, "Dest Amt = 0");
}
function getRateEth2Dai(address src, address dest, uint srcAmt) internal view returns (uint destAmt) {
if (src == ethAddr) {
destAmt = Eth2DaiInterface(eth2daiAddr).getBuyAmount(dest, wethAddr, srcAmt);
} else if (dest == ethAddr) {
destAmt = Eth2DaiInterface(eth2daiAddr).getBuyAmount(wethAddr, src, srcAmt);
}
}
function getRateKyber(address src, address dest, uint srcAmt) internal view returns (uint destAmt) {
(uint kyberPrice,) = KyberInterface(kyberAddr).getExpectedRate(src, dest, srcAmt);
destAmt = wmul(srcAmt, kyberPrice);
}
function getRateUniswap(address src, address dest, uint srcAmt) internal view returns (uint destAmt) {
if (src == ethAddr) {
destAmt = UniswapExchange(uniswapAddr).getEthToTokenInputPrice(srcAmt);
} else if (dest == ethAddr) {
destAmt = UniswapExchange(uniswapAddr).getTokenToEthInputPrice(srcAmt);
}
}
}
contract SplitResolver is SplitHelper {
event LogEthToDai(address user, uint srcAmt, uint destAmt);
event LogDaiToEth(address user, uint srcAmt, uint destAmt);
function swapEth2Dai(address src, address dest, uint srcAmt) internal returns (uint destAmt) {
if (src == wethAddr) {
TokenInterface(wethAddr).deposit.value(srcAmt)();
}
destAmt = Eth2DaiInterface(eth2daiAddr).sellAllAmount(
src,
srcAmt,
dest,
0
);
}
function swapKyber(address src, address dest, uint srcAmt) internal returns (uint destAmt) {
uint ethAmt = src == ethAddr ? srcAmt : 0;
destAmt = KyberInterface(kyberAddr).trade.value(ethAmt)(
src,
srcAmt,
dest,
address(this),
2**255,
0,
adminOne
);
}
function swapUniswap(address src, address dest, uint srcAmt) internal returns (uint destAmt) {
if (src == ethAddr) {
destAmt = UniswapExchange(uniswapAddr).ethToTokenSwapInput.value(srcAmt)(1, block.timestamp + 1);
} else if (dest == ethAddr) {
destAmt = UniswapExchange(uniswapAddr).tokenToEthSwapInput(srcAmt, 1, block.timestamp + 1);
}
}
function ethToDaiBestSwap(uint bestExchange, uint amtToSwap) internal returns (uint destAmt) {
if (bestExchange == 0) {
destAmt += swapEth2Dai(wethAddr, daiAddr, amtToSwap);
} else if (bestExchange == 1) {
destAmt += swapKyber(ethAddr, daiAddr, amtToSwap);
} else {
destAmt += swapUniswap(ethAddr, daiAddr, amtToSwap);
}
}
function ethToDaiLoop(uint srcAmt, uint splitAmt, uint finalAmt) internal returns (uint destAmt) {
if (srcAmt > splitAmt) {
uint amtToSwap = splitAmt;
uint nextSrcAmt = srcAmt - splitAmt;
(uint bestExchange,) = getBest(ethAddr, daiAddr, amtToSwap);
uint daiBought = finalAmt;
daiBought += ethToDaiBestSwap(bestExchange, amtToSwap);
destAmt = ethToDaiLoop(nextSrcAmt, splitAmt, daiBought);
} else if (srcAmt > minEth) {
(uint bestExchange,) = getBest(ethAddr, daiAddr, srcAmt);
destAmt = finalAmt;
destAmt += ethToDaiBestSwap(bestExchange, srcAmt);
} else if (srcAmt > 0) {
(uint bestExchange,) = getBestUniswapKyber(ethAddr, daiAddr, srcAmt);
destAmt = finalAmt;
destAmt += ethToDaiBestSwap(bestExchange, srcAmt);
} else {
destAmt = finalAmt;
}
}
function daiToEthBestSwap(uint bestExchange, uint amtToSwap) internal returns (uint destAmt) {
if (bestExchange == 0) {
destAmt += swapEth2Dai(daiAddr, wethAddr, amtToSwap);
} else if (bestExchange == 1) {
destAmt += swapKyber(daiAddr, ethAddr, amtToSwap);
} else {
destAmt += swapUniswap(daiAddr, ethAddr, amtToSwap);
}
}
function daiToEthLoop(uint srcAmt, uint splitAmt, uint finalAmt) internal returns (uint destAmt) {
if (srcAmt > splitAmt) {
uint amtToSwap = splitAmt;
uint nextSrcAmt = srcAmt - splitAmt;
(uint bestExchange,) = getBest(daiAddr, ethAddr, amtToSwap);
uint ethBought = finalAmt;
ethBought += daiToEthBestSwap(bestExchange, amtToSwap);
destAmt = daiToEthLoop(nextSrcAmt, splitAmt, ethBought);
} else if (srcAmt > minDai) {
(uint bestExchange,) = getBest(daiAddr, ethAddr, srcAmt);
destAmt = finalAmt;
destAmt += daiToEthBestSwap(bestExchange, srcAmt);
} else if (srcAmt > 0) {
(uint bestExchange,) = getBestUniswapKyber(daiAddr, ethAddr, srcAmt);
destAmt = finalAmt;
destAmt += daiToEthBestSwap(bestExchange, srcAmt);
} else {
destAmt = finalAmt;
}
}
function wethToEth() internal {
TokenInterface wethContract = TokenInterface(wethAddr);
uint balanceWeth = wethContract.balanceOf(address(this));
if (balanceWeth > 0) {
wethContract.withdraw(balanceWeth);
}
}
}
contract Swap is SplitResolver {
function ethToDaiSwap(uint splitAmt, uint slippageAmt) public payable returns (uint destAmt) { // srcAmt = msg.value
require(maxSplitAmtEth >= splitAmt, "split amt > max");
destAmt = ethToDaiLoop(msg.value, splitAmt, 0);
destAmt = wmul(destAmt, cut);
require(destAmt > slippageAmt, "Dest Amt < slippage");
require(TokenInterface(daiAddr).transfer(msg.sender, destAmt), "Not enough DAI to transfer");
emit LogEthToDai(msg.sender, msg.value, destAmt);
}
function daiToEthSwap(uint srcAmt, uint splitAmt, uint slippageAmt) public returns (uint destAmt) {
require(maxSplitAmtDai >= splitAmt, "split amt > max");
require(TokenInterface(daiAddr).transferFrom(msg.sender, address(this), srcAmt), "Token Approved?");
uint finalSrcAmt = wmul(srcAmt, cut);
destAmt = daiToEthLoop(finalSrcAmt, splitAmt, 0);
wethToEth();
require(destAmt > slippageAmt, "Dest Amt < slippage");
msg.sender.transfer(destAmt);
emit LogDaiToEth(msg.sender, finalSrcAmt, destAmt);
}
}
contract SplitSwap is Swap {
constructor() public {
setAllowance(TokenInterface(daiAddr), eth2daiAddr);
setAllowance(TokenInterface(daiAddr), kyberAddr);
setAllowance(TokenInterface(daiAddr), uniswapAddr);
setAllowance(TokenInterface(wethAddr), eth2daiAddr);
setAllowance(TokenInterface(wethAddr), wethAddr);
}
function() external payable {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"uniswapAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"eth2daiAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminTwo","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"splitAmt","type":"uint256"},{"name":"slippageAmt","type":"uint256"}],"name":"ethToDaiSwap","outputs":[{"name":"destAmt","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"amt","type":"uint256"}],"name":"setSplitDai","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amt","type":"uint256"}],"name":"changeMinEth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minDai","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amt","type":"uint256"}],"name":"changeFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"dest","type":"address"},{"name":"srcAmt","type":"uint256"}],"name":"getBest","outputs":[{"name":"bestExchange","type":"uint256"},{"name":"destAmt","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"daiAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxSplitAmtEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wethAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"srcAmt","type":"uint256"},{"name":"splitAmt","type":"uint256"},{"name":"slippageAmt","type":"uint256"}],"name":"daiToEthSwap","outputs":[{"name":"destAmt","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawEth","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"kyberAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amt","type":"uint256"}],"name":"setSplitEth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"dest","type":"address"},{"name":"srcAmt","type":"uint256"}],"name":"getBestUniswapKyber","outputs":[{"name":"bestExchange","type":"uint256"},{"name":"destAmt","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ethAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminOne","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cut","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxSplitAmtDai","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amt","type":"uint256"}],"name":"changeMinDai","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"srcAmt","type":"uint256"},{"indexed":false,"name":"destAmt","type":"uint256"}],"name":"LogEthToDai","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"srcAmt","type":"uint256"},{"indexed":false,"name":"destAmt","type":"uint256"}],"name":"LogDaiToEth","type":"event"}]Contract Creation Code
60806040527339755357759ce0d7f32dc8dc45414cca409ae24e6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507309cabec1ead1c0ba254b09efb3ee13841712be14600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073818e6fecd516ecc3849daf6845e3ec868087b755600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507389d24a6b4ccb1b6faa2625fe562bdd9a23260359600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a7615cd307f323172331865181dc8b80a2834324600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737284a8451d9a0e7dc62b3a71c0593ea2ec5c5638600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550680340aad21b3b70000060085569043c33c1937564800000600955670dd7d4f70b73c000600a55680ad78ebc5ac6200000600b55670de0b6b3a7640000600c55348015620002f857600080fd5b506200034e600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620004ab60201b60201c565b620003a4600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620004ab60201b60201c565b620003fa600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620004ab60201b60201c565b6200044f600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620004ab60201b60201c565b620004a5600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620004ab60201b60201c565b62000687565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156200057e57600080fd5b505afa15801562000593573d6000803e3d6000fd5b505050506040513d6020811015620005aa57600080fd5b81019080805190602001909291905050501462000683578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156200066957600080fd5b505af11580156200067e573d6000803e3d6000fd5b505050505b5050565b61324480620006976000396000f3fe60806040526004361061014b5760003560e01c806389476069116100b6578063bbf646c21161006f578063bbf646c2146106cf578063d5d3b30914610726578063e6fd604c1461077d578063f1fb3ace146107a8578063f329b52c146107d3578063f349d6b1146107fe5761014b565b806389476069146104e95780638aec35dc1461053a578063a0ef91df1461059d578063a7c4dccf146105a7578063af003b5c146105fe578063b4ed9295146106395761014b565b80635cf28fa4116101085780635cf28fa4146103145780636a1db1bf1461033f57806371396f6d1461037a57806374fa0a63146104105780637723eda8146104675780637d5aa5f4146104925761014b565b8063128a8b051461014d57806312d327c3146101a4578063159b523b146101fb57806323864c5214610252578063292ef8d01461029e5780635ca1cacc146102d9575b005b34801561015957600080fd5b50610162610839565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101b057600080fd5b506101b961085f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b50610210610884565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102886004803603604081101561026857600080fd5b8101908080359060200190929190803590602001909291905050506108aa565b6040518082815260200191505060405180910390f35b3480156102aa57600080fd5b506102d7600480360360208110156102c157600080fd5b8101908080359060200190929190505050610b84565b005b3480156102e557600080fd5b50610312600480360360208110156102fc57600080fd5b8101908080359060200190929190505050610ca9565b005b34801561032057600080fd5b50610329610dce565b6040518082815260200191505060405180910390f35b34801561034b57600080fd5b506103786004803603602081101561036257600080fd5b8101908080359060200190929190505050610dd4565b005b34801561038657600080fd5b506103f36004803603606081101561039d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f1e565b604051808381526020018281526020019250505060405180910390f35b34801561041c57600080fd5b506104256110e7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561047357600080fd5b5061047c61110d565b6040518082815260200191505060405180910390f35b34801561049e57600080fd5b506104a7611113565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104f557600080fd5b506105386004803603602081101561050c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611139565b005b34801561054657600080fd5b506105876004803603606081101561055d57600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506113d7565b6040518082815260200191505060405180910390f35b6105a5611738565b005b3480156105b357600080fd5b506105bc6118b3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060a57600080fd5b506106376004803603602081101561062157600080fd5b81019080803590602001909291905050506118d9565b005b34801561064557600080fd5b506106b26004803603606081101561065c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119fe565b604051808381526020018281526020019250505060405180910390f35b3480156106db57600080fd5b506106e4611b8b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561073257600080fd5b5061073b611bb1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561078957600080fd5b50610792611bd7565b6040518082815260200191505060405180910390f35b3480156107b457600080fd5b506107bd611bdd565b6040518082815260200191505060405180910390f35b3480156107df57600080fd5b506107e8611be3565b6040518082815260200191505060405180910390f35b34801561080a57600080fd5b506108376004803603602081101561082157600080fd5b8101908080359060200190929190505050611be9565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000826008541015610924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f73706c697420616d74203e206d6178000000000000000000000000000000000081525060200191505060405180910390fd5b61093034846000611d0e565b905061093e81600a54611e97565b90508181116109b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4465737420416d74203c20736c6970706167650000000000000000000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610a5e57600080fd5b505af1158015610a72573d6000803e3d6000fd5b505050506040513d6020811015610a8857600080fd5b8101908080519060200190929190505050610b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4e6f7420656e6f7567682044414920746f207472616e7366657200000000000081525060200191505060405180910390fd5b7f8827628911d43568c4983b60f54521933d6084d09be5bdeebbf57f15fb4f5d45333483604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a192915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610c2d5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610c9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420616e2041646d696e000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060098190555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610d525750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610dc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420616e2041646d696e000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600c8190555050565b600b5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e7d5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610eef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420616e2041646d696e000000000000000000000000000000000000000081525060200191505060405180910390fd5b670dd60e37b9108000811115610f1357670dd60e37b9108000600a81905550610f1b565b80600a819055505b50565b6000806000839050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610f8b57610f8884600a54611e97565b90505b6000610f98878784611ed7565b90506000610fa7888885612205565b90506000610fb689898661233e565b90508183118015610fc657508083115b15610fd75782945060009550610fff565b8282118015610fe557508082115b15610ff65781945060019550610ffe565b809450600295505b5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614156110645761106185600a54611e97565b94505b60008514156110db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4465737420416d74203d2030000000000000000000000000000000000000000081525060200191505060405180910390fd5b50505050935093915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806111e25750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420616e2041646d696e000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156112d357600080fd5b505afa1580156112e7573d6000803e3d6000fd5b505050506040513d60208110156112fd57600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561139757600080fd5b505af11580156113ab573d6000803e3d6000fd5b505050506040513d60208110156113c157600080fd5b8101908080519060200190929190505050505050565b6000826009541015611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f73706c697420616d74203e206d6178000000000000000000000000000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561152e57600080fd5b505af1158015611542573d6000803e3d6000fd5b505050506040513d602081101561155857600080fd5b81019080805190602001909291905050506115db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f546f6b656e20417070726f7665643f000000000000000000000000000000000081525060200191505060405180910390fd5b60006115e985600a54611e97565b90506115f78185600061255a565b91506116016126e3565b828211611676576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4465737420416d74203c20736c6970706167650000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156116bc573d6000803e3d6000fd5b507fd5df263f92a6f9d603b0d7a326840c0ba5a9ccda4f9b38fc244876fa24de7de1338284604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117e15750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420616e2041646d696e000000000000000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156118b0573d6000803e3d6000fd5b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806119825750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6119f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420616e2041646d696e000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060088190555050565b6000806000839050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415611a6b57611a6884600a54611e97565b90505b6000611a78878784612205565b90506000611a8788888561233e565b9050808210611a9c5781935060019450611aa4565b809350600294505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415611b0957611b0684600a54611e97565b93505b6000841415611b80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4465737420416d74203d2030000000000000000000000000000000000000000081525060200191505060405180910390fd5b505050935093915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b600c5481565b60095481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611c925750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611d04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420616e2041646d696e000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600b8190555050565b600082841115611da1576000839050600084860390506000611d75600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685610f1e565b5090506000859050611d87828561283f565b81019050611d96838883611d0e565b945050505050611e90565b600c54841115611e16576000611dfc600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687610f1e565b509050829150611e0c818661283f565b8201915050611e8f565b6000841115611e8a576000611e70600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876119fe565b509050829150611e80818661283f565b8201915050611e8e565b8190505b5b5b9392505050565b6000670de0b6b3a7640000611ec7611eaf858561295d565b6002670de0b6b3a764000081611ec157fe5b046129f2565b81611ece57fe5b04905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561206d576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663144a275284600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b15801561202b57600080fd5b505afa15801561203f573d6000803e3d6000fd5b505050506040513d602081101561205557600080fd5b810190808051906020019092919050505090506121fe565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121fd576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663144a2752600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b1580156121bf57600080fd5b505afa1580156121d3573d6000803e3d6000fd5b505050506040513d60208110156121e957600080fd5b810190808051906020019092919050505090505b5b9392505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663809a9e558686866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604080518083038186803b1580156122e257600080fd5b505afa1580156122f6573d6000803e3d6000fd5b505050506040513d604081101561230c57600080fd5b8101908080519060200190929190805190602001909291905050505090506123348382611e97565b9150509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561244b57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd7724c3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561240957600080fd5b505afa15801561241d573d6000803e3d6000fd5b505050506040513d602081101561243357600080fd5b81019080805190602001909291905050509050612553565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561255257600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166395b68fe7836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561251457600080fd5b505afa158015612528573d6000803e3d6000fd5b505050506040513d602081101561253e57600080fd5b810190808051906020019092919050505090505b5b9392505050565b6000828411156125ed5760008390506000848603905060006125c1600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685610f1e565b50905060008590506125d38285612a75565b810190506125e283888361255a565b9450505050506126dc565b600b54841115612662576000612648600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687610f1e565b5090508291506126588186612a75565b82019150506126db565b60008411156126d65760006126bc600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876119fe565b5090508291506126cc8186612a75565b82019150506126da565b8190505b5b5b9392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561278957600080fd5b505afa15801561279d573d6000803e3d6000fd5b505050506040513d60208110156127b357600080fd5b81019080805190602001909291905050509050600081111561283b578173ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561282257600080fd5b505af1158015612836573d6000803e3d6000fd5b505050505b5050565b6000808314156128a157612898600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b93565b81019050612957565b6001831415612902576128f9600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d98565b81019050612956565b612951600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612fd9565b810190505b5b92915050565b60008082148061297a575082828385029250828161297757fe5b04145b6129ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6d6174682d6e6f742d736166650000000000000000000000000000000000000081525060200191505060405180910390fd5b92915050565b6000828284019150811015612a6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6d6174682d6e6f742d736166650000000000000000000000000000000000000081525060200191505060405180910390fd5b92915050565b600080831415612ad757612ace600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b93565b81019050612b8d565b6001831415612b3857612b2f600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d98565b81019050612b8c565b612b87600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612fd9565b810190505b5b92915050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612c6f57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015612c5557600080fd5b505af1158015612c69573d6000803e3d6000fd5b50505050505b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630621b4f685848660006040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050602060405180830381600087803b158015612d5457600080fd5b505af1158015612d68573d6000803e3d6000fd5b505050506040513d6020811015612d7e57600080fd5b810190808051906020019092919050505090509392505050565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612df7576000612df9565b825b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb3c28c782878688307f80000000000000000000000000000000000000000000000000000000000000006000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518963ffffffff1660e01b8152600401808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019750505050505050506020604051808303818588803b158015612f9357600080fd5b505af1158015612fa7573d6000803e3d6000fd5b50505050506040513d6020811015612fbe57600080fd5b81019080805190602001909291905050509150509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156130f457600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f39b5b9b8360018042016040518463ffffffff1660e01b815260040180838152602001828152602001925050506020604051808303818588803b1580156130b157600080fd5b505af11580156130c5573d6000803e3d6000fd5b50505050506040513d60208110156130dc57600080fd5b81019080805190602001909291905050509050613211565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561321057600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166395e3c50b8360018042016040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050602060405180830381600087803b1580156131d257600080fd5b505af11580156131e6573d6000803e3d6000fd5b505050506040513d60208110156131fc57600080fd5b810190808051906020019092919050505090505b5b939250505056fea165627a7a723058202d21ae3504f89ab7e169706787394b14c5fad7511c36714db61d3fa7feeeacfc0029
Deployed Bytecode
0x60806040526004361061014b5760003560e01c806389476069116100b6578063bbf646c21161006f578063bbf646c2146106cf578063d5d3b30914610726578063e6fd604c1461077d578063f1fb3ace146107a8578063f329b52c146107d3578063f349d6b1146107fe5761014b565b806389476069146104e95780638aec35dc1461053a578063a0ef91df1461059d578063a7c4dccf146105a7578063af003b5c146105fe578063b4ed9295146106395761014b565b80635cf28fa4116101085780635cf28fa4146103145780636a1db1bf1461033f57806371396f6d1461037a57806374fa0a63146104105780637723eda8146104675780637d5aa5f4146104925761014b565b8063128a8b051461014d57806312d327c3146101a4578063159b523b146101fb57806323864c5214610252578063292ef8d01461029e5780635ca1cacc146102d9575b005b34801561015957600080fd5b50610162610839565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101b057600080fd5b506101b961085f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b50610210610884565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102886004803603604081101561026857600080fd5b8101908080359060200190929190803590602001909291905050506108aa565b6040518082815260200191505060405180910390f35b3480156102aa57600080fd5b506102d7600480360360208110156102c157600080fd5b8101908080359060200190929190505050610b84565b005b3480156102e557600080fd5b50610312600480360360208110156102fc57600080fd5b8101908080359060200190929190505050610ca9565b005b34801561032057600080fd5b50610329610dce565b6040518082815260200191505060405180910390f35b34801561034b57600080fd5b506103786004803603602081101561036257600080fd5b8101908080359060200190929190505050610dd4565b005b34801561038657600080fd5b506103f36004803603606081101561039d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f1e565b604051808381526020018281526020019250505060405180910390f35b34801561041c57600080fd5b506104256110e7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561047357600080fd5b5061047c61110d565b6040518082815260200191505060405180910390f35b34801561049e57600080fd5b506104a7611113565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104f557600080fd5b506105386004803603602081101561050c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611139565b005b34801561054657600080fd5b506105876004803603606081101561055d57600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506113d7565b6040518082815260200191505060405180910390f35b6105a5611738565b005b3480156105b357600080fd5b506105bc6118b3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060a57600080fd5b506106376004803603602081101561062157600080fd5b81019080803590602001909291905050506118d9565b005b34801561064557600080fd5b506106b26004803603606081101561065c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119fe565b604051808381526020018281526020019250505060405180910390f35b3480156106db57600080fd5b506106e4611b8b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561073257600080fd5b5061073b611bb1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561078957600080fd5b50610792611bd7565b6040518082815260200191505060405180910390f35b3480156107b457600080fd5b506107bd611bdd565b6040518082815260200191505060405180910390f35b3480156107df57600080fd5b506107e8611be3565b6040518082815260200191505060405180910390f35b34801561080a57600080fd5b506108376004803603602081101561082157600080fd5b8101908080359060200190929190505050611be9565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000826008541015610924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f73706c697420616d74203e206d6178000000000000000000000000000000000081525060200191505060405180910390fd5b61093034846000611d0e565b905061093e81600a54611e97565b90508181116109b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4465737420416d74203c20736c6970706167650000000000000000000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610a5e57600080fd5b505af1158015610a72573d6000803e3d6000fd5b505050506040513d6020811015610a8857600080fd5b8101908080519060200190929190505050610b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4e6f7420656e6f7567682044414920746f207472616e7366657200000000000081525060200191505060405180910390fd5b7f8827628911d43568c4983b60f54521933d6084d09be5bdeebbf57f15fb4f5d45333483604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a192915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610c2d5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610c9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420616e2041646d696e000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060098190555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610d525750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610dc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420616e2041646d696e000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600c8190555050565b600b5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e7d5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610eef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420616e2041646d696e000000000000000000000000000000000000000081525060200191505060405180910390fd5b670dd60e37b9108000811115610f1357670dd60e37b9108000600a81905550610f1b565b80600a819055505b50565b6000806000839050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610f8b57610f8884600a54611e97565b90505b6000610f98878784611ed7565b90506000610fa7888885612205565b90506000610fb689898661233e565b90508183118015610fc657508083115b15610fd75782945060009550610fff565b8282118015610fe557508082115b15610ff65781945060019550610ffe565b809450600295505b5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614156110645761106185600a54611e97565b94505b60008514156110db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4465737420416d74203d2030000000000000000000000000000000000000000081525060200191505060405180910390fd5b50505050935093915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806111e25750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420616e2041646d696e000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156112d357600080fd5b505afa1580156112e7573d6000803e3d6000fd5b505050506040513d60208110156112fd57600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561139757600080fd5b505af11580156113ab573d6000803e3d6000fd5b505050506040513d60208110156113c157600080fd5b8101908080519060200190929190505050505050565b6000826009541015611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f73706c697420616d74203e206d6178000000000000000000000000000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561152e57600080fd5b505af1158015611542573d6000803e3d6000fd5b505050506040513d602081101561155857600080fd5b81019080805190602001909291905050506115db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f546f6b656e20417070726f7665643f000000000000000000000000000000000081525060200191505060405180910390fd5b60006115e985600a54611e97565b90506115f78185600061255a565b91506116016126e3565b828211611676576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4465737420416d74203c20736c6970706167650000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156116bc573d6000803e3d6000fd5b507fd5df263f92a6f9d603b0d7a326840c0ba5a9ccda4f9b38fc244876fa24de7de1338284604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117e15750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420616e2041646d696e000000000000000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156118b0573d6000803e3d6000fd5b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806119825750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6119f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420616e2041646d696e000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060088190555050565b6000806000839050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415611a6b57611a6884600a54611e97565b90505b6000611a78878784612205565b90506000611a8788888561233e565b9050808210611a9c5781935060019450611aa4565b809350600294505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415611b0957611b0684600a54611e97565b93505b6000841415611b80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4465737420416d74203d2030000000000000000000000000000000000000000081525060200191505060405180910390fd5b505050935093915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b600c5481565b60095481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611c925750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611d04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420616e2041646d696e000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600b8190555050565b600082841115611da1576000839050600084860390506000611d75600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685610f1e565b5090506000859050611d87828561283f565b81019050611d96838883611d0e565b945050505050611e90565b600c54841115611e16576000611dfc600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687610f1e565b509050829150611e0c818661283f565b8201915050611e8f565b6000841115611e8a576000611e70600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876119fe565b509050829150611e80818661283f565b8201915050611e8e565b8190505b5b5b9392505050565b6000670de0b6b3a7640000611ec7611eaf858561295d565b6002670de0b6b3a764000081611ec157fe5b046129f2565b81611ece57fe5b04905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561206d576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663144a275284600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b15801561202b57600080fd5b505afa15801561203f573d6000803e3d6000fd5b505050506040513d602081101561205557600080fd5b810190808051906020019092919050505090506121fe565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121fd576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663144a2752600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b1580156121bf57600080fd5b505afa1580156121d3573d6000803e3d6000fd5b505050506040513d60208110156121e957600080fd5b810190808051906020019092919050505090505b5b9392505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663809a9e558686866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604080518083038186803b1580156122e257600080fd5b505afa1580156122f6573d6000803e3d6000fd5b505050506040513d604081101561230c57600080fd5b8101908080519060200190929190805190602001909291905050505090506123348382611e97565b9150509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561244b57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd7724c3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561240957600080fd5b505afa15801561241d573d6000803e3d6000fd5b505050506040513d602081101561243357600080fd5b81019080805190602001909291905050509050612553565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561255257600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166395b68fe7836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561251457600080fd5b505afa158015612528573d6000803e3d6000fd5b505050506040513d602081101561253e57600080fd5b810190808051906020019092919050505090505b5b9392505050565b6000828411156125ed5760008390506000848603905060006125c1600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685610f1e565b50905060008590506125d38285612a75565b810190506125e283888361255a565b9450505050506126dc565b600b54841115612662576000612648600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687610f1e565b5090508291506126588186612a75565b82019150506126db565b60008411156126d65760006126bc600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876119fe565b5090508291506126cc8186612a75565b82019150506126da565b8190505b5b5b9392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561278957600080fd5b505afa15801561279d573d6000803e3d6000fd5b505050506040513d60208110156127b357600080fd5b81019080805190602001909291905050509050600081111561283b578173ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561282257600080fd5b505af1158015612836573d6000803e3d6000fd5b505050505b5050565b6000808314156128a157612898600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b93565b81019050612957565b6001831415612902576128f9600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d98565b81019050612956565b612951600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612fd9565b810190505b5b92915050565b60008082148061297a575082828385029250828161297757fe5b04145b6129ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6d6174682d6e6f742d736166650000000000000000000000000000000000000081525060200191505060405180910390fd5b92915050565b6000828284019150811015612a6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6d6174682d6e6f742d736166650000000000000000000000000000000000000081525060200191505060405180910390fd5b92915050565b600080831415612ad757612ace600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b93565b81019050612b8d565b6001831415612b3857612b2f600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d98565b81019050612b8c565b612b87600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612fd9565b810190505b5b92915050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612c6f57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015612c5557600080fd5b505af1158015612c69573d6000803e3d6000fd5b50505050505b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630621b4f685848660006040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050602060405180830381600087803b158015612d5457600080fd5b505af1158015612d68573d6000803e3d6000fd5b505050506040513d6020811015612d7e57600080fd5b810190808051906020019092919050505090509392505050565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612df7576000612df9565b825b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb3c28c782878688307f80000000000000000000000000000000000000000000000000000000000000006000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518963ffffffff1660e01b8152600401808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019750505050505050506020604051808303818588803b158015612f9357600080fd5b505af1158015612fa7573d6000803e3d6000fd5b50505050506040513d6020811015612fbe57600080fd5b81019080805190602001909291905050509150509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156130f457600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f39b5b9b8360018042016040518463ffffffff1660e01b815260040180838152602001828152602001925050506020604051808303818588803b1580156130b157600080fd5b505af11580156130c5573d6000803e3d6000fd5b50505050506040513d60208110156130dc57600080fd5b81019080805190602001909291905050509050613211565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561321057600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166395e3c50b8360018042016040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050602060405180830381600087803b1580156131d257600080fd5b505af11580156131e6573d6000803e3d6000fd5b505050506040513d60208110156131fc57600080fd5b810190808051906020019092919050505090505b5b939250505056fea165627a7a723058202d21ae3504f89ab7e169706787394b14c5fad7511c36714db61d3fa7feeeacfc0029
Deployed Bytecode Sourcemap
13496:410:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2977:71;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2977:71:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2899;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2899:71:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3453:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3453:68:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12394:510;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12394:510:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4361:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4361:85:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4361:85:0;;;;;;;;;;;;;;;;;:::i;:::-;;5003:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5003:78:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5003:78:0;;;;;;;;;;;;;;;;;:::i;:::-;;3702:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3702:42:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4770:225;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4770:225:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4770:225:0;;;;;;;;;;;;;;;;;:::i;:::-;;5223:962;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5223:962:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5223:962:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;3304:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3304:67:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3528:49;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3528:49:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3229:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3229:68:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4454:193;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4454:193:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4454:193:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;12912:573;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12912:573:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12912:573:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4655:107;;;:::i;:::-;;3079:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3079:69:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4268:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4268:85:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4268:85:0;;;;;;;;;;;;;;;;;:::i;:::-;;6193:729;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6193:729:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6193:729:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;3155:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3155:67:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3378:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3378:68:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3643:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3643:36:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3791:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3791:40:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3584:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3584:52:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5089:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5089:78:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5089:78:0;;;;;;;;;;;;;;;;;:::i;:::-;;2977:71;;;;;;;;;;;;;:::o;2899:::-;;;;;;;;;;;;;:::o;3453:68::-;;;;;;;;;;;;;:::o;12394:510::-;12473:12;12546:8;12528:14;;:26;;12520:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12595:36;12608:9;12619:8;12629:1;12595:12;:36::i;:::-;12585:46;;12652:18;12657:7;12666:3;;12652:4;:18::i;:::-;12642:28;;12699:11;12689:7;:21;12681:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12768:7;;;;;;;;;;;12753:32;;;12786:10;12798:7;12753:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12753:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12753:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12753:53:0;;;;;;;;;;;;;;;;12745:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12853:43;12865:10;12877:9;12888:7;12853:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12394:510;;;;:::o;4361:85::-;4146:8;;;;;;;;;;;4132:22;;:10;:22;;;:48;;;;4172:8;;;;;;;;;;;4158:22;;:10;:22;;;4132:48;4124:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4435:3;4418:14;:20;;;;4361:85;:::o;5003:78::-;4146:8;;;;;;;;;;;4132:22;;:10;:22;;;:48;;;;4172:8;;;;;;;;;;;4158:22;;:10;:22;;;4132:48;4124:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5070:3;5061:6;:12;;;;5003:78;:::o;3702:42::-;;;;:::o;4770:225::-;4146:8;;;;;;;;;;;4132:22;;:10;:22;;;:48;;;;4172:8;;;;;;;;;;;4158:22;;:10;:22;;;4132:48;4124:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4835:18;4829:3;:24;4825:163;;;4876:18;4870:3;:24;;;;4825:163;;;4973:3;4967;:9;;;;4825:163;4770:225;:::o;5223:962::-;5301:17;5320:12;5345:16;5364:6;5345:25;;5392:7;;;;;;;;;;;5385:14;;:3;:14;;;5381:78;;;5430:17;5435:6;5443:3;;5430:4;:17::i;:::-;5416:31;;5381:78;5469:17;5489:38;5504:3;5509:4;5515:11;5489:14;:38::i;:::-;5469:58;;5538:15;5556:36;5569:3;5574:4;5580:11;5556:12;:36::i;:::-;5538:54;;5603:17;5623:38;5638:3;5643:4;5649:11;5623:14;:38::i;:::-;5603:58;;5691:10;5676:12;:25;:56;;;;;5720:12;5705;:27;5676:56;5672:372;;;5759:12;5749:22;;5801:1;5786:16;;5672:372;;;5837:12;5824:10;:25;:54;;;;;5866:12;5853:10;:25;5824:54;5820:224;;;5905:10;5895:20;;5945:1;5930:16;;5820:224;;;5989:12;5979:22;;6031:1;6016:16;;5820:224;5672:372;6066:7;;;;;;;;;;;6058:15;;:4;:15;;;6054:76;;;6100:18;6105:7;6114:3;;6100:4;:18::i;:::-;6090:28;;6054:76;6159:1;6148:7;:12;;6140:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5223:962;;;;;;;;;;:::o;3304:67::-;;;;;;;;;;;;;:::o;3528:49::-;;;;:::o;3229:68::-;;;;;;;;;;;;;:::o;4454:193::-;4146:8;;;;;;;;;;;4132:22;;:10;:22;;;:48;;;;4172:8;;;;;;;;;;;4158:22;;:10;:22;;;4132:48;4124:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4518:11;4547:5;4532:31;;;4572:4;4532:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4532:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4532:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4532:46:0;;;;;;;;;;;;;;;;4518:60;;4604:5;4589:30;;;4620:10;4632:6;4589:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4589:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4589:50:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4589:50:0;;;;;;;;;;;;;;;;;4208:1;4454:193;:::o;12912:573::-;12996:12;13047:8;13029:14;;:26;;13021:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13109:7;;;;;;;;;;;13094:36;;;13131:10;13151:4;13158:6;13094:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13094:71:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13094:71:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13094:71:0;;;;;;;;;;;;;;;;13086:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13196:16;13215:17;13220:6;13228:3;;13215:4;:17::i;:::-;13196:36;;13253:38;13266:11;13279:8;13289:1;13253:12;:38::i;:::-;13243:48;;13302:11;:9;:11::i;:::-;13342;13332:7;:21;13324:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13388:10;:19;;:28;13408:7;13388:28;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13388:28:0;13432:45;13444:10;13456:11;13469:7;13432:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12912:573;;;;;;:::o;4655:107::-;4146:8;;;;;;;;;;;4132:22;;:10;:22;;;:48;;;;4172:8;;;;;;;;;;;4158:22;;:10;:22;;;4132:48;4124:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4712:10;:19;;:42;4740:4;4732:21;;;4712:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4712:42:0;4655:107::o;3079:69::-;;;;;;;;;;;;;:::o;4268:85::-;4146:8;;;;;;;;;;;4132:22;;:10;:22;;;:48;;;;4172:8;;;;;;;;;;;4158:22;;:10;:22;;;4132:48;4124:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4342:3;4325:14;:20;;;;4268:85;:::o;6193:729::-;6283:17;6302:12;6327:16;6346:6;6327:25;;6374:7;;;;;;;;;;;6367:14;;:3;:14;;;6363:78;;;6412:17;6417:6;6425:3;;6412:4;:17::i;:::-;6398:31;;6363:78;6451:15;6469:36;6482:3;6487:4;6493:11;6469:12;:36::i;:::-;6451:54;;6516:17;6536:38;6551:3;6556:4;6562:11;6536:14;:38::i;:::-;6516:58;;6603:12;6589:10;:26;6585:196;;6642:10;6632:20;;6682:1;6667:16;;6585:196;;;6726:12;6716:22;;6768:1;6753:16;;6585:196;6803:7;;;;;;;;;;;6795:15;;:4;:15;;;6791:76;;;6837:18;6842:7;6851:3;;6837:4;:18::i;:::-;6827:28;;6791:76;6896:1;6885:7;:12;;6877:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6193:729;;;;;;;;;:::o;3155:67::-;;;;;;;;;;;;;:::o;3378:68::-;;;;;;;;;;;;;:::o;3643:36::-;;;;:::o;3791:40::-;;;;:::o;3584:52::-;;;;:::o;5089:78::-;4146:8;;;;;;;;;;;4132:22;;:10;:22;;;:48;;;;4172:8;;;;;;;;;;;4158:22;;:10;:22;;;4132:48;4124:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5156:3;5147:6;:12;;;;5089:78;:::o;9725:965::-;9808:12;9846:8;9837:6;:17;9833:850;;;9871:14;9888:8;9871:25;;9911:15;9938:8;9929:6;:17;9911:35;;9962:17;9984:36;9992:7;;;;;;;;;;;10001;;;;;;;;;;;10010:9;9984:7;:36::i;:::-;9961:59;;;10035:14;10052:8;10035:25;;10088:41;10105:12;10119:9;10088:16;:41::i;:::-;10075:54;;;;10154:45;10167:10;10179:8;10189:9;10154:12;:45::i;:::-;10144:55;;9833:850;;;;;;;10230:6;;10221;:15;10217:466;;;10254:17;10276:33;10284:7;;;;;;;;;;;10293;;;;;;;;;;;10302:6;10276:7;:33::i;:::-;10253:56;;;10334:8;10324:18;;10368:38;10385:12;10399:6;10368:16;:38::i;:::-;10357:49;;;;10217:466;;;;10437:1;10428:6;:10;10424:259;;;10456:17;10478:45;10498:7;;;;;;;;;;;10507;;;;;;;;;;;10516:6;10478:19;:45::i;:::-;10455:68;;;10548:8;10538:18;;10582:38;10599:12;10613:6;10582:16;:38::i;:::-;10571:49;;;;10424:259;;;;10663:8;10653:18;;10424:259;10217:466;9833:850;9725:965;;;;;:::o;2621:113::-;2674:6;2329:8;2697:23;2701:9;2705:1;2708;2701:3;:9::i;:::-;2718:1;2329:8;2712:7;;;;;;2697:3;:23::i;:::-;:29;;;;;;2693:33;;2621:113;;;;:::o;6930:371::-;7017:12;7053:7;;;;;;;;;;;7046:14;;:3;:14;;;7042:252;;;7104:11;;;;;;;;;;;7087:42;;;7130:4;7136:8;;;;;;;;;;;7146:6;7087:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7087:66:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7087:66:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7087:66:0;;;;;;;;;;;;;;;;7077:76;;7042:252;;;7183:7;;;;;;;;;;;7175:15;;:4;:15;;;7171:123;;;7234:11;;;;;;;;;;;7217:42;;;7260:8;;;;;;;;;;;7270:3;7275:6;7217:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7217:65:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7217:65:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7217:65:0;;;;;;;;;;;;;;;;7207:75;;7171:123;7042:252;6930:371;;;;;:::o;7309:244::-;7394:12;7420:15;7455:9;;;;;;;;;;;7440:41;;;7482:3;7487:4;7493:6;7440:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7440:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7440:60:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7440:60:0;;;;;;;;;;;;;;;;;;;;;;;;;7419:81;;;7521:24;7526:6;7534:10;7521:4;:24::i;:::-;7511:34;;7309:244;;;;;;:::o;7561:360::-;7648:12;7684:7;;;;;;;;;;;7677:14;;:3;:14;;;7673:241;;;7734:11;;;;;;;;;;;7718:52;;;7771:6;7718:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7718:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7718:60:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7718:60:0;;;;;;;;;;;;;;;;7708:70;;7673:241;;;7808:7;;;;;;;;;;;7800:15;;:4;:15;;;7796:118;;;7858:11;;;;;;;;;;;7842:52;;;7895:6;7842:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7842:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7842:60:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7842:60:0;;;;;;;;;;;;;;;;7832:70;;7796:118;7673:241;7561:360;;;;;:::o;11108:965::-;11191:12;11229:8;11220:6;:17;11216:850;;;11254:14;11271:8;11254:25;;11294:15;11321:8;11312:6;:17;11294:35;;11345:17;11367:36;11375:7;;;;;;;;;;;11384;;;;;;;;;;;11393:9;11367:7;:36::i;:::-;11344:59;;;11418:14;11435:8;11418:25;;11471:41;11488:12;11502:9;11471:16;:41::i;:::-;11458:54;;;;11537:45;11550:10;11562:8;11572:9;11537:12;:45::i;:::-;11527:55;;11216:850;;;;;;;11613:6;;11604;:15;11600:466;;;11637:17;11659:33;11667:7;;;;;;;;;;;11676;;;;;;;;;;;11685:6;11659:7;:33::i;:::-;11636:56;;;11717:8;11707:18;;11751:38;11768:12;11782:6;11751:16;:38::i;:::-;11740:49;;;;11600:466;;;;11820:1;11811:6;:10;11807:259;;;11839:17;11861:45;11881:7;;;;;;;;;;;11890;;;;;;;;;;;11899:6;11861:19;:45::i;:::-;11838:68;;;11931:8;11921:18;;11965:38;11982:12;11996:6;11965:16;:38::i;:::-;11954:49;;;;11807:259;;;;12046:8;12036:18;;11807:259;11600:466;11216:850;11108:965;;;;;:::o;12081:262::-;12122:27;12167:8;;;;;;;;;;;12122:54;;12187:16;12206:12;:22;;;12237:4;12206:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12206:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12206:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12206:37:0;;;;;;;;;;;;;;;;12187:56;;12272:1;12258:11;:15;12254:82;;;12290:12;:21;;;12312:11;12290:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12290:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12290:34:0;;;;12254:82;12081:262;;:::o;9315:402::-;9394:12;9439:1;9423:12;:17;9419:291;;;9468:41;9480:8;;;;;;;;;;;9490:7;;;;;;;;;;;9499:9;9468:11;:41::i;:::-;9457:52;;;;9419:291;;;9547:1;9531:12;:17;9527:183;;;9576:38;9586:7;;;;;;;;;;;9595;;;;;;;;;;;9604:9;9576;:38::i;:::-;9565:49;;;;9527:183;;;9658:40;9670:7;;;;;;;;;;;9679;;;;;;;;;;;9688:9;9658:11;:40::i;:::-;9647:51;;;;9527:183;9419:291;9315:402;;;;:::o;2166:135::-;2218:6;2250:1;2245;:6;:30;;;;2274:1;2269;2264;2260;:5;2256:9;;;2255:15;;;;;;:20;2245:30;2237:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2166:135;;;;:::o;1900:121::-;1952:6;1994:1;1988;1984;:5;1980:9;;;1979:16;;1971:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1900:121;;;;:::o;10698:402::-;10777:12;10822:1;10806:12;:17;10802:291;;;10851:41;10863:7;;;;;;;;;;;10872:8;;;;;;;;;;;10882:9;10851:11;:41::i;:::-;10840:52;;;;10802:291;;;10930:1;10914:12;:17;10910:183;;;10959:38;10969:7;;;;;;;;;;;10978;;;;;;;;;;;10987:9;10959;:38::i;:::-;10948:49;;;;10910:183;;;11041:40;11053:7;;;;;;;;;;;11062;;;;;;;;;;;11071:9;11041:11;:40::i;:::-;11030:51;;;;10910:183;10802:291;10698:402;;;;:::o;8111:376::-;8190:12;8226:8;;;;;;;;;;;8219:15;;:3;:15;;;8215:96;;;8266:8;;;;;;;;;;;8251:32;;;8290:6;8251:48;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8251:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8251:48:0;;;;;8215:96;8348:11;;;;;;;;;;;8331:43;;;8393:3;8415:6;8440:4;8463:1;8331:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8331:148:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8331:148:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8331:148:0;;;;;;;;;;;;;;;;8321:158;;8111:376;;;;;:::o;8495:406::-;8572:12;8597:11;8618:7;;;;;;;;;;;8611:14;;:3;:14;;;:27;;8637:1;8611:27;;;8628:6;8611:27;8597:41;;8674:9;;;;;;;;;;;8659:31;;;8697:6;8723:3;8745:6;8770:4;8801;8825:6;8850:1;8870:8;;;;;;;;;;;8659:234;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8659:234:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8659:234:0;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8659:234:0;;;;;;;;;;;;;;;;8649:244;;8495:406;;;;;;:::o;8909:398::-;8988:12;9024:7;;;;;;;;;;;9017:14;;:3;:14;;;9013:287;;;9074:11;;;;;;;;;;;9058:48;;;9113:6;9121:1;9142;9124:15;:19;9058:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9058:86:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9058:86:0;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9058:86:0;;;;;;;;;;;;;;;;9048:96;;9013:287;;;9174:7;;;;;;;;;;;9166:15;;:4;:15;;;9162:138;;;9224:11;;;;;;;;;;;9208:48;;;9257:6;9265:1;9286;9268:15;:19;9208:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9208:80:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9208:80:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9208:80:0;;;;;;;;;;;;;;;;9198:90;;9162:138;9013:287;8909:398;;;;;:::o
Swarm Source
bzzr://2d21ae3504f89ab7e169706787394b14c5fad7511c36714db61d3fa7feeeacfc
Loading...
Loading
Loading...
Loading
Net Worth in USD
$1.76
Net Worth in ETH
0.000825
Token Allocations
ANY
100.00%
Multichain Portfolio | 32 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| BSC | 100.00% | $1.76 | 1 | $1.76 |
Loading...
Loading
Loading...
Loading
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.