From b3c0c4a1d1a1fc47ac11ece4dacc2a71303a3dd1 Mon Sep 17 00:00:00 2001 From: nick Date: Sun, 7 Feb 2021 16:55:30 -0500 Subject: [PATCH] simple working version good enough for demo but needs polishing --- contracts/Pool.sol | 76 +- frontend/public/favicon.ico | Bin 22382 -> 138676 bytes frontend/src/components/Dapp.tsx | 2 +- frontend/src/components/tokens.tsx | 836 +++++++++++++++++++ frontend/src/contracts/Pool.json | 153 +--- frontend/src/contracts/PoolFactory.json | 6 +- frontend/src/contracts/contract-address.json | 3 +- frontend/src/css/creator.css | 8 + frontend/src/css/creator.css.map | 2 +- frontend/src/css/creator.scss | 8 + frontend/src/css/newCreator.css | 21 + frontend/src/css/newCreator.css.map | 2 +- frontend/src/css/newCreator.scss | 17 + frontend/src/pages/Creator.tsx | 84 +- frontend/src/pages/NewCreator.tsx | 31 +- scripts/deploy.js | 41 +- test/Kovan.js | 13 +- 17 files changed, 1113 insertions(+), 190 deletions(-) mode change 100755 => 100644 frontend/public/favicon.ico create mode 100644 frontend/src/components/tokens.tsx diff --git a/contracts/Pool.sol b/contracts/Pool.sol index fc564bf..47ce9fa 100644 --- a/contracts/Pool.sol +++ b/contracts/Pool.sol @@ -15,7 +15,7 @@ import "./UniswapV2Interfaces.sol"; contract Pool { // creator who can withdraw interest - address public owner; + address private owner; // uniswap interface IUniswap uniswap; @@ -27,28 +27,28 @@ contract Pool { // address public DAI = 0x6B175474E89094C44Da98b954EedeAC495271d0F; // kovan DAI - address public DAI = 0xFf795577d9AC8bD7D90Ee22b6C1703490b6512FD; + address private DAI = 0xFf795577d9AC8bD7D90Ee22b6C1703490b6512FD; // kovan aDAI - address public aDAI = 0xdCf0aF9e59C002FA3AA091a46196b37530FD48a8; + address private aDAI = 0xdCf0aF9e59C002FA3AA091a46196b37530FD48a8; // kovan USDC - address public USDC = 0xdCFaB8057d08634279f8201b55d311c2a67897D2; + address private USDC = 0xdCFaB8057d08634279f8201b55d311c2a67897D2; // kovan aUSDC - address public aUSDC = 0xF9155b335FAa6C184aB2F2c4D5939d86268F3668; + address private aUSDC = 0xF9155b335FAa6C184aB2F2c4D5939d86268F3668; // mainnet usdc - // address public USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; + // address private USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; // mainnet aUSDC - // address public aUSDC = 0xBcca60bB61934080951369a648Fb03DF4F96263C; + // address private aUSDC = 0xBcca60bB61934080951369a648Fb03DF4F96263C; // kovan/mainnet uniswap router - address public UNISWAP_ROUTER = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; + address private UNISWAP_ROUTER = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // kovan aave lending pool - address public LENDING_POOL = 0xE0fBa4Fc209b4948668006B2bE61711b7f465bAe; + address private LENDING_POOL = 0xE0fBa4Fc209b4948668006B2bE61711b7f465bAe; // store addres -> account mapping mapping(address => uint256) balances; @@ -89,8 +89,8 @@ contract Pool { address _to, uint _amountOutMin, uint _deadline) - public - payable { + internal + { uint amountOutMin; @@ -139,7 +139,7 @@ contract Pool { address _to, uint _amountIn, uint _amountOutMin) - public + internal { uint amountOutMin; @@ -229,11 +229,13 @@ contract Pool { } + + /** * Withdraw tokens from this pool * @param amount: amount to be withdrawn from the pool */ - function withdraw(uint amount) external { + function withdraw(uint amount) public { // ensure balance is high enough require(amount <= balances[msg.sender], "Attempting to withdraw more than deposited"); @@ -290,6 +292,54 @@ contract Pool { } + /** + * Withdraw the accrued interest from the pool + */ + function creatorWithdraw() external { + + // ensure that the owner is the caller + require(msg.sender == owner, "Only the owner of the pool can call this method"); + + // setup aToken reference + IERC20 aToken = IERC20(aDAI); + + // setup stablecoin + IERC20 stable = IERC20(DAI); + + // get the amount of aTokens currently in the contract + uint aTokenAmount = aToken.balanceOf(address(this)); + + require(aToken.approve(LENDING_POOL, aTokenAmount), "aToken approval failed"); + + // withdraw tokens from the lending pool + // -1 for all + require(aave.withdraw(address(stable), aTokenAmount - totalBalance, owner) > 0, "withdraw failed"); + + // subtract the amount of aTokens by the total amount deposited by fans + // balances[msg.sender] = aTokenAmount - totalBalance; + + // withdraw(amount); + + // reset amount available + // balances[msg.sender] -= amount; + + } + + /** + * Get the amount of stablecoin that the creator is allowed to withdraw + */ + function getCreatorBalance() external view returns (uint) { + + IERC20 aToken = IERC20(aDAI); + + // get the amount of aTokens currently in the contract + uint aTokenAmount = aToken.balanceOf(address(this)); + + // subtract the amount of aTokens by the total amount deposited by fans + return(aTokenAmount - totalBalance); + + } + /** * Returns the total amount of ETH(?) stored in this contract diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico old mode 100755 new mode 100644 index d16900f31c3d9f6baaa4a741fad68120686daf00..8c1fd8483e920d5afff5404e140fd79bf894fcb9 GIT binary patch literal 138676 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

4k7+#TBo)oV7#t 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 literal 22382 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 u4(CHZhlXJw&8c5zOvXk!vE8Q03op*mwCY? - + }> diff --git a/frontend/src/components/tokens.tsx b/frontend/src/components/tokens.tsx new file mode 100644 index 0000000..bd48f95 --- /dev/null +++ b/frontend/src/components/tokens.tsx @@ -0,0 +1,836 @@ +export let tokens = { + aDAI: { + address: "0xdcf0af9e59c002fa3aa091a46196b37530fd48a8", + abi: [ + { + "inputs": [ + { + "internalType": "contract LendingPoolAddressesProvider", + "name": "_addressesProvider", + "type": "address" + }, + { + "internalType": "address", + "name": "_underlyingAsset", + "type": "address" + }, + { + "internalType": "uint8", + "name": "_underlyingAssetDecimals", + "type": "uint8" + }, + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_fromBalanceIncrease", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_toBalanceIncrease", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_fromIndex", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_toIndex", + "type": "uint256" + } + ], + "name": "BalanceTransfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_fromBalanceIncrease", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_fromIndex", + "type": "uint256" + } + ], + "name": "BurnOnLiquidation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "InterestRedirectionAllowanceChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_redirectedBalance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_fromBalanceIncrease", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_fromIndex", + "type": "uint256" + } + ], + "name": "InterestStreamRedirected", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_fromBalanceIncrease", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_fromIndex", + "type": "uint256" + } + ], + "name": "MintOnDeposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_fromBalanceIncrease", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_fromIndex", + "type": "uint256" + } + ], + "name": "Redeem", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_targetAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_targetBalanceIncrease", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_targetIndex", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_redirectedBalanceAdded", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_redirectedBalanceRemoved", + "type": "uint256" + } + ], + "name": "RedirectedBalanceUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "UINT_MAX_VALUE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "underlyingAssetAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "redirectInterestStream", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "redirectInterestStreamOf", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "allowInterestRedirectionTo", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "redeem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "mintOnDeposit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "burnOnLiquidation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "transferOnLiquidation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "principalBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "isTransferAllowed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "getUserIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "getInterestRedirectionAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "getRedirectedBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ] + } +} \ No newline at end of file diff --git a/frontend/src/contracts/Pool.json b/frontend/src/contracts/Pool.json index 7cbbdec..a974b1d 100644 --- a/frontend/src/contracts/Pool.json +++ b/frontend/src/contracts/Pool.json @@ -15,78 +15,19 @@ "type": "constructor" }, { - "inputs": [], - "name": "DAI", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "LENDING_POOL", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "UNISWAP_ROUTER", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "USDC", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "aDAI", - "outputs": [ + "inputs": [ { "internalType": "address", - "name": "", + "name": "account", "type": "address" } ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "aUSDC", + "name": "balanceOf", "outputs": [ { - "internalType": "address", + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "stateMutability": "view", @@ -94,21 +35,15 @@ }, { "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ { "internalType": "uint256", - "name": "", + "name": "amount", "type": "uint256" } ], - "stateMutability": "view", + "name": "creatorWithdraw", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { @@ -120,7 +55,7 @@ }, { "inputs": [], - "name": "getTotalBalance", + "name": "getCreatorBalance", "outputs": [ { "internalType": "uint256", @@ -133,71 +68,15 @@ }, { "inputs": [], - "name": "owner", + "name": "getTotalBalance", "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amountOutMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_deadline", - "type": "uint256" - } - ], - "name": "swapExactETHForTokens", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, { "internalType": "uint256", - "name": "_amountIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_amountOutMin", + "name": "", "type": "uint256" } ], - "name": "swapExactTokensForETH", - "outputs": [], - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { @@ -214,8 +93,8 @@ "type": "function" } ], - "bytecode": "0x608060405273ff795577d9ac8bd7d90ee22b6c1703490b6512fd600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dcf0af9e59c002fa3aa091a46196b37530fd48a8600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dcfab8057d08634279f8201b55d311c2a67897d2600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f9155b335faa6c184ab2f2c4d5939d86268f3668600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e0fba4fc209b4948668006b2be61711b7f465bae600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561020e57600080fd5b50604051612a48380380612a488339818101604052602081101561023157600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506126f0806103586000396000f3fe6080604052600436106100c25760003560e01c806370a082311161007f578063b4dcfc7711610059578063b4dcfc7714610393578063d0e30db0146103d4578063d8264920146103de578063e0bab4c41461041f576100c2565b806370a08231146102ac57806389a30271146103115780638da5cb5b14610352576100c2565b806312b58349146100c757806312d4b07c146100f25780631a38a4fb1461016a5780632e1a7d4d146101ab578063559fda33146101e6578063594e135414610227575b600080fd5b3480156100d357600080fd5b506100dc610460565b6040518082815260200191505060405180910390f35b6101686004803603608081101561010857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061046a565b005b34801561017657600080fd5b5061017f610b6a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101b757600080fd5b506101e4600480360360208110156101ce57600080fd5b8101908080359060200190929190505050610b90565b005b3480156101f257600080fd5b506101fb611679565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561023357600080fd5b506102aa6004803603608081101561024a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061169f565b005b3480156102b857600080fd5b506102fb600480360360208110156102cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e6d565b6040518082815260200191505060405180910390f35b34801561031d57600080fd5b50610326611eb6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561035e57600080fd5b50610367611edc565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561039f57600080fd5b506103a8611f00565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103dc611f26565b005b3480156103ea57600080fd5b506103f361238e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561042b57600080fd5b506104346123b4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600a54905090565b6000808590506104af6040518060400160405280600781526020017f77616c6c65743a00000000000000000000000000000000000000000000000000815250336123da565b6060600267ffffffffffffffff811180156104c957600080fd5b506040519080825280602002602001820160405280156104f85781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561056357600080fd5b505afa158015610577573d6000803e3d6000fd5b505050506040513d602081101561058d57600080fd5b8101908080519060200190929190505050816000815181106105ab57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081816001815181106105f357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061070d6040518060400160405280601a81526020017f746f6b656e2062616c616e6365206265666f726520737761703a0000000000008152508373ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156106cd57600080fd5b505afa1580156106e1573d6000803e3d6000fd5b505050506040513d60208110156106f757600080fd5b81019080805190602001909291905050506124f7565b60008514156108c257600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f34836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156107ae578082015181840152602081019050610793565b50505050905001935050505060006040518083038186803b1580156107d257600080fd5b505afa1580156107e6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561081057600080fd5b810190808051604051939291908464010000000082111561083057600080fd5b8382019150602082018581111561084657600080fd5b825186602082028301116401000000008211171561086357600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561089a57808201518184015260208101905061087f565b505050509050016040525050506001815181106108b357fe5b602002602001015192506108c6565b8492505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ff36ab53485848a896040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610983578082015181840152602081019050610968565b50505050905001955050505050506000604051808303818588803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f8201168201806040525060208110156109e957600080fd5b8101908080516040519392919084640100000000821115610a0957600080fd5b83820191506020820185811115610a1f57600080fd5b8251866020820283011164010000000082111715610a3c57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015610a73578082015181840152602081019050610a58565b5050505090500160405250505050610b616040518060400160405280601981526020017f746f6b656e2062616c616e636520616674657220737761703a000000000000008152508373ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610b2157600080fd5b505afa158015610b35573d6000803e3d6000fd5b505050506040513d6020811015610b4b57600080fd5b81019080805190602001909291905050506124f7565b50505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610c28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612628602a913960400191505060405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610cdf57600080fd5b505afa158015610cf3573d6000803e3d6000fd5b505050506040513d6020811015610d0957600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610daf57600080fd5b505af1158015610dc3573d6000803e3d6000fd5b505050506040513d6020811015610dd957600080fd5b8101908080519060200190929190505050610e5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f61546f6b656e20617070726f76616c206661696c65640000000000000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610f0557600080fd5b505afa158015610f19573d6000803e3d6000fd5b505050506040513d6020811015610f2f57600080fd5b810190808051906020019092919050505011610fb3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f616c6c6f77616e636520746f6f206c6f7700000000000000000000000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561101c57600080fd5b505afa158015611030573d6000803e3d6000fd5b505050506040513d602081101561104657600080fd5b8101908080519060200190929190505050146110ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f54686572652073686f756c646e277420626520737461626c65636f696e73000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369328dec8584306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561117d57600080fd5b505af1158015611191573d6000803e3d6000fd5b505050506040513d60208110156111a757600080fd5b81019080805190602001909291905050501161122b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7769746864726177206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561129457600080fd5b505afa1580156112a8573d6000803e3d6000fd5b505050506040513d60208110156112be57600080fd5b810190808051906020019092919050505011611342576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686572652073686f756c6420626520737461626c65636f696e73000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156113ab57600080fd5b505afa1580156113bf573d6000803e3d6000fd5b505050506040513d60208110156113d557600080fd5b810190808051906020019092919050505090506000811161145e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f20737461626c65636f696e7321000000000000000000000000000000000081525060200191505060405180910390fd5b61146b843383600061169f565b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156114d457600080fd5b505afa1580156114e8573d6000803e3d6000fd5b505050506040513d60208110156114fe57600080fd5b810190808051906020019092919050505014611565576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806126746024913960400191505060405180910390fd5b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540310156115f9576000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611647565b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600081600a54031015611661576000600a81905550611672565b80600a600082825403925050819055505b5050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080859050611768604051806060016040528060238152602001612698602391398273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561172857600080fd5b505afa15801561173c573d6000803e3d6000fd5b505050506040513d602081101561175257600080fd5b81019080805190602001909291905050506124f7565b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156117fb57600080fd5b505af115801561180f573d6000803e3d6000fd5b505050506040513d602081101561182557600080fd5b81019080805190602001909291905050506118a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f756e697377617020617070726f76652829206661696c6564000000000000000081525060200191505060405180910390fd5b6060600267ffffffffffffffff811180156118c257600080fd5b506040519080825280602002602001820160405280156118f15781602001602082028036833780820191505090505b509050818160008151811061190257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119a457600080fd5b505afa1580156119b8573d6000803e3d6000fd5b505050506040513d60208110156119ce57600080fd5b8101908080519060200190929190505050816001815181106119ec57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000841415611bdb57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f86836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015611ac7578082015181840152602081019050611aac565b50505050905001935050505060006040518083038186803b158015611aeb57600080fd5b505afa158015611aff573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611b2957600080fd5b8101908080516040519392919084640100000000821115611b4957600080fd5b83820191506020820185811115611b5f57600080fd5b8251866020820283011164010000000082111715611b7c57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611bb3578082015181840152602081019050611b98565b50505050905001604052505050600181518110611bcc57fe5b60200260200101519250611bdf565b8392505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58685848a426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611ca2578082015181840152602081019050611c87565b505050509050019650505050505050600060405180830381600087803b158015611ccb57600080fd5b505af1158015611cdf573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611d0957600080fd5b8101908080516040519392919084640100000000821115611d2957600080fd5b83820191506020820185811115611d3f57600080fd5b8251866020820283011164010000000082111715611d5c57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611d93578082015181840152602081019050611d78565b5050505090500160405250505050611e64604051806060016040528060228152602001612652602291398373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611e2457600080fd5b505afa158015611e38573d6000803e3d6000fd5b505050506040513d6020811015611e4e57600080fd5b81019080805190602001909291905050506124f7565b50505050505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611f5a813060004261046a565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611fc357600080fd5b505afa158015611fd7573d6000803e3d6000fd5b505050506040513d6020811015611fed57600080fd5b8101908080519060200190929190505050905061203f6040518060400160405280601e81526020017f737461626c6520616d6f756e74206265666f7265206465706f7369743a200000815250826124f7565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156120d257600080fd5b505af11580156120e6573d6000803e3d6000fd5b505050506040513d60208110156120fc57600080fd5b810190808051906020019092919050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8eda9df83833060006040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b1580156121c857600080fd5b505af11580156121dc573d6000803e3d6000fd5b505050506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506122466040518060400160405280601d81526020017f737461626c6520616d6f756e74206166746572206465706f7369743a20000000815250836124f7565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156122af57600080fd5b505afa1580156122c3573d6000803e3d6000fd5b505050506040513d60208110156122d957600080fd5b8101908080519060200190929190505050905061232b6040518060400160405280601081526020017f61546f6b656e2062616c616e63653a2000000000000000000000000000000000815250826124f7565b82600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555082600a6000828254019250508190555050505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6124f3828260405160240180806020018373ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b8381101561243e578082015181840152602081019050612423565b50505050905090810190601f16801561246b5780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040527f319af333000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125fe565b5050565b6125fa82826040516024018080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561254557808201518184015260208101905061252a565b50505050905090810190601f1680156125725780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040527f9710a9d0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125fe565b5050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa505050505056fe417474656d7074696e6720746f207769746864726177206d6f7265207468616e206465706f7369746564636f6e747261637420746f6b656e2062616c616e636520616674657220737761703a54686572652073686f756c646e277420626520737461626c65636f696e7320616761696e636f6e747261637420746f6b656e2062616c616e6365206265666f726520737761703aa26469706673582212204136dfdc04d4f6c9df6d85d148d6ad529a3aa64eca501b72a04c69110ad3a97764736f6c63430007000033", - "deployedBytecode": "0x6080604052600436106100c25760003560e01c806370a082311161007f578063b4dcfc7711610059578063b4dcfc7714610393578063d0e30db0146103d4578063d8264920146103de578063e0bab4c41461041f576100c2565b806370a08231146102ac57806389a30271146103115780638da5cb5b14610352576100c2565b806312b58349146100c757806312d4b07c146100f25780631a38a4fb1461016a5780632e1a7d4d146101ab578063559fda33146101e6578063594e135414610227575b600080fd5b3480156100d357600080fd5b506100dc610460565b6040518082815260200191505060405180910390f35b6101686004803603608081101561010857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061046a565b005b34801561017657600080fd5b5061017f610b6a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101b757600080fd5b506101e4600480360360208110156101ce57600080fd5b8101908080359060200190929190505050610b90565b005b3480156101f257600080fd5b506101fb611679565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561023357600080fd5b506102aa6004803603608081101561024a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061169f565b005b3480156102b857600080fd5b506102fb600480360360208110156102cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e6d565b6040518082815260200191505060405180910390f35b34801561031d57600080fd5b50610326611eb6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561035e57600080fd5b50610367611edc565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561039f57600080fd5b506103a8611f00565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103dc611f26565b005b3480156103ea57600080fd5b506103f361238e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561042b57600080fd5b506104346123b4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600a54905090565b6000808590506104af6040518060400160405280600781526020017f77616c6c65743a00000000000000000000000000000000000000000000000000815250336123da565b6060600267ffffffffffffffff811180156104c957600080fd5b506040519080825280602002602001820160405280156104f85781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561056357600080fd5b505afa158015610577573d6000803e3d6000fd5b505050506040513d602081101561058d57600080fd5b8101908080519060200190929190505050816000815181106105ab57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081816001815181106105f357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061070d6040518060400160405280601a81526020017f746f6b656e2062616c616e6365206265666f726520737761703a0000000000008152508373ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156106cd57600080fd5b505afa1580156106e1573d6000803e3d6000fd5b505050506040513d60208110156106f757600080fd5b81019080805190602001909291905050506124f7565b60008514156108c257600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f34836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156107ae578082015181840152602081019050610793565b50505050905001935050505060006040518083038186803b1580156107d257600080fd5b505afa1580156107e6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561081057600080fd5b810190808051604051939291908464010000000082111561083057600080fd5b8382019150602082018581111561084657600080fd5b825186602082028301116401000000008211171561086357600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561089a57808201518184015260208101905061087f565b505050509050016040525050506001815181106108b357fe5b602002602001015192506108c6565b8492505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ff36ab53485848a896040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610983578082015181840152602081019050610968565b50505050905001955050505050506000604051808303818588803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f8201168201806040525060208110156109e957600080fd5b8101908080516040519392919084640100000000821115610a0957600080fd5b83820191506020820185811115610a1f57600080fd5b8251866020820283011164010000000082111715610a3c57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015610a73578082015181840152602081019050610a58565b5050505090500160405250505050610b616040518060400160405280601981526020017f746f6b656e2062616c616e636520616674657220737761703a000000000000008152508373ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610b2157600080fd5b505afa158015610b35573d6000803e3d6000fd5b505050506040513d6020811015610b4b57600080fd5b81019080805190602001909291905050506124f7565b50505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610c28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612628602a913960400191505060405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610cdf57600080fd5b505afa158015610cf3573d6000803e3d6000fd5b505050506040513d6020811015610d0957600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610daf57600080fd5b505af1158015610dc3573d6000803e3d6000fd5b505050506040513d6020811015610dd957600080fd5b8101908080519060200190929190505050610e5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f61546f6b656e20617070726f76616c206661696c65640000000000000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610f0557600080fd5b505afa158015610f19573d6000803e3d6000fd5b505050506040513d6020811015610f2f57600080fd5b810190808051906020019092919050505011610fb3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f616c6c6f77616e636520746f6f206c6f7700000000000000000000000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561101c57600080fd5b505afa158015611030573d6000803e3d6000fd5b505050506040513d602081101561104657600080fd5b8101908080519060200190929190505050146110ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f54686572652073686f756c646e277420626520737461626c65636f696e73000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369328dec8584306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561117d57600080fd5b505af1158015611191573d6000803e3d6000fd5b505050506040513d60208110156111a757600080fd5b81019080805190602001909291905050501161122b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7769746864726177206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561129457600080fd5b505afa1580156112a8573d6000803e3d6000fd5b505050506040513d60208110156112be57600080fd5b810190808051906020019092919050505011611342576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686572652073686f756c6420626520737461626c65636f696e73000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156113ab57600080fd5b505afa1580156113bf573d6000803e3d6000fd5b505050506040513d60208110156113d557600080fd5b810190808051906020019092919050505090506000811161145e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f20737461626c65636f696e7321000000000000000000000000000000000081525060200191505060405180910390fd5b61146b843383600061169f565b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156114d457600080fd5b505afa1580156114e8573d6000803e3d6000fd5b505050506040513d60208110156114fe57600080fd5b810190808051906020019092919050505014611565576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806126746024913960400191505060405180910390fd5b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540310156115f9576000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611647565b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600081600a54031015611661576000600a81905550611672565b80600a600082825403925050819055505b5050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080859050611768604051806060016040528060238152602001612698602391398273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561172857600080fd5b505afa15801561173c573d6000803e3d6000fd5b505050506040513d602081101561175257600080fd5b81019080805190602001909291905050506124f7565b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156117fb57600080fd5b505af115801561180f573d6000803e3d6000fd5b505050506040513d602081101561182557600080fd5b81019080805190602001909291905050506118a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f756e697377617020617070726f76652829206661696c6564000000000000000081525060200191505060405180910390fd5b6060600267ffffffffffffffff811180156118c257600080fd5b506040519080825280602002602001820160405280156118f15781602001602082028036833780820191505090505b509050818160008151811061190257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119a457600080fd5b505afa1580156119b8573d6000803e3d6000fd5b505050506040513d60208110156119ce57600080fd5b8101908080519060200190929190505050816001815181106119ec57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000841415611bdb57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f86836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015611ac7578082015181840152602081019050611aac565b50505050905001935050505060006040518083038186803b158015611aeb57600080fd5b505afa158015611aff573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611b2957600080fd5b8101908080516040519392919084640100000000821115611b4957600080fd5b83820191506020820185811115611b5f57600080fd5b8251866020820283011164010000000082111715611b7c57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611bb3578082015181840152602081019050611b98565b50505050905001604052505050600181518110611bcc57fe5b60200260200101519250611bdf565b8392505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58685848a426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611ca2578082015181840152602081019050611c87565b505050509050019650505050505050600060405180830381600087803b158015611ccb57600080fd5b505af1158015611cdf573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611d0957600080fd5b8101908080516040519392919084640100000000821115611d2957600080fd5b83820191506020820185811115611d3f57600080fd5b8251866020820283011164010000000082111715611d5c57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611d93578082015181840152602081019050611d78565b5050505090500160405250505050611e64604051806060016040528060228152602001612652602291398373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611e2457600080fd5b505afa158015611e38573d6000803e3d6000fd5b505050506040513d6020811015611e4e57600080fd5b81019080805190602001909291905050506124f7565b50505050505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611f5a813060004261046a565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611fc357600080fd5b505afa158015611fd7573d6000803e3d6000fd5b505050506040513d6020811015611fed57600080fd5b8101908080519060200190929190505050905061203f6040518060400160405280601e81526020017f737461626c6520616d6f756e74206265666f7265206465706f7369743a200000815250826124f7565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156120d257600080fd5b505af11580156120e6573d6000803e3d6000fd5b505050506040513d60208110156120fc57600080fd5b810190808051906020019092919050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8eda9df83833060006040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b1580156121c857600080fd5b505af11580156121dc573d6000803e3d6000fd5b505050506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506122466040518060400160405280601d81526020017f737461626c6520616d6f756e74206166746572206465706f7369743a20000000815250836124f7565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156122af57600080fd5b505afa1580156122c3573d6000803e3d6000fd5b505050506040513d60208110156122d957600080fd5b8101908080519060200190929190505050905061232b6040518060400160405280601081526020017f61546f6b656e2062616c616e63653a2000000000000000000000000000000000815250826124f7565b82600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555082600a6000828254019250508190555050505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6124f3828260405160240180806020018373ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b8381101561243e578082015181840152602081019050612423565b50505050905090810190601f16801561246b5780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040527f319af333000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125fe565b5050565b6125fa82826040516024018080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561254557808201518184015260208101905061252a565b50505050905090810190601f1680156125725780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040527f9710a9d0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125fe565b5050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa505050505056fe417474656d7074696e6720746f207769746864726177206d6f7265207468616e206465706f7369746564636f6e747261637420746f6b656e2062616c616e636520616674657220737761703a54686572652073686f756c646e277420626520737461626c65636f696e7320616761696e636f6e747261637420746f6b656e2062616c616e6365206265666f726520737761703aa26469706673582212204136dfdc04d4f6c9df6d85d148d6ad529a3aa64eca501b72a04c69110ad3a97764736f6c63430007000033", + "bytecode": "0x608060405273ff795577d9ac8bd7d90ee22b6c1703490b6512fd600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dcf0af9e59c002fa3aa091a46196b37530fd48a8600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dcfab8057d08634279f8201b55d311c2a67897d2600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f9155b335faa6c184ab2f2c4d5939d86268f3668600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e0fba4fc209b4948668006b2be61711b7f465bae600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561020e57600080fd5b50604051612be1380380612be18339818101604052602081101561023157600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050612889806103586000396000f3fe6080604052600436106100555760003560e01c806312b583491461005a5780632e1a7d4d1461008557806370a08231146100c057806371eb89f314610125578063a432548514610160578063d0e30db01461018b575b600080fd5b34801561006657600080fd5b5061006f610195565b6040518082815260200191505060405180910390f35b34801561009157600080fd5b506100be600480360360208110156100a857600080fd5b810190808035906020019092919050505061019f565b005b3480156100cc57600080fd5b5061010f600480360360208110156100e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c88565b6040518082815260200191505060405180910390f35b34801561013157600080fd5b5061015e6004803603602081101561014857600080fd5b8101908080359060200190929190505050610cd1565b005b34801561016c57600080fd5b50610175611134565b6040518082815260200191505060405180910390f35b61019361120e565b005b6000600a54905090565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612792602a913960400191505060405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156102ee57600080fd5b505afa158015610302573d6000803e3d6000fd5b505050506040513d602081101561031857600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156103be57600080fd5b505af11580156103d2573d6000803e3d6000fd5b505050506040513d60208110156103e857600080fd5b810190808051906020019092919050505061046b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f61546f6b656e20617070726f76616c206661696c65640000000000000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561051457600080fd5b505afa158015610528573d6000803e3d6000fd5b505050506040513d602081101561053e57600080fd5b8101908080519060200190929190505050116105c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f616c6c6f77616e636520746f6f206c6f7700000000000000000000000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561062b57600080fd5b505afa15801561063f573d6000803e3d6000fd5b505050506040513d602081101561065557600080fd5b8101908080519060200190929190505050146106d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f54686572652073686f756c646e277420626520737461626c65636f696e73000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369328dec8584306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561078c57600080fd5b505af11580156107a0573d6000803e3d6000fd5b505050506040513d60208110156107b657600080fd5b81019080805190602001909291905050501161083a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7769746864726177206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156108a357600080fd5b505afa1580156108b7573d6000803e3d6000fd5b505050506040513d60208110156108cd57600080fd5b810190808051906020019092919050505011610951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686572652073686f756c6420626520737461626c65636f696e73000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156109ba57600080fd5b505afa1580156109ce573d6000803e3d6000fd5b505050506040513d60208110156109e457600080fd5b8101908080519060200190929190505050905060008111610a6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f20737461626c65636f696e7321000000000000000000000000000000000081525060200191505060405180910390fd5b610a7a8433836000611676565b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610ae357600080fd5b505afa158015610af7573d6000803e3d6000fd5b505050506040513d6020811015610b0d57600080fd5b810190808051906020019092919050505014610b74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061280d6024913960400191505060405180910390fd5b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054031015610c08576000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c56565b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600081600a54031015610c70576000600a81905550610c81565b80600a600082825403925050819055505b5050505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806127de602f913960400191505060405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e2c57600080fd5b505afa158015610e40573d6000803e3d6000fd5b505050506040513d6020811015610e5657600080fd5b810190808051906020019092919050505090508273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610efc57600080fd5b505af1158015610f10573d6000803e3d6000fd5b505050506040513d6020811015610f2657600080fd5b8101908080519060200190929190505050610fa9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f61546f6b656e20617070726f76616c206661696c65640000000000000000000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369328dec84600a54850360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561108057600080fd5b505af1158015611094573d6000803e3d6000fd5b505050506040513d60208110156110aa57600080fd5b81019080805190602001909291905050501161112e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7769746864726177206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b50505050565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156111c557600080fd5b505afa1580156111d9573d6000803e3d6000fd5b505050506040513d60208110156111ef57600080fd5b81019080805190602001909291905050509050600a5481039250505090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506112428130600042611e44565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156112ab57600080fd5b505afa1580156112bf573d6000803e3d6000fd5b505050506040513d60208110156112d557600080fd5b810190808051906020019092919050505090506113276040518060400160405280601e81526020017f737461626c6520616d6f756e74206265666f7265206465706f7369743a20000081525082612544565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156113ba57600080fd5b505af11580156113ce573d6000803e3d6000fd5b505050506040513d60208110156113e457600080fd5b810190808051906020019092919050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8eda9df83833060006040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b1580156114b057600080fd5b505af11580156114c4573d6000803e3d6000fd5b505050506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061152e6040518060400160405280601d81526020017f737461626c6520616d6f756e74206166746572206465706f7369743a2000000081525083612544565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561159757600080fd5b505afa1580156115ab573d6000803e3d6000fd5b505050506040513d60208110156115c157600080fd5b810190808051906020019092919050505090506116136040518060400160405280601081526020017f61546f6b656e2062616c616e63653a200000000000000000000000000000000081525082612544565b82600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555082600a6000828254019250508190555050505050565b60008085905061173f604051806060016040528060238152602001612831602391398273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156116ff57600080fd5b505afa158015611713573d6000803e3d6000fd5b505050506040513d602081101561172957600080fd5b8101908080519060200190929190505050612544565b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156117d257600080fd5b505af11580156117e6573d6000803e3d6000fd5b505050506040513d60208110156117fc57600080fd5b810190808051906020019092919050505061187f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f756e697377617020617070726f76652829206661696c6564000000000000000081525060200191505060405180910390fd5b6060600267ffffffffffffffff8111801561189957600080fd5b506040519080825280602002602001820160405280156118c85781602001602082028036833780820191505090505b50905081816000815181106118d957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561197b57600080fd5b505afa15801561198f573d6000803e3d6000fd5b505050506040513d60208110156119a557600080fd5b8101908080519060200190929190505050816001815181106119c357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000841415611bb257600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f86836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015611a9e578082015181840152602081019050611a83565b50505050905001935050505060006040518083038186803b158015611ac257600080fd5b505afa158015611ad6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611b0057600080fd5b8101908080516040519392919084640100000000821115611b2057600080fd5b83820191506020820185811115611b3657600080fd5b8251866020820283011164010000000082111715611b5357600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611b8a578082015181840152602081019050611b6f565b50505050905001604052505050600181518110611ba357fe5b60200260200101519250611bb6565b8392505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58685848a426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611c79578082015181840152602081019050611c5e565b505050509050019650505050505050600060405180830381600087803b158015611ca257600080fd5b505af1158015611cb6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611ce057600080fd5b8101908080516040519392919084640100000000821115611d0057600080fd5b83820191506020820185811115611d1657600080fd5b8251866020820283011164010000000082111715611d3357600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611d6a578082015181840152602081019050611d4f565b5050505090500160405250505050611e3b6040518060600160405280602281526020016127bc602291398373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611dfb57600080fd5b505afa158015611e0f573d6000803e3d6000fd5b505050506040513d6020811015611e2557600080fd5b8101908080519060200190929190505050612544565b50505050505050565b600080859050611e896040518060400160405280600781526020017f77616c6c65743a000000000000000000000000000000000000000000000000008152503361264b565b6060600267ffffffffffffffff81118015611ea357600080fd5b50604051908082528060200260200182016040528015611ed25781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f3d57600080fd5b505afa158015611f51573d6000803e3d6000fd5b505050506040513d6020811015611f6757600080fd5b810190808051906020019092919050505081600081518110611f8557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110611fcd57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120e76040518060400160405280601a81526020017f746f6b656e2062616c616e6365206265666f726520737761703a0000000000008152508373ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156120a757600080fd5b505afa1580156120bb573d6000803e3d6000fd5b505050506040513d60208110156120d157600080fd5b8101908080519060200190929190505050612544565b600085141561229c57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f34836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561218857808201518184015260208101905061216d565b50505050905001935050505060006040518083038186803b1580156121ac57600080fd5b505afa1580156121c0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156121ea57600080fd5b810190808051604051939291908464010000000082111561220a57600080fd5b8382019150602082018581111561222057600080fd5b825186602082028301116401000000008211171561223d57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015612274578082015181840152602081019050612259565b5050505090500160405250505060018151811061228d57fe5b602002602001015192506122a0565b8492505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ff36ab53485848a896040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561235d578082015181840152602081019050612342565b50505050905001955050505050506000604051808303818588803b15801561238457600080fd5b505af1158015612398573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f8201168201806040525060208110156123c357600080fd5b81019080805160405193929190846401000000008211156123e357600080fd5b838201915060208201858111156123f957600080fd5b825186602082028301116401000000008211171561241657600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561244d578082015181840152602081019050612432565b505050509050016040525050505061253b6040518060400160405280601981526020017f746f6b656e2062616c616e636520616674657220737761703a000000000000008152508373ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156124fb57600080fd5b505afa15801561250f573d6000803e3d6000fd5b505050506040513d602081101561252557600080fd5b8101908080519060200190929190505050612544565b50505050505050565b61264782826040516024018080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015612592578082015181840152602081019050612577565b50505050905090810190601f1680156125bf5780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040527f9710a9d0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612768565b5050565b612764828260405160240180806020018373ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156126af578082015181840152602081019050612694565b50505050905090810190601f1680156126dc5780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040527f319af333000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612768565b5050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa505050505056fe417474656d7074696e6720746f207769746864726177206d6f7265207468616e206465706f7369746564636f6e747261637420746f6b656e2062616c616e636520616674657220737761703a4f6e6c7920746865206f776e6572206f662074686520706f6f6c2063616e2063616c6c2074686973206d6574686f6454686572652073686f756c646e277420626520737461626c65636f696e7320616761696e636f6e747261637420746f6b656e2062616c616e6365206265666f726520737761703aa2646970667358221220d4f960ac8549a4ffefbf5ad1466d45c5a81f57d13481675f3da50213f29905bc64736f6c63430007000033", + "deployedBytecode": "0x6080604052600436106100555760003560e01c806312b583491461005a5780632e1a7d4d1461008557806370a08231146100c057806371eb89f314610125578063a432548514610160578063d0e30db01461018b575b600080fd5b34801561006657600080fd5b5061006f610195565b6040518082815260200191505060405180910390f35b34801561009157600080fd5b506100be600480360360208110156100a857600080fd5b810190808035906020019092919050505061019f565b005b3480156100cc57600080fd5b5061010f600480360360208110156100e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c88565b6040518082815260200191505060405180910390f35b34801561013157600080fd5b5061015e6004803603602081101561014857600080fd5b8101908080359060200190929190505050610cd1565b005b34801561016c57600080fd5b50610175611134565b6040518082815260200191505060405180910390f35b61019361120e565b005b6000600a54905090565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612792602a913960400191505060405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156102ee57600080fd5b505afa158015610302573d6000803e3d6000fd5b505050506040513d602081101561031857600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156103be57600080fd5b505af11580156103d2573d6000803e3d6000fd5b505050506040513d60208110156103e857600080fd5b810190808051906020019092919050505061046b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f61546f6b656e20617070726f76616c206661696c65640000000000000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561051457600080fd5b505afa158015610528573d6000803e3d6000fd5b505050506040513d602081101561053e57600080fd5b8101908080519060200190929190505050116105c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f616c6c6f77616e636520746f6f206c6f7700000000000000000000000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561062b57600080fd5b505afa15801561063f573d6000803e3d6000fd5b505050506040513d602081101561065557600080fd5b8101908080519060200190929190505050146106d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f54686572652073686f756c646e277420626520737461626c65636f696e73000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369328dec8584306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561078c57600080fd5b505af11580156107a0573d6000803e3d6000fd5b505050506040513d60208110156107b657600080fd5b81019080805190602001909291905050501161083a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7769746864726177206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156108a357600080fd5b505afa1580156108b7573d6000803e3d6000fd5b505050506040513d60208110156108cd57600080fd5b810190808051906020019092919050505011610951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686572652073686f756c6420626520737461626c65636f696e73000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156109ba57600080fd5b505afa1580156109ce573d6000803e3d6000fd5b505050506040513d60208110156109e457600080fd5b8101908080519060200190929190505050905060008111610a6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f20737461626c65636f696e7321000000000000000000000000000000000081525060200191505060405180910390fd5b610a7a8433836000611676565b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610ae357600080fd5b505afa158015610af7573d6000803e3d6000fd5b505050506040513d6020811015610b0d57600080fd5b810190808051906020019092919050505014610b74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061280d6024913960400191505060405180910390fd5b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054031015610c08576000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c56565b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600081600a54031015610c70576000600a81905550610c81565b80600a600082825403925050819055505b5050505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806127de602f913960400191505060405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e2c57600080fd5b505afa158015610e40573d6000803e3d6000fd5b505050506040513d6020811015610e5657600080fd5b810190808051906020019092919050505090508273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610efc57600080fd5b505af1158015610f10573d6000803e3d6000fd5b505050506040513d6020811015610f2657600080fd5b8101908080519060200190929190505050610fa9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f61546f6b656e20617070726f76616c206661696c65640000000000000000000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369328dec84600a54850360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561108057600080fd5b505af1158015611094573d6000803e3d6000fd5b505050506040513d60208110156110aa57600080fd5b81019080805190602001909291905050501161112e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7769746864726177206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b50505050565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156111c557600080fd5b505afa1580156111d9573d6000803e3d6000fd5b505050506040513d60208110156111ef57600080fd5b81019080805190602001909291905050509050600a5481039250505090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506112428130600042611e44565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156112ab57600080fd5b505afa1580156112bf573d6000803e3d6000fd5b505050506040513d60208110156112d557600080fd5b810190808051906020019092919050505090506113276040518060400160405280601e81526020017f737461626c6520616d6f756e74206265666f7265206465706f7369743a20000081525082612544565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156113ba57600080fd5b505af11580156113ce573d6000803e3d6000fd5b505050506040513d60208110156113e457600080fd5b810190808051906020019092919050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8eda9df83833060006040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b1580156114b057600080fd5b505af11580156114c4573d6000803e3d6000fd5b505050506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061152e6040518060400160405280601d81526020017f737461626c6520616d6f756e74206166746572206465706f7369743a2000000081525083612544565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561159757600080fd5b505afa1580156115ab573d6000803e3d6000fd5b505050506040513d60208110156115c157600080fd5b810190808051906020019092919050505090506116136040518060400160405280601081526020017f61546f6b656e2062616c616e63653a200000000000000000000000000000000081525082612544565b82600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555082600a6000828254019250508190555050505050565b60008085905061173f604051806060016040528060238152602001612831602391398273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156116ff57600080fd5b505afa158015611713573d6000803e3d6000fd5b505050506040513d602081101561172957600080fd5b8101908080519060200190929190505050612544565b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156117d257600080fd5b505af11580156117e6573d6000803e3d6000fd5b505050506040513d60208110156117fc57600080fd5b810190808051906020019092919050505061187f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f756e697377617020617070726f76652829206661696c6564000000000000000081525060200191505060405180910390fd5b6060600267ffffffffffffffff8111801561189957600080fd5b506040519080825280602002602001820160405280156118c85781602001602082028036833780820191505090505b50905081816000815181106118d957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561197b57600080fd5b505afa15801561198f573d6000803e3d6000fd5b505050506040513d60208110156119a557600080fd5b8101908080519060200190929190505050816001815181106119c357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000841415611bb257600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f86836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015611a9e578082015181840152602081019050611a83565b50505050905001935050505060006040518083038186803b158015611ac257600080fd5b505afa158015611ad6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611b0057600080fd5b8101908080516040519392919084640100000000821115611b2057600080fd5b83820191506020820185811115611b3657600080fd5b8251866020820283011164010000000082111715611b5357600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611b8a578082015181840152602081019050611b6f565b50505050905001604052505050600181518110611ba357fe5b60200260200101519250611bb6565b8392505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58685848a426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611c79578082015181840152602081019050611c5e565b505050509050019650505050505050600060405180830381600087803b158015611ca257600080fd5b505af1158015611cb6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611ce057600080fd5b8101908080516040519392919084640100000000821115611d0057600080fd5b83820191506020820185811115611d1657600080fd5b8251866020820283011164010000000082111715611d3357600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611d6a578082015181840152602081019050611d4f565b5050505090500160405250505050611e3b6040518060600160405280602281526020016127bc602291398373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611dfb57600080fd5b505afa158015611e0f573d6000803e3d6000fd5b505050506040513d6020811015611e2557600080fd5b8101908080519060200190929190505050612544565b50505050505050565b600080859050611e896040518060400160405280600781526020017f77616c6c65743a000000000000000000000000000000000000000000000000008152503361264b565b6060600267ffffffffffffffff81118015611ea357600080fd5b50604051908082528060200260200182016040528015611ed25781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f3d57600080fd5b505afa158015611f51573d6000803e3d6000fd5b505050506040513d6020811015611f6757600080fd5b810190808051906020019092919050505081600081518110611f8557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110611fcd57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120e76040518060400160405280601a81526020017f746f6b656e2062616c616e6365206265666f726520737761703a0000000000008152508373ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156120a757600080fd5b505afa1580156120bb573d6000803e3d6000fd5b505050506040513d60208110156120d157600080fd5b8101908080519060200190929190505050612544565b600085141561229c57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f34836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561218857808201518184015260208101905061216d565b50505050905001935050505060006040518083038186803b1580156121ac57600080fd5b505afa1580156121c0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156121ea57600080fd5b810190808051604051939291908464010000000082111561220a57600080fd5b8382019150602082018581111561222057600080fd5b825186602082028301116401000000008211171561223d57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015612274578082015181840152602081019050612259565b5050505090500160405250505060018151811061228d57fe5b602002602001015192506122a0565b8492505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ff36ab53485848a896040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561235d578082015181840152602081019050612342565b50505050905001955050505050506000604051808303818588803b15801561238457600080fd5b505af1158015612398573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f8201168201806040525060208110156123c357600080fd5b81019080805160405193929190846401000000008211156123e357600080fd5b838201915060208201858111156123f957600080fd5b825186602082028301116401000000008211171561241657600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561244d578082015181840152602081019050612432565b505050509050016040525050505061253b6040518060400160405280601981526020017f746f6b656e2062616c616e636520616674657220737761703a000000000000008152508373ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156124fb57600080fd5b505afa15801561250f573d6000803e3d6000fd5b505050506040513d602081101561252557600080fd5b8101908080519060200190929190505050612544565b50505050505050565b61264782826040516024018080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015612592578082015181840152602081019050612577565b50505050905090810190601f1680156125bf5780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040527f9710a9d0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612768565b5050565b612764828260405160240180806020018373ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156126af578082015181840152602081019050612694565b50505050905090810190601f1680156126dc5780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040527f319af333000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612768565b5050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa505050505056fe417474656d7074696e6720746f207769746864726177206d6f7265207468616e206465706f7369746564636f6e747261637420746f6b656e2062616c616e636520616674657220737761703a4f6e6c7920746865206f776e6572206f662074686520706f6f6c2063616e2063616c6c2074686973206d6574686f6454686572652073686f756c646e277420626520737461626c65636f696e7320616761696e636f6e747261637420746f6b656e2062616c616e6365206265666f726520737761703aa2646970667358221220d4f960ac8549a4ffefbf5ad1466d45c5a81f57d13481675f3da50213f29905bc64736f6c63430007000033", "linkReferences": {}, "deployedLinkReferences": {} -} +} \ No newline at end of file diff --git a/frontend/src/contracts/PoolFactory.json b/frontend/src/contracts/PoolFactory.json index 8cef4c0..0183dc8 100644 --- a/frontend/src/contracts/PoolFactory.json +++ b/frontend/src/contracts/PoolFactory.json @@ -54,8 +54,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612e8f806100616000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633c5c7fb314610046578063673a2a1f146100765780638da5cb5b14610094575b600080fd5b610060600480360381019061005b9190610271565b6100b2565b60405161006d919061032e565b60405180910390f35b61007e61019b565b60405161008b9190610349565b60405180910390f35b61009c610229565b6040516100a9919061032e565b60405180910390f35b600080826040516100c29061024f565b6100cc919061032e565b604051809103906000f0801580156100e8573d6000803e3d6000fd5b5090506000819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000806001600080549050038154811061016457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508092505050919050565b6060600080548060200260200160405190810160405280929190818152602001828054801561021f57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116101d5575b5050505050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612a488061041283390190565b60008135905061026b816103fa565b92915050565b60006020828403121561028357600080fd5b60006102918482850161025c565b91505092915050565b60006102a6838361031f565b60208301905092915050565b6102bb816103a4565b82525050565b60006102cc8261037b565b6102d68185610393565b93506102e18361036b565b8060005b838110156103125781516102f9888261029a565b975061030483610386565b9250506001810190506102e5565b5085935050505092915050565b610328816103d6565b82525050565b600060208201905061034360008301846102b2565b92915050565b6000602082019050818103600083015261036381846102c1565b905092915050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b60006103af826103b6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103e1826103e8565b9050919050565b60006103f3826103b6565b9050919050565b610403816103a4565b811461040e57600080fd5b5056fe608060405273ff795577d9ac8bd7d90ee22b6c1703490b6512fd600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dcf0af9e59c002fa3aa091a46196b37530fd48a8600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dcfab8057d08634279f8201b55d311c2a67897d2600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f9155b335faa6c184ab2f2c4d5939d86268f3668600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e0fba4fc209b4948668006b2be61711b7f465bae600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561020e57600080fd5b50604051612a48380380612a488339818101604052602081101561023157600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506126f0806103586000396000f3fe6080604052600436106100c25760003560e01c806370a082311161007f578063b4dcfc7711610059578063b4dcfc7714610393578063d0e30db0146103d4578063d8264920146103de578063e0bab4c41461041f576100c2565b806370a08231146102ac57806389a30271146103115780638da5cb5b14610352576100c2565b806312b58349146100c757806312d4b07c146100f25780631a38a4fb1461016a5780632e1a7d4d146101ab578063559fda33146101e6578063594e135414610227575b600080fd5b3480156100d357600080fd5b506100dc610460565b6040518082815260200191505060405180910390f35b6101686004803603608081101561010857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061046a565b005b34801561017657600080fd5b5061017f610b6a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101b757600080fd5b506101e4600480360360208110156101ce57600080fd5b8101908080359060200190929190505050610b90565b005b3480156101f257600080fd5b506101fb611679565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561023357600080fd5b506102aa6004803603608081101561024a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061169f565b005b3480156102b857600080fd5b506102fb600480360360208110156102cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e6d565b6040518082815260200191505060405180910390f35b34801561031d57600080fd5b50610326611eb6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561035e57600080fd5b50610367611edc565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561039f57600080fd5b506103a8611f00565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103dc611f26565b005b3480156103ea57600080fd5b506103f361238e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561042b57600080fd5b506104346123b4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600a54905090565b6000808590506104af6040518060400160405280600781526020017f77616c6c65743a00000000000000000000000000000000000000000000000000815250336123da565b6060600267ffffffffffffffff811180156104c957600080fd5b506040519080825280602002602001820160405280156104f85781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561056357600080fd5b505afa158015610577573d6000803e3d6000fd5b505050506040513d602081101561058d57600080fd5b8101908080519060200190929190505050816000815181106105ab57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081816001815181106105f357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061070d6040518060400160405280601a81526020017f746f6b656e2062616c616e6365206265666f726520737761703a0000000000008152508373ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156106cd57600080fd5b505afa1580156106e1573d6000803e3d6000fd5b505050506040513d60208110156106f757600080fd5b81019080805190602001909291905050506124f7565b60008514156108c257600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f34836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156107ae578082015181840152602081019050610793565b50505050905001935050505060006040518083038186803b1580156107d257600080fd5b505afa1580156107e6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561081057600080fd5b810190808051604051939291908464010000000082111561083057600080fd5b8382019150602082018581111561084657600080fd5b825186602082028301116401000000008211171561086357600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561089a57808201518184015260208101905061087f565b505050509050016040525050506001815181106108b357fe5b602002602001015192506108c6565b8492505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ff36ab53485848a896040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610983578082015181840152602081019050610968565b50505050905001955050505050506000604051808303818588803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f8201168201806040525060208110156109e957600080fd5b8101908080516040519392919084640100000000821115610a0957600080fd5b83820191506020820185811115610a1f57600080fd5b8251866020820283011164010000000082111715610a3c57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015610a73578082015181840152602081019050610a58565b5050505090500160405250505050610b616040518060400160405280601981526020017f746f6b656e2062616c616e636520616674657220737761703a000000000000008152508373ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610b2157600080fd5b505afa158015610b35573d6000803e3d6000fd5b505050506040513d6020811015610b4b57600080fd5b81019080805190602001909291905050506124f7565b50505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610c28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612628602a913960400191505060405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610cdf57600080fd5b505afa158015610cf3573d6000803e3d6000fd5b505050506040513d6020811015610d0957600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610daf57600080fd5b505af1158015610dc3573d6000803e3d6000fd5b505050506040513d6020811015610dd957600080fd5b8101908080519060200190929190505050610e5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f61546f6b656e20617070726f76616c206661696c65640000000000000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610f0557600080fd5b505afa158015610f19573d6000803e3d6000fd5b505050506040513d6020811015610f2f57600080fd5b810190808051906020019092919050505011610fb3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f616c6c6f77616e636520746f6f206c6f7700000000000000000000000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561101c57600080fd5b505afa158015611030573d6000803e3d6000fd5b505050506040513d602081101561104657600080fd5b8101908080519060200190929190505050146110ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f54686572652073686f756c646e277420626520737461626c65636f696e73000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369328dec8584306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561117d57600080fd5b505af1158015611191573d6000803e3d6000fd5b505050506040513d60208110156111a757600080fd5b81019080805190602001909291905050501161122b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7769746864726177206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561129457600080fd5b505afa1580156112a8573d6000803e3d6000fd5b505050506040513d60208110156112be57600080fd5b810190808051906020019092919050505011611342576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686572652073686f756c6420626520737461626c65636f696e73000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156113ab57600080fd5b505afa1580156113bf573d6000803e3d6000fd5b505050506040513d60208110156113d557600080fd5b810190808051906020019092919050505090506000811161145e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f20737461626c65636f696e7321000000000000000000000000000000000081525060200191505060405180910390fd5b61146b843383600061169f565b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156114d457600080fd5b505afa1580156114e8573d6000803e3d6000fd5b505050506040513d60208110156114fe57600080fd5b810190808051906020019092919050505014611565576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806126746024913960400191505060405180910390fd5b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540310156115f9576000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611647565b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600081600a54031015611661576000600a81905550611672565b80600a600082825403925050819055505b5050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080859050611768604051806060016040528060238152602001612698602391398273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561172857600080fd5b505afa15801561173c573d6000803e3d6000fd5b505050506040513d602081101561175257600080fd5b81019080805190602001909291905050506124f7565b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156117fb57600080fd5b505af115801561180f573d6000803e3d6000fd5b505050506040513d602081101561182557600080fd5b81019080805190602001909291905050506118a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f756e697377617020617070726f76652829206661696c6564000000000000000081525060200191505060405180910390fd5b6060600267ffffffffffffffff811180156118c257600080fd5b506040519080825280602002602001820160405280156118f15781602001602082028036833780820191505090505b509050818160008151811061190257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119a457600080fd5b505afa1580156119b8573d6000803e3d6000fd5b505050506040513d60208110156119ce57600080fd5b8101908080519060200190929190505050816001815181106119ec57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000841415611bdb57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f86836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015611ac7578082015181840152602081019050611aac565b50505050905001935050505060006040518083038186803b158015611aeb57600080fd5b505afa158015611aff573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611b2957600080fd5b8101908080516040519392919084640100000000821115611b4957600080fd5b83820191506020820185811115611b5f57600080fd5b8251866020820283011164010000000082111715611b7c57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611bb3578082015181840152602081019050611b98565b50505050905001604052505050600181518110611bcc57fe5b60200260200101519250611bdf565b8392505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58685848a426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611ca2578082015181840152602081019050611c87565b505050509050019650505050505050600060405180830381600087803b158015611ccb57600080fd5b505af1158015611cdf573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611d0957600080fd5b8101908080516040519392919084640100000000821115611d2957600080fd5b83820191506020820185811115611d3f57600080fd5b8251866020820283011164010000000082111715611d5c57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611d93578082015181840152602081019050611d78565b5050505090500160405250505050611e64604051806060016040528060228152602001612652602291398373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611e2457600080fd5b505afa158015611e38573d6000803e3d6000fd5b505050506040513d6020811015611e4e57600080fd5b81019080805190602001909291905050506124f7565b50505050505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611f5a813060004261046a565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611fc357600080fd5b505afa158015611fd7573d6000803e3d6000fd5b505050506040513d6020811015611fed57600080fd5b8101908080519060200190929190505050905061203f6040518060400160405280601e81526020017f737461626c6520616d6f756e74206265666f7265206465706f7369743a200000815250826124f7565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156120d257600080fd5b505af11580156120e6573d6000803e3d6000fd5b505050506040513d60208110156120fc57600080fd5b810190808051906020019092919050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8eda9df83833060006040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b1580156121c857600080fd5b505af11580156121dc573d6000803e3d6000fd5b505050506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506122466040518060400160405280601d81526020017f737461626c6520616d6f756e74206166746572206465706f7369743a20000000815250836124f7565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156122af57600080fd5b505afa1580156122c3573d6000803e3d6000fd5b505050506040513d60208110156122d957600080fd5b8101908080519060200190929190505050905061232b6040518060400160405280601081526020017f61546f6b656e2062616c616e63653a2000000000000000000000000000000000815250826124f7565b82600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555082600a6000828254019250508190555050505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6124f3828260405160240180806020018373ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b8381101561243e578082015181840152602081019050612423565b50505050905090810190601f16801561246b5780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040527f319af333000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125fe565b5050565b6125fa82826040516024018080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561254557808201518184015260208101905061252a565b50505050905090810190601f1680156125725780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040527f9710a9d0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125fe565b5050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa505050505056fe417474656d7074696e6720746f207769746864726177206d6f7265207468616e206465706f7369746564636f6e747261637420746f6b656e2062616c616e636520616674657220737761703a54686572652073686f756c646e277420626520737461626c65636f696e7320616761696e636f6e747261637420746f6b656e2062616c616e6365206265666f726520737761703aa26469706673582212204136dfdc04d4f6c9df6d85d148d6ad529a3aa64eca501b72a04c69110ad3a97764736f6c63430007000033a2646970667358221220b9f75ac18a74f179fa5812c959fb43f98ebef1dc618447b1441981724c4c4c9e64736f6c63430007000033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633c5c7fb314610046578063673a2a1f146100765780638da5cb5b14610094575b600080fd5b610060600480360381019061005b9190610271565b6100b2565b60405161006d919061032e565b60405180910390f35b61007e61019b565b60405161008b9190610349565b60405180910390f35b61009c610229565b6040516100a9919061032e565b60405180910390f35b600080826040516100c29061024f565b6100cc919061032e565b604051809103906000f0801580156100e8573d6000803e3d6000fd5b5090506000819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000806001600080549050038154811061016457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508092505050919050565b6060600080548060200260200160405190810160405280929190818152602001828054801561021f57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116101d5575b5050505050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612a488061041283390190565b60008135905061026b816103fa565b92915050565b60006020828403121561028357600080fd5b60006102918482850161025c565b91505092915050565b60006102a6838361031f565b60208301905092915050565b6102bb816103a4565b82525050565b60006102cc8261037b565b6102d68185610393565b93506102e18361036b565b8060005b838110156103125781516102f9888261029a565b975061030483610386565b9250506001810190506102e5565b5085935050505092915050565b610328816103d6565b82525050565b600060208201905061034360008301846102b2565b92915050565b6000602082019050818103600083015261036381846102c1565b905092915050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b60006103af826103b6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103e1826103e8565b9050919050565b60006103f3826103b6565b9050919050565b610403816103a4565b811461040e57600080fd5b5056fe608060405273ff795577d9ac8bd7d90ee22b6c1703490b6512fd600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dcf0af9e59c002fa3aa091a46196b37530fd48a8600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dcfab8057d08634279f8201b55d311c2a67897d2600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f9155b335faa6c184ab2f2c4d5939d86268f3668600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e0fba4fc209b4948668006b2be61711b7f465bae600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561020e57600080fd5b50604051612a48380380612a488339818101604052602081101561023157600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506126f0806103586000396000f3fe6080604052600436106100c25760003560e01c806370a082311161007f578063b4dcfc7711610059578063b4dcfc7714610393578063d0e30db0146103d4578063d8264920146103de578063e0bab4c41461041f576100c2565b806370a08231146102ac57806389a30271146103115780638da5cb5b14610352576100c2565b806312b58349146100c757806312d4b07c146100f25780631a38a4fb1461016a5780632e1a7d4d146101ab578063559fda33146101e6578063594e135414610227575b600080fd5b3480156100d357600080fd5b506100dc610460565b6040518082815260200191505060405180910390f35b6101686004803603608081101561010857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061046a565b005b34801561017657600080fd5b5061017f610b6a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101b757600080fd5b506101e4600480360360208110156101ce57600080fd5b8101908080359060200190929190505050610b90565b005b3480156101f257600080fd5b506101fb611679565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561023357600080fd5b506102aa6004803603608081101561024a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061169f565b005b3480156102b857600080fd5b506102fb600480360360208110156102cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e6d565b6040518082815260200191505060405180910390f35b34801561031d57600080fd5b50610326611eb6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561035e57600080fd5b50610367611edc565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561039f57600080fd5b506103a8611f00565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103dc611f26565b005b3480156103ea57600080fd5b506103f361238e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561042b57600080fd5b506104346123b4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600a54905090565b6000808590506104af6040518060400160405280600781526020017f77616c6c65743a00000000000000000000000000000000000000000000000000815250336123da565b6060600267ffffffffffffffff811180156104c957600080fd5b506040519080825280602002602001820160405280156104f85781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561056357600080fd5b505afa158015610577573d6000803e3d6000fd5b505050506040513d602081101561058d57600080fd5b8101908080519060200190929190505050816000815181106105ab57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081816001815181106105f357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061070d6040518060400160405280601a81526020017f746f6b656e2062616c616e6365206265666f726520737761703a0000000000008152508373ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156106cd57600080fd5b505afa1580156106e1573d6000803e3d6000fd5b505050506040513d60208110156106f757600080fd5b81019080805190602001909291905050506124f7565b60008514156108c257600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f34836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156107ae578082015181840152602081019050610793565b50505050905001935050505060006040518083038186803b1580156107d257600080fd5b505afa1580156107e6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561081057600080fd5b810190808051604051939291908464010000000082111561083057600080fd5b8382019150602082018581111561084657600080fd5b825186602082028301116401000000008211171561086357600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561089a57808201518184015260208101905061087f565b505050509050016040525050506001815181106108b357fe5b602002602001015192506108c6565b8492505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ff36ab53485848a896040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610983578082015181840152602081019050610968565b50505050905001955050505050506000604051808303818588803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f8201168201806040525060208110156109e957600080fd5b8101908080516040519392919084640100000000821115610a0957600080fd5b83820191506020820185811115610a1f57600080fd5b8251866020820283011164010000000082111715610a3c57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015610a73578082015181840152602081019050610a58565b5050505090500160405250505050610b616040518060400160405280601981526020017f746f6b656e2062616c616e636520616674657220737761703a000000000000008152508373ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610b2157600080fd5b505afa158015610b35573d6000803e3d6000fd5b505050506040513d6020811015610b4b57600080fd5b81019080805190602001909291905050506124f7565b50505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610c28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612628602a913960400191505060405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610cdf57600080fd5b505afa158015610cf3573d6000803e3d6000fd5b505050506040513d6020811015610d0957600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610daf57600080fd5b505af1158015610dc3573d6000803e3d6000fd5b505050506040513d6020811015610dd957600080fd5b8101908080519060200190929190505050610e5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f61546f6b656e20617070726f76616c206661696c65640000000000000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610f0557600080fd5b505afa158015610f19573d6000803e3d6000fd5b505050506040513d6020811015610f2f57600080fd5b810190808051906020019092919050505011610fb3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f616c6c6f77616e636520746f6f206c6f7700000000000000000000000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561101c57600080fd5b505afa158015611030573d6000803e3d6000fd5b505050506040513d602081101561104657600080fd5b8101908080519060200190929190505050146110ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f54686572652073686f756c646e277420626520737461626c65636f696e73000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369328dec8584306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561117d57600080fd5b505af1158015611191573d6000803e3d6000fd5b505050506040513d60208110156111a757600080fd5b81019080805190602001909291905050501161122b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7769746864726177206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561129457600080fd5b505afa1580156112a8573d6000803e3d6000fd5b505050506040513d60208110156112be57600080fd5b810190808051906020019092919050505011611342576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686572652073686f756c6420626520737461626c65636f696e73000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156113ab57600080fd5b505afa1580156113bf573d6000803e3d6000fd5b505050506040513d60208110156113d557600080fd5b810190808051906020019092919050505090506000811161145e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f20737461626c65636f696e7321000000000000000000000000000000000081525060200191505060405180910390fd5b61146b843383600061169f565b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156114d457600080fd5b505afa1580156114e8573d6000803e3d6000fd5b505050506040513d60208110156114fe57600080fd5b810190808051906020019092919050505014611565576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806126746024913960400191505060405180910390fd5b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540310156115f9576000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611647565b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600081600a54031015611661576000600a81905550611672565b80600a600082825403925050819055505b5050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080859050611768604051806060016040528060238152602001612698602391398273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561172857600080fd5b505afa15801561173c573d6000803e3d6000fd5b505050506040513d602081101561175257600080fd5b81019080805190602001909291905050506124f7565b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156117fb57600080fd5b505af115801561180f573d6000803e3d6000fd5b505050506040513d602081101561182557600080fd5b81019080805190602001909291905050506118a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f756e697377617020617070726f76652829206661696c6564000000000000000081525060200191505060405180910390fd5b6060600267ffffffffffffffff811180156118c257600080fd5b506040519080825280602002602001820160405280156118f15781602001602082028036833780820191505090505b509050818160008151811061190257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119a457600080fd5b505afa1580156119b8573d6000803e3d6000fd5b505050506040513d60208110156119ce57600080fd5b8101908080519060200190929190505050816001815181106119ec57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000841415611bdb57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f86836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015611ac7578082015181840152602081019050611aac565b50505050905001935050505060006040518083038186803b158015611aeb57600080fd5b505afa158015611aff573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611b2957600080fd5b8101908080516040519392919084640100000000821115611b4957600080fd5b83820191506020820185811115611b5f57600080fd5b8251866020820283011164010000000082111715611b7c57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611bb3578082015181840152602081019050611b98565b50505050905001604052505050600181518110611bcc57fe5b60200260200101519250611bdf565b8392505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58685848a426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611ca2578082015181840152602081019050611c87565b505050509050019650505050505050600060405180830381600087803b158015611ccb57600080fd5b505af1158015611cdf573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611d0957600080fd5b8101908080516040519392919084640100000000821115611d2957600080fd5b83820191506020820185811115611d3f57600080fd5b8251866020820283011164010000000082111715611d5c57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611d93578082015181840152602081019050611d78565b5050505090500160405250505050611e64604051806060016040528060228152602001612652602291398373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611e2457600080fd5b505afa158015611e38573d6000803e3d6000fd5b505050506040513d6020811015611e4e57600080fd5b81019080805190602001909291905050506124f7565b50505050505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611f5a813060004261046a565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611fc357600080fd5b505afa158015611fd7573d6000803e3d6000fd5b505050506040513d6020811015611fed57600080fd5b8101908080519060200190929190505050905061203f6040518060400160405280601e81526020017f737461626c6520616d6f756e74206265666f7265206465706f7369743a200000815250826124f7565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156120d257600080fd5b505af11580156120e6573d6000803e3d6000fd5b505050506040513d60208110156120fc57600080fd5b810190808051906020019092919050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8eda9df83833060006040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b1580156121c857600080fd5b505af11580156121dc573d6000803e3d6000fd5b505050506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506122466040518060400160405280601d81526020017f737461626c6520616d6f756e74206166746572206465706f7369743a20000000815250836124f7565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156122af57600080fd5b505afa1580156122c3573d6000803e3d6000fd5b505050506040513d60208110156122d957600080fd5b8101908080519060200190929190505050905061232b6040518060400160405280601081526020017f61546f6b656e2062616c616e63653a2000000000000000000000000000000000815250826124f7565b82600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555082600a6000828254019250508190555050505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6124f3828260405160240180806020018373ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b8381101561243e578082015181840152602081019050612423565b50505050905090810190601f16801561246b5780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040527f319af333000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125fe565b5050565b6125fa82826040516024018080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561254557808201518184015260208101905061252a565b50505050905090810190601f1680156125725780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040527f9710a9d0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125fe565b5050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa505050505056fe417474656d7074696e6720746f207769746864726177206d6f7265207468616e206465706f7369746564636f6e747261637420746f6b656e2062616c616e636520616674657220737761703a54686572652073686f756c646e277420626520737461626c65636f696e7320616761696e636f6e747261637420746f6b656e2062616c616e6365206265666f726520737761703aa26469706673582212204136dfdc04d4f6c9df6d85d148d6ad529a3aa64eca501b72a04c69110ad3a97764736f6c63430007000033a2646970667358221220b9f75ac18a74f179fa5812c959fb43f98ebef1dc618447b1441981724c4c4c9e64736f6c63430007000033", + "bytecode": "0x608060405234801561001057600080fd5b5033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613028806100616000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633c5c7fb314610046578063673a2a1f146100765780638da5cb5b14610094575b600080fd5b610060600480360381019061005b9190610271565b6100b2565b60405161006d919061032e565b60405180910390f35b61007e61019b565b60405161008b9190610349565b60405180910390f35b61009c610229565b6040516100a9919061032e565b60405180910390f35b600080826040516100c29061024f565b6100cc919061032e565b604051809103906000f0801580156100e8573d6000803e3d6000fd5b5090506000819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000806001600080549050038154811061016457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508092505050919050565b6060600080548060200260200160405190810160405280929190818152602001828054801561021f57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116101d5575b5050505050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612be18061041283390190565b60008135905061026b816103fa565b92915050565b60006020828403121561028357600080fd5b60006102918482850161025c565b91505092915050565b60006102a6838361031f565b60208301905092915050565b6102bb816103a4565b82525050565b60006102cc8261037b565b6102d68185610393565b93506102e18361036b565b8060005b838110156103125781516102f9888261029a565b975061030483610386565b9250506001810190506102e5565b5085935050505092915050565b610328816103d6565b82525050565b600060208201905061034360008301846102b2565b92915050565b6000602082019050818103600083015261036381846102c1565b905092915050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b60006103af826103b6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103e1826103e8565b9050919050565b60006103f3826103b6565b9050919050565b610403816103a4565b811461040e57600080fd5b5056fe608060405273ff795577d9ac8bd7d90ee22b6c1703490b6512fd600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dcf0af9e59c002fa3aa091a46196b37530fd48a8600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dcfab8057d08634279f8201b55d311c2a67897d2600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f9155b335faa6c184ab2f2c4d5939d86268f3668600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e0fba4fc209b4948668006b2be61711b7f465bae600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561020e57600080fd5b50604051612be1380380612be18339818101604052602081101561023157600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050612889806103586000396000f3fe6080604052600436106100555760003560e01c806312b583491461005a5780632e1a7d4d1461008557806370a08231146100c057806371eb89f314610125578063a432548514610160578063d0e30db01461018b575b600080fd5b34801561006657600080fd5b5061006f610195565b6040518082815260200191505060405180910390f35b34801561009157600080fd5b506100be600480360360208110156100a857600080fd5b810190808035906020019092919050505061019f565b005b3480156100cc57600080fd5b5061010f600480360360208110156100e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c88565b6040518082815260200191505060405180910390f35b34801561013157600080fd5b5061015e6004803603602081101561014857600080fd5b8101908080359060200190929190505050610cd1565b005b34801561016c57600080fd5b50610175611134565b6040518082815260200191505060405180910390f35b61019361120e565b005b6000600a54905090565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612792602a913960400191505060405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156102ee57600080fd5b505afa158015610302573d6000803e3d6000fd5b505050506040513d602081101561031857600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156103be57600080fd5b505af11580156103d2573d6000803e3d6000fd5b505050506040513d60208110156103e857600080fd5b810190808051906020019092919050505061046b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f61546f6b656e20617070726f76616c206661696c65640000000000000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561051457600080fd5b505afa158015610528573d6000803e3d6000fd5b505050506040513d602081101561053e57600080fd5b8101908080519060200190929190505050116105c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f616c6c6f77616e636520746f6f206c6f7700000000000000000000000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561062b57600080fd5b505afa15801561063f573d6000803e3d6000fd5b505050506040513d602081101561065557600080fd5b8101908080519060200190929190505050146106d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f54686572652073686f756c646e277420626520737461626c65636f696e73000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369328dec8584306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561078c57600080fd5b505af11580156107a0573d6000803e3d6000fd5b505050506040513d60208110156107b657600080fd5b81019080805190602001909291905050501161083a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7769746864726177206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156108a357600080fd5b505afa1580156108b7573d6000803e3d6000fd5b505050506040513d60208110156108cd57600080fd5b810190808051906020019092919050505011610951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686572652073686f756c6420626520737461626c65636f696e73000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156109ba57600080fd5b505afa1580156109ce573d6000803e3d6000fd5b505050506040513d60208110156109e457600080fd5b8101908080519060200190929190505050905060008111610a6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f20737461626c65636f696e7321000000000000000000000000000000000081525060200191505060405180910390fd5b610a7a8433836000611676565b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610ae357600080fd5b505afa158015610af7573d6000803e3d6000fd5b505050506040513d6020811015610b0d57600080fd5b810190808051906020019092919050505014610b74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061280d6024913960400191505060405180910390fd5b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054031015610c08576000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c56565b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600081600a54031015610c70576000600a81905550610c81565b80600a600082825403925050819055505b5050505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806127de602f913960400191505060405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e2c57600080fd5b505afa158015610e40573d6000803e3d6000fd5b505050506040513d6020811015610e5657600080fd5b810190808051906020019092919050505090508273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610efc57600080fd5b505af1158015610f10573d6000803e3d6000fd5b505050506040513d6020811015610f2657600080fd5b8101908080519060200190929190505050610fa9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f61546f6b656e20617070726f76616c206661696c65640000000000000000000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369328dec84600a54850360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561108057600080fd5b505af1158015611094573d6000803e3d6000fd5b505050506040513d60208110156110aa57600080fd5b81019080805190602001909291905050501161112e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7769746864726177206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b50505050565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156111c557600080fd5b505afa1580156111d9573d6000803e3d6000fd5b505050506040513d60208110156111ef57600080fd5b81019080805190602001909291905050509050600a5481039250505090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506112428130600042611e44565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156112ab57600080fd5b505afa1580156112bf573d6000803e3d6000fd5b505050506040513d60208110156112d557600080fd5b810190808051906020019092919050505090506113276040518060400160405280601e81526020017f737461626c6520616d6f756e74206265666f7265206465706f7369743a20000081525082612544565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156113ba57600080fd5b505af11580156113ce573d6000803e3d6000fd5b505050506040513d60208110156113e457600080fd5b810190808051906020019092919050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8eda9df83833060006040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b1580156114b057600080fd5b505af11580156114c4573d6000803e3d6000fd5b505050506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061152e6040518060400160405280601d81526020017f737461626c6520616d6f756e74206166746572206465706f7369743a2000000081525083612544565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561159757600080fd5b505afa1580156115ab573d6000803e3d6000fd5b505050506040513d60208110156115c157600080fd5b810190808051906020019092919050505090506116136040518060400160405280601081526020017f61546f6b656e2062616c616e63653a200000000000000000000000000000000081525082612544565b82600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555082600a6000828254019250508190555050505050565b60008085905061173f604051806060016040528060238152602001612831602391398273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156116ff57600080fd5b505afa158015611713573d6000803e3d6000fd5b505050506040513d602081101561172957600080fd5b8101908080519060200190929190505050612544565b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156117d257600080fd5b505af11580156117e6573d6000803e3d6000fd5b505050506040513d60208110156117fc57600080fd5b810190808051906020019092919050505061187f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f756e697377617020617070726f76652829206661696c6564000000000000000081525060200191505060405180910390fd5b6060600267ffffffffffffffff8111801561189957600080fd5b506040519080825280602002602001820160405280156118c85781602001602082028036833780820191505090505b50905081816000815181106118d957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561197b57600080fd5b505afa15801561198f573d6000803e3d6000fd5b505050506040513d60208110156119a557600080fd5b8101908080519060200190929190505050816001815181106119c357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000841415611bb257600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f86836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015611a9e578082015181840152602081019050611a83565b50505050905001935050505060006040518083038186803b158015611ac257600080fd5b505afa158015611ad6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611b0057600080fd5b8101908080516040519392919084640100000000821115611b2057600080fd5b83820191506020820185811115611b3657600080fd5b8251866020820283011164010000000082111715611b5357600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611b8a578082015181840152602081019050611b6f565b50505050905001604052505050600181518110611ba357fe5b60200260200101519250611bb6565b8392505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58685848a426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611c79578082015181840152602081019050611c5e565b505050509050019650505050505050600060405180830381600087803b158015611ca257600080fd5b505af1158015611cb6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611ce057600080fd5b8101908080516040519392919084640100000000821115611d0057600080fd5b83820191506020820185811115611d1657600080fd5b8251866020820283011164010000000082111715611d3357600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611d6a578082015181840152602081019050611d4f565b5050505090500160405250505050611e3b6040518060600160405280602281526020016127bc602291398373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611dfb57600080fd5b505afa158015611e0f573d6000803e3d6000fd5b505050506040513d6020811015611e2557600080fd5b8101908080519060200190929190505050612544565b50505050505050565b600080859050611e896040518060400160405280600781526020017f77616c6c65743a000000000000000000000000000000000000000000000000008152503361264b565b6060600267ffffffffffffffff81118015611ea357600080fd5b50604051908082528060200260200182016040528015611ed25781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f3d57600080fd5b505afa158015611f51573d6000803e3d6000fd5b505050506040513d6020811015611f6757600080fd5b810190808051906020019092919050505081600081518110611f8557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110611fcd57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120e76040518060400160405280601a81526020017f746f6b656e2062616c616e6365206265666f726520737761703a0000000000008152508373ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156120a757600080fd5b505afa1580156120bb573d6000803e3d6000fd5b505050506040513d60208110156120d157600080fd5b8101908080519060200190929190505050612544565b600085141561229c57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f34836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561218857808201518184015260208101905061216d565b50505050905001935050505060006040518083038186803b1580156121ac57600080fd5b505afa1580156121c0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156121ea57600080fd5b810190808051604051939291908464010000000082111561220a57600080fd5b8382019150602082018581111561222057600080fd5b825186602082028301116401000000008211171561223d57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015612274578082015181840152602081019050612259565b5050505090500160405250505060018151811061228d57fe5b602002602001015192506122a0565b8492505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ff36ab53485848a896040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561235d578082015181840152602081019050612342565b50505050905001955050505050506000604051808303818588803b15801561238457600080fd5b505af1158015612398573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f8201168201806040525060208110156123c357600080fd5b81019080805160405193929190846401000000008211156123e357600080fd5b838201915060208201858111156123f957600080fd5b825186602082028301116401000000008211171561241657600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561244d578082015181840152602081019050612432565b505050509050016040525050505061253b6040518060400160405280601981526020017f746f6b656e2062616c616e636520616674657220737761703a000000000000008152508373ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156124fb57600080fd5b505afa15801561250f573d6000803e3d6000fd5b505050506040513d602081101561252557600080fd5b8101908080519060200190929190505050612544565b50505050505050565b61264782826040516024018080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015612592578082015181840152602081019050612577565b50505050905090810190601f1680156125bf5780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040527f9710a9d0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612768565b5050565b612764828260405160240180806020018373ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156126af578082015181840152602081019050612694565b50505050905090810190601f1680156126dc5780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040527f319af333000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612768565b5050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa505050505056fe417474656d7074696e6720746f207769746864726177206d6f7265207468616e206465706f7369746564636f6e747261637420746f6b656e2062616c616e636520616674657220737761703a4f6e6c7920746865206f776e6572206f662074686520706f6f6c2063616e2063616c6c2074686973206d6574686f6454686572652073686f756c646e277420626520737461626c65636f696e7320616761696e636f6e747261637420746f6b656e2062616c616e6365206265666f726520737761703aa2646970667358221220d4f960ac8549a4ffefbf5ad1466d45c5a81f57d13481675f3da50213f29905bc64736f6c63430007000033a26469706673582212204f199340014e61c3414ee27112cf64de776d9820c1558fa23e3953112a559ed164736f6c63430007000033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633c5c7fb314610046578063673a2a1f146100765780638da5cb5b14610094575b600080fd5b610060600480360381019061005b9190610271565b6100b2565b60405161006d919061032e565b60405180910390f35b61007e61019b565b60405161008b9190610349565b60405180910390f35b61009c610229565b6040516100a9919061032e565b60405180910390f35b600080826040516100c29061024f565b6100cc919061032e565b604051809103906000f0801580156100e8573d6000803e3d6000fd5b5090506000819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000806001600080549050038154811061016457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508092505050919050565b6060600080548060200260200160405190810160405280929190818152602001828054801561021f57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116101d5575b5050505050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612be18061041283390190565b60008135905061026b816103fa565b92915050565b60006020828403121561028357600080fd5b60006102918482850161025c565b91505092915050565b60006102a6838361031f565b60208301905092915050565b6102bb816103a4565b82525050565b60006102cc8261037b565b6102d68185610393565b93506102e18361036b565b8060005b838110156103125781516102f9888261029a565b975061030483610386565b9250506001810190506102e5565b5085935050505092915050565b610328816103d6565b82525050565b600060208201905061034360008301846102b2565b92915050565b6000602082019050818103600083015261036381846102c1565b905092915050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b60006103af826103b6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103e1826103e8565b9050919050565b60006103f3826103b6565b9050919050565b610403816103a4565b811461040e57600080fd5b5056fe608060405273ff795577d9ac8bd7d90ee22b6c1703490b6512fd600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dcf0af9e59c002fa3aa091a46196b37530fd48a8600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dcfab8057d08634279f8201b55d311c2a67897d2600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f9155b335faa6c184ab2f2c4d5939d86268f3668600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e0fba4fc209b4948668006b2be61711b7f465bae600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561020e57600080fd5b50604051612be1380380612be18339818101604052602081101561023157600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050612889806103586000396000f3fe6080604052600436106100555760003560e01c806312b583491461005a5780632e1a7d4d1461008557806370a08231146100c057806371eb89f314610125578063a432548514610160578063d0e30db01461018b575b600080fd5b34801561006657600080fd5b5061006f610195565b6040518082815260200191505060405180910390f35b34801561009157600080fd5b506100be600480360360208110156100a857600080fd5b810190808035906020019092919050505061019f565b005b3480156100cc57600080fd5b5061010f600480360360208110156100e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c88565b6040518082815260200191505060405180910390f35b34801561013157600080fd5b5061015e6004803603602081101561014857600080fd5b8101908080359060200190929190505050610cd1565b005b34801561016c57600080fd5b50610175611134565b6040518082815260200191505060405180910390f35b61019361120e565b005b6000600a54905090565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612792602a913960400191505060405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156102ee57600080fd5b505afa158015610302573d6000803e3d6000fd5b505050506040513d602081101561031857600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156103be57600080fd5b505af11580156103d2573d6000803e3d6000fd5b505050506040513d60208110156103e857600080fd5b810190808051906020019092919050505061046b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f61546f6b656e20617070726f76616c206661696c65640000000000000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561051457600080fd5b505afa158015610528573d6000803e3d6000fd5b505050506040513d602081101561053e57600080fd5b8101908080519060200190929190505050116105c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f616c6c6f77616e636520746f6f206c6f7700000000000000000000000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561062b57600080fd5b505afa15801561063f573d6000803e3d6000fd5b505050506040513d602081101561065557600080fd5b8101908080519060200190929190505050146106d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f54686572652073686f756c646e277420626520737461626c65636f696e73000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369328dec8584306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561078c57600080fd5b505af11580156107a0573d6000803e3d6000fd5b505050506040513d60208110156107b657600080fd5b81019080805190602001909291905050501161083a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7769746864726177206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156108a357600080fd5b505afa1580156108b7573d6000803e3d6000fd5b505050506040513d60208110156108cd57600080fd5b810190808051906020019092919050505011610951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686572652073686f756c6420626520737461626c65636f696e73000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156109ba57600080fd5b505afa1580156109ce573d6000803e3d6000fd5b505050506040513d60208110156109e457600080fd5b8101908080519060200190929190505050905060008111610a6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f20737461626c65636f696e7321000000000000000000000000000000000081525060200191505060405180910390fd5b610a7a8433836000611676565b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610ae357600080fd5b505afa158015610af7573d6000803e3d6000fd5b505050506040513d6020811015610b0d57600080fd5b810190808051906020019092919050505014610b74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061280d6024913960400191505060405180910390fd5b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054031015610c08576000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c56565b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600081600a54031015610c70576000600a81905550610c81565b80600a600082825403925050819055505b5050505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806127de602f913960400191505060405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e2c57600080fd5b505afa158015610e40573d6000803e3d6000fd5b505050506040513d6020811015610e5657600080fd5b810190808051906020019092919050505090508273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610efc57600080fd5b505af1158015610f10573d6000803e3d6000fd5b505050506040513d6020811015610f2657600080fd5b8101908080519060200190929190505050610fa9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f61546f6b656e20617070726f76616c206661696c65640000000000000000000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369328dec84600a54850360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561108057600080fd5b505af1158015611094573d6000803e3d6000fd5b505050506040513d60208110156110aa57600080fd5b81019080805190602001909291905050501161112e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7769746864726177206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b50505050565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156111c557600080fd5b505afa1580156111d9573d6000803e3d6000fd5b505050506040513d60208110156111ef57600080fd5b81019080805190602001909291905050509050600a5481039250505090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506112428130600042611e44565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156112ab57600080fd5b505afa1580156112bf573d6000803e3d6000fd5b505050506040513d60208110156112d557600080fd5b810190808051906020019092919050505090506113276040518060400160405280601e81526020017f737461626c6520616d6f756e74206265666f7265206465706f7369743a20000081525082612544565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156113ba57600080fd5b505af11580156113ce573d6000803e3d6000fd5b505050506040513d60208110156113e457600080fd5b810190808051906020019092919050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8eda9df83833060006040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b1580156114b057600080fd5b505af11580156114c4573d6000803e3d6000fd5b505050506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061152e6040518060400160405280601d81526020017f737461626c6520616d6f756e74206166746572206465706f7369743a2000000081525083612544565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561159757600080fd5b505afa1580156115ab573d6000803e3d6000fd5b505050506040513d60208110156115c157600080fd5b810190808051906020019092919050505090506116136040518060400160405280601081526020017f61546f6b656e2062616c616e63653a200000000000000000000000000000000081525082612544565b82600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555082600a6000828254019250508190555050505050565b60008085905061173f604051806060016040528060238152602001612831602391398273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156116ff57600080fd5b505afa158015611713573d6000803e3d6000fd5b505050506040513d602081101561172957600080fd5b8101908080519060200190929190505050612544565b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156117d257600080fd5b505af11580156117e6573d6000803e3d6000fd5b505050506040513d60208110156117fc57600080fd5b810190808051906020019092919050505061187f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f756e697377617020617070726f76652829206661696c6564000000000000000081525060200191505060405180910390fd5b6060600267ffffffffffffffff8111801561189957600080fd5b506040519080825280602002602001820160405280156118c85781602001602082028036833780820191505090505b50905081816000815181106118d957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561197b57600080fd5b505afa15801561198f573d6000803e3d6000fd5b505050506040513d60208110156119a557600080fd5b8101908080519060200190929190505050816001815181106119c357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000841415611bb257600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f86836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015611a9e578082015181840152602081019050611a83565b50505050905001935050505060006040518083038186803b158015611ac257600080fd5b505afa158015611ad6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611b0057600080fd5b8101908080516040519392919084640100000000821115611b2057600080fd5b83820191506020820185811115611b3657600080fd5b8251866020820283011164010000000082111715611b5357600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611b8a578082015181840152602081019050611b6f565b50505050905001604052505050600181518110611ba357fe5b60200260200101519250611bb6565b8392505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58685848a426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611c79578082015181840152602081019050611c5e565b505050509050019650505050505050600060405180830381600087803b158015611ca257600080fd5b505af1158015611cb6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611ce057600080fd5b8101908080516040519392919084640100000000821115611d0057600080fd5b83820191506020820185811115611d1657600080fd5b8251866020820283011164010000000082111715611d3357600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611d6a578082015181840152602081019050611d4f565b5050505090500160405250505050611e3b6040518060600160405280602281526020016127bc602291398373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611dfb57600080fd5b505afa158015611e0f573d6000803e3d6000fd5b505050506040513d6020811015611e2557600080fd5b8101908080519060200190929190505050612544565b50505050505050565b600080859050611e896040518060400160405280600781526020017f77616c6c65743a000000000000000000000000000000000000000000000000008152503361264b565b6060600267ffffffffffffffff81118015611ea357600080fd5b50604051908082528060200260200182016040528015611ed25781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f3d57600080fd5b505afa158015611f51573d6000803e3d6000fd5b505050506040513d6020811015611f6757600080fd5b810190808051906020019092919050505081600081518110611f8557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110611fcd57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120e76040518060400160405280601a81526020017f746f6b656e2062616c616e6365206265666f726520737761703a0000000000008152508373ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156120a757600080fd5b505afa1580156120bb573d6000803e3d6000fd5b505050506040513d60208110156120d157600080fd5b8101908080519060200190929190505050612544565b600085141561229c57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f34836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561218857808201518184015260208101905061216d565b50505050905001935050505060006040518083038186803b1580156121ac57600080fd5b505afa1580156121c0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156121ea57600080fd5b810190808051604051939291908464010000000082111561220a57600080fd5b8382019150602082018581111561222057600080fd5b825186602082028301116401000000008211171561223d57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015612274578082015181840152602081019050612259565b5050505090500160405250505060018151811061228d57fe5b602002602001015192506122a0565b8492505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ff36ab53485848a896040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561235d578082015181840152602081019050612342565b50505050905001955050505050506000604051808303818588803b15801561238457600080fd5b505af1158015612398573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f8201168201806040525060208110156123c357600080fd5b81019080805160405193929190846401000000008211156123e357600080fd5b838201915060208201858111156123f957600080fd5b825186602082028301116401000000008211171561241657600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561244d578082015181840152602081019050612432565b505050509050016040525050505061253b6040518060400160405280601981526020017f746f6b656e2062616c616e636520616674657220737761703a000000000000008152508373ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156124fb57600080fd5b505afa15801561250f573d6000803e3d6000fd5b505050506040513d602081101561252557600080fd5b8101908080519060200190929190505050612544565b50505050505050565b61264782826040516024018080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015612592578082015181840152602081019050612577565b50505050905090810190601f1680156125bf5780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040527f9710a9d0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612768565b5050565b612764828260405160240180806020018373ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156126af578082015181840152602081019050612694565b50505050905090810190601f1680156126dc5780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040527f319af333000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612768565b5050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa505050505056fe417474656d7074696e6720746f207769746864726177206d6f7265207468616e206465706f7369746564636f6e747261637420746f6b656e2062616c616e636520616674657220737761703a4f6e6c7920746865206f776e6572206f662074686520706f6f6c2063616e2063616c6c2074686973206d6574686f6454686572652073686f756c646e277420626520737461626c65636f696e7320616761696e636f6e747261637420746f6b656e2062616c616e6365206265666f726520737761703aa2646970667358221220d4f960ac8549a4ffefbf5ad1466d45c5a81f57d13481675f3da50213f29905bc64736f6c63430007000033a26469706673582212204f199340014e61c3414ee27112cf64de776d9820c1558fa23e3953112a559ed164736f6c63430007000033", "linkReferences": {}, "deployedLinkReferences": {} -} +} \ No newline at end of file diff --git a/frontend/src/contracts/contract-address.json b/frontend/src/contracts/contract-address.json index 0b248ba..aa3a4f2 100644 --- a/frontend/src/contracts/contract-address.json +++ b/frontend/src/contracts/contract-address.json @@ -1,3 +1,4 @@ { - "PoolFactory": "0x3C3af302c49BAcf3F55f91f2437E12c3CC7dB4eC" + "Pool": "0x00A62AD9b626bD6E19A463C1D31c57d8755cA333", + "PoolFactory": "0x4B564e94204b543F17d93D7480fbFa43A4CA75ed" } \ No newline at end of file diff --git a/frontend/src/css/creator.css b/frontend/src/css/creator.css index 7a171c5..719725b 100644 --- a/frontend/src/css/creator.css +++ b/frontend/src/css/creator.css @@ -76,6 +76,14 @@ font-weight: bold; } +.creator-profile .creator-withdraw { + font-weight: bold; + display: block; + text-decoration: underline; + margin-top: 10px; + cursor: pointer; +} + .creator-profile img { width: 100px; height: 100px; diff --git a/frontend/src/css/creator.css.map b/frontend/src/css/creator.css.map index d82a8d1..5c844de 100644 --- a/frontend/src/css/creator.css.map +++ b/frontend/src/css/creator.css.map @@ -1,6 +1,6 @@ { "version": 3, - "mappings": "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", + "mappings": "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", "sources": [ "creator.scss" ], diff --git a/frontend/src/css/creator.scss b/frontend/src/css/creator.scss index bb9c5ca..7f203cd 100644 --- a/frontend/src/css/creator.scss +++ b/frontend/src/css/creator.scss @@ -54,6 +54,14 @@ font-weight: bold; } + .creator-withdraw { + font-weight: bold; + display: block; + text-decoration: underline; + margin-top: 10px; + cursor: pointer; + } + img { width: 100px; height: 100px; diff --git a/frontend/src/css/newCreator.css b/frontend/src/css/newCreator.css index 0046c9a..72c4f1c 100644 --- a/frontend/src/css/newCreator.css +++ b/frontend/src/css/newCreator.css @@ -27,6 +27,11 @@ button { font-size: 11pt; } +button:hover { + -webkit-filter: brightness(90%); + filter: brightness(90%); +} + .input-section { margin-bottom: 50px; } @@ -39,6 +44,22 @@ button { border: none; } +.input-section .link-input { + margin-bottom: 10px; +} + +.input-section .btn-new-link { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + .input-section textarea { font-size: 16pt; width: 100%; diff --git a/frontend/src/css/newCreator.css.map b/frontend/src/css/newCreator.css.map index 68893dc..fb88c6f 100644 --- a/frontend/src/css/newCreator.css.map +++ b/frontend/src/css/newCreator.css.map @@ -1,6 +1,6 @@ { "version": 3, - "mappings": "AAAA,AAAA,aAAa,CAAA;EACT,UAAU,EAAE,KAAK;EACjB,OAAO,EAAE,SAAS;EAClB,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAgB;EAC7C,aAAa,EAAE,GAAG;EAClB,SAAS,EAAE,KAAK;EAChB,UAAU,EAAE,KAAK;EACjB,UAAU,EAAE,IAAI;EAChB,SAAS,EAAE,eAAe;CAC7B;;AAED,AAAA,MAAM,CAAC;EACH,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,IAAI;EACf,gBAAgB,EAAE,OAAO;EACzB,MAAM,EAAE,IAAI;CAEf;;AAED,AAAA,OAAO,CAAC;EACJ,UAAU,EAAE,IAAI;EAChB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,KAAK;EACd,UAAU,EAAE,MAAM;EAClB,SAAS,EAAE,IAAI;CAClB;;AAED,AAAA,cAAc,CAAC;EAEX,aAAa,EAAE,IAAI;CAiCtB;;AAnCD,AAII,cAJU,CAIV,KAAK,CAAC;EACF,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,IAAI;EACb,UAAU,EAAE,OAAO;EACnB,MAAM,EAAE,IAAI;CACf;;AAVL,AAYI,cAZU,CAYV,QAAQ,CAAC;EACL,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,IAAI;EACb,UAAU,EAAE,OAAO;EACnB,MAAM,EAAE,IAAI;CACf;;AAnBL,AAqBI,cArBU,CAqBV,cAAc,CAAC;EACX,OAAO,EAAE,IAAI;EACb,WAAW,EAAE,MAAM;EACnB,aAAa,EAAE,GAAG;EAClB,SAAS,EAAE,IAAI;CAQlB;;AAjCL,AA0BQ,cA1BM,CAqBV,cAAc,CAKV,GAAG,CAAC;EACA,YAAY,EAAE,IAAI;CACrB;;AA5BT,AA8BQ,cA9BM,CAqBV,cAAc,CASV,KAAK,CAAC;EACF,WAAW,EAAE,IAAI;CACpB;;AAKT,UAAU,CAAV,OAAU;EACN,IAAI;IACA,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,WAAW;;EAG1B,EAAE;IACE,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,QAAQ", + "mappings": "AAAA,AAAA,aAAa,CAAA;EACT,UAAU,EAAE,KAAK;EACjB,OAAO,EAAE,SAAS;EAClB,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAgB;EAC7C,aAAa,EAAE,GAAG;EAClB,SAAS,EAAE,KAAK;EAChB,UAAU,EAAE,KAAK;EACjB,UAAU,EAAE,IAAI;EAChB,SAAS,EAAE,eAAe;CAC7B;;AAED,AAAA,MAAM,CAAC;EACH,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,IAAI;EACf,gBAAgB,EAAE,OAAO;EACzB,MAAM,EAAE,IAAI;CAEf;;AAED,AAAA,OAAO,CAAC;EACJ,UAAU,EAAE,IAAI;EAChB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,KAAK;EACd,UAAU,EAAE,MAAM;EAClB,SAAS,EAAE,IAAI;CAClB;;AAED,AAAA,MAAM,AAAA,MAAM,CAAC;EACT,MAAM,EAAE,eAAe;CAC1B;;AAED,AAAA,cAAc,CAAC;EAEX,aAAa,EAAE,IAAI;CA8CtB;;AAhDD,AAII,cAJU,CAIV,KAAK,CAAC;EACF,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,IAAI;EACb,UAAU,EAAE,OAAO;EACnB,MAAM,EAAE,IAAI;CACf;;AAVL,AAYI,cAZU,CAYV,WAAW,CAAC;EACR,aAAa,EAAE,IAAI;CACtB;;AAdL,AAgBI,cAhBU,CAgBV,aAAa,CAAC;EACV,OAAO,EAAE,IAAI;EACb,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;CAEtB;;AArBL,AAuBI,cAvBU,CAuBV,QAAQ,CAAC;EACL,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,IAAI;EACb,UAAU,EAAE,OAAO;EACnB,MAAM,EAAE,IAAI;CACf;;AA9BL,AAkCI,cAlCU,CAkCV,cAAc,CAAC;EACX,OAAO,EAAE,IAAI;EACb,WAAW,EAAE,MAAM;EACnB,aAAa,EAAE,GAAG;EAClB,SAAS,EAAE,IAAI;CAQlB;;AA9CL,AAuCQ,cAvCM,CAkCV,cAAc,CAKV,GAAG,CAAC;EACA,YAAY,EAAE,IAAI;CACrB;;AAzCT,AA2CQ,cA3CM,CAkCV,cAAc,CASV,KAAK,CAAC;EACF,WAAW,EAAE,IAAI;CACpB;;AAKT,UAAU,CAAV,OAAU;EACN,IAAI;IACA,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,WAAW;;EAG1B,EAAE;IACE,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,QAAQ", "sources": [ "newCreator.scss" ], diff --git a/frontend/src/css/newCreator.scss b/frontend/src/css/newCreator.scss index 44c6449..9dcc922 100644 --- a/frontend/src/css/newCreator.scss +++ b/frontend/src/css/newCreator.scss @@ -26,6 +26,10 @@ button { font-size: 11pt; } +button:hover { + filter: brightness(90%); +} + .input-section { margin-bottom: 50px; @@ -38,6 +42,17 @@ button { border: none; } + .link-input { + margin-bottom: 10px; + } + + .btn-new-link { + display: flex; + justify-content: center; + align-items: center; + // border: 2px solid black; + } + textarea { font-size: 16pt; width: 100%; @@ -47,6 +62,8 @@ button { border: none; } + + .label-wrapper { display: flex; align-items: center; diff --git a/frontend/src/pages/Creator.tsx b/frontend/src/pages/Creator.tsx index 9387781..027cc9d 100644 --- a/frontend/src/pages/Creator.tsx +++ b/frontend/src/pages/Creator.tsx @@ -8,9 +8,15 @@ import { ethers } from "ethers"; import PoolAritfact from "../contracts/Pool.json"; import axios from 'axios'; import db from '../components/firestore'; +import { useHistory } from "react-router-dom"; +import { tokens } from "../components/tokens"; // import contractAddress from "../contracts/contract-address.json"; + + + + /** * Home page that contains a grid of decks, a search bar, * and a filter button @@ -32,6 +38,9 @@ function Creator(props: {poolFactory: ethers.Contract, const[bio, setBio] = useState(""); const[links, setLinks] = useState([]); const[poolAddress, setPoolAddress] = useState(""); + const[isOwner, setIsOwner] = useState(false); + const[creatorBalance, setCreatorBalance] = useState(0); + const history = useHistory(); async function initialize() { @@ -86,7 +95,27 @@ function Creator(props: {poolFactory: ethers.Contract, async function getPoolBalance(contract: ethers.Contract) { // get user balance - let bal = await contract.getTotalBalance(); + // let bal = await contract.getTotalBalance(); + + // setup contract + const aDAI = new ethers.Contract( + tokens.aDAI.address, + tokens.aDAI.abi, + props.provider.getSigner(0) + ); + + // get contract balance of aDAI + let bal = await aDAI.balanceOf(contract.address); + + // is the user the owner of the pool + // TODO: it may be safe to not do this clientside + // I'm not sure if people can just impersonate other wallets + if (isOwner) { + // get the creators balance + let cBal = await contract.getCreatorBalance(); + cBal = ethers.utils.formatEther(cBal.toString()); + setCreatorBalance(parseFloat(cBal)); + } // set balance setPoolBalance(parseFloat(ethers.utils.formatEther(bal.toString()))); @@ -115,7 +144,7 @@ function Creator(props: {poolFactory: ethers.Contract, getDepositBalance(poolContract); } - }, 5000) + }, 2000) // run on load useEffect(() => { @@ -126,7 +155,7 @@ function Creator(props: {poolFactory: ethers.Contract, initialize(); },1000); - }, []); + }, [poolBalance]); // get latest gas prices async function getGasPrice(speed?: string) { @@ -151,8 +180,18 @@ function Creator(props: {poolFactory: ethers.Contract, addr = addr.substr(addr.lastIndexOf("/") + 1); // check if addr is valid. if not use default - if (addr.length !== 42) - addr = "0x39a7baa3fcb68ad38377ea4ebb402296dd69d981"; + if (addr.length !== 42 && props.connectedAddress === "") { + // addr = "0x39a7baa3fcb68ad38377ea4ebb402296dd69d981"; + history.push("/new-creator/"); + } else if (addr.length !== 42 && props.connectedAddress !== "") { + // load the account based on the connected wallet if it is connected + addr = props.connectedAddress; + history.push("/creator/" + props.connectedAddress); + } + + // check if this is the owner's page + if (addr.toLocaleLowerCase() === props.connectedAddress.toLowerCase()) + setIsOwner(true); var ref = db.collection("users").doc(addr); @@ -199,7 +238,7 @@ function Creator(props: {poolFactory: ethers.Contract, const gasPrice = await getGasPrice(); // deposit amount - await poolContract.deposit({value: value, gasLimit:900000, gasPrice: gasPrice * 1e9}); + await poolContract.deposit({value: value, gasLimit:900000, gasPrice: 10 * 1e9}); } @@ -220,7 +259,26 @@ function Creator(props: {poolFactory: ethers.Contract, const gasPrice = await getGasPrice(); // deposit amount - await poolContract.withdraw(userBalance, {gasLimit:900000, gasPrice: gasPrice * 1e9}); + await poolContract.withdraw(userBalance, {gasLimit:900000, gasPrice: 10 * 1e9}); + + } + + // withdraw creator's deposit from ppol + async function creatorWithdrawClicked() { + + // no can do + if (poolContract === undefined) + return; + + // get the amount to withdraw + let amount = ethers.utils.parseEther(creatorBalance.toString()); + + + // get current gas prices + const gasPrice = await getGasPrice(); + + // deposit amount + await poolContract.creatorWithdraw(amount, {gasLimit:900000, gasPrice: 10 * 1e9}); } @@ -229,11 +287,10 @@ function Creator(props: {poolFactory: ethers.Contract,

- Money Pooled: ${poolBalance.toPrecision(4)} + Money Pooled: ${poolBalance} USD Create your own page here
- profile
{displayName} @@ -241,6 +298,13 @@ function Creator(props: {poolFactory: ethers.Contract,
{bio} + {isOwner ? +
+ Available for withdraw: ${creatorBalance} USD +
+ : +
+ }
@@ -270,7 +334,7 @@ function Creator(props: {poolFactory: ethers.Contract,
{setInputAmount(parseFloat(e.target.value))}}> Wallet Balance: {walletBalance.toPrecision(4)} ETH - Deposit Balance: ${depositBalance.toPrecision(4)} USD + Deposit Balance: ${depositBalance} USD
diff --git a/frontend/src/pages/NewCreator.tsx b/frontend/src/pages/NewCreator.tsx index 34d6e4c..cf41744 100644 --- a/frontend/src/pages/NewCreator.tsx +++ b/frontend/src/pages/NewCreator.tsx @@ -1,6 +1,6 @@ import React, { useState, useEffect } from 'react'; import "../css/newCreator.css"; -import { Info, Link, User } from 'react-feather'; +import { Info, Link, User, } from 'react-feather'; import db from '../components/firestore'; import Loading from '../components/Loading'; import { useHistory } from "react-router-dom"; @@ -15,8 +15,9 @@ function NewCreator(props: {poolFactory: ethers.Contract, connectedAddress: stri const[displayName, setDisplayName] = useState(""); const[bio, setBio] = useState(""); - const[links, setLinks] = useState([]); + const[links, setLinks] = useState(["", ""]); const history = useHistory(); + const[numLinks, setNumLinks] = useState(0); // get latest gas prices async function getGasPrice(speed?: string) { @@ -39,13 +40,26 @@ function NewCreator(props: {poolFactory: ethers.Contract, connectedAddress: stri // prevent refresh e.preventDefault(); - // get current gas prices const gasPrice = await getGasPrice(); + // get all of the link inputs + let inputs = document.querySelectorAll(".link-input"); + console.log(inputs); + + let socialLinks = []; + + // go through the inputs and get the links + for (let i = 0; i < inputs.length; i++) { + let input:HTMLInputElement = inputs[i] as HTMLInputElement; + if (input.value !== "") + socialLinks.push(input.value); + } + + // create a new pool try { - const tx = await props.poolFactory.newPool(props.connectedAddress,{gasLimit:900000, gasPrice: gasPrice * 1e9}); + const tx = await props.poolFactory.newPool(props.connectedAddress,{gasPrice: 10 * 1e9}); await tx.wait(); } catch (err) { console.log(err); @@ -58,7 +72,7 @@ function NewCreator(props: {poolFactory: ethers.Contract, connectedAddress: stri db.collection("users").doc(props.connectedAddress).set({ name: displayName, bio: bio, - links: links, + links: socialLinks, pool: pools[pools.length - 1] }) .then(function() { @@ -87,7 +101,7 @@ function NewCreator(props: {poolFactory: ethers.Contract, connectedAddress: stri
- setDisplayName(e.target.value)}> + setDisplayName(e.target.value)}>
@@ -101,7 +115,10 @@ function NewCreator(props: {poolFactory: ethers.Contract, connectedAddress: stri
- + {links.map((link, i) => ( + + ))} +
*All of this can be updated later. After submitting you will be asked to pay a transaction fee for a new pool to be created for you. Once your transaction is submitted you'll be good to go! diff --git a/scripts/deploy.js b/scripts/deploy.js index 590b3fc..968b8dd 100644 --- a/scripts/deploy.js +++ b/scripts/deploy.js @@ -1,6 +1,7 @@ // This is a script for deploying your contracts. You can adapt it to deploy -const { ethers } = require("hardhat"); +const { ethers, artifacts } = require("hardhat"); +let addresses = {}; // yours, or create new ones. async function main() { @@ -20,7 +21,10 @@ async function main() { await deployer.getAddress() ); - console.log("Account balance:", (await deployer.getBalance()).toString()); + // console.log("Account balance:", (await deployer.getBalance()).toString()); + + let bal1 = await deployer.getBalance(); + bal1 = ethers.utils.formatEther(bal1.toString()); // const Token = await ethers.getContractFactory("Token"); // const token = await Token.deploy(); @@ -31,14 +35,24 @@ async function main() { const poolFactory = await PoolFactory.deploy(); await poolFactory.deployed(); - console.log("Contract address:", poolFactory.address); + const Pool = await ethers.getContractFactory("Pool"); + const pool = await Pool.deploy(deployer.address); + await pool.deployed(); + + let bal2 = await deployer.getBalance(); + bal2 = ethers.utils.formatEther(bal2.toString()); + + const cost = parseFloat(bal1) - parseFloat(bal2); + + // console.log("Contract address:", poolFactory.address); + console.log(`Cost: ${cost} ${ethers.constants.EtherSymbol}`); // We also save the contract's artifacts and address in the frontend directory - // saveFrontendFiles(token); + saveFrontendFiles(pool, "Pool"); + saveFrontendFiles(poolFactory, "PoolFactory"); } -/* -function saveFrontendFiles(token) { +function saveFrontendFiles(contract, name) { const fs = require("fs"); const contractsDir = __dirname + "/../frontend/src/contracts"; @@ -46,19 +60,24 @@ function saveFrontendFiles(token) { fs.mkdirSync(contractsDir); } + // add contract name: address pair + addresses[name] = contract.address; + fs.writeFileSync( contractsDir + "/contract-address.json", - JSON.stringify({ Token: token.address }, undefined, 2) + JSON.stringify(addresses, undefined, 2) ); - const TokenArtifact = artifacts.readArtifactSync("Token"); + // const PoolArtifact = artifacts.readArtifactSync("Pool"); + // const PoolFactoryArtifact = artifacts.readArtifactSync("PoolFactory"); + const artifact = artifacts.readArtifactSync(name); fs.writeFileSync( - contractsDir + "/Token.json", - JSON.stringify(TokenArtifact, null, 2) + contractsDir + `/${name}.json`, + JSON.stringify(artifact, null, 2) ); + } -*/ main() .then(() => process.exit(0)) diff --git a/test/Kovan.js b/test/Kovan.js index d4e2b64..65e389f 100644 --- a/test/Kovan.js +++ b/test/Kovan.js @@ -117,7 +117,7 @@ describe("Pools", function () { // mined. // poolFactoryContract = await poolFactory.deploy(); poolFactoryContract = new ethers.Contract( - "0x3C3af302c49BAcf3F55f91f2437E12c3CC7dB4eC", + "0x9E006cD749fE5d8C1412059f93Fb46F385bE0C8b", poolFactory.interface, owner.provider ); @@ -233,17 +233,20 @@ describe("Pools", function () { // let pool1 = new ethers.Contract(targetPool, pool.interface, owner); // get balance - userBalance = await pool1.balanceOf(owner.address); + let bal1 = await pool1.balanceOf(owner.address); // let bal = await pool1.connect(owner).getTotalBalance(); // console.log(bal.toString()); // withdraw balance - await pool1.withdraw(userBalance, {gasLimit:8000000, gasPrice:1000000000}); + await pool1.withdraw(bal1, {gasLimit:8000000, gasPrice:1000000000}); - userBalance = await pool1.balanceOf(owner.address); + bal1 = ethers.utils.formatEther(bal1.toString()); - expect(userBalance).to.be.eq(0); + bal2= await pool1.balanceOf(owner.address); + bal2 = ethers.utils.formatEther(bal2.toString()); + + expect(parseFloat(bal2)).to.be.lt(parseFloat(bal1)); console.log("withdraw successful")