Contract Overview
[ Download CSV Export ]
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0xbb16b7d2108c68b6147f6d4caf57d90458f430e8cede10b38e2b787edb2ddcdf | 6376083 | 13 days 20 hrs ago | 0x3cd1c46068daea5ebb0d3f55f6915b10648062b8 | Contract Creation | 0 BNB |
[ Download CSV Export ]
Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x09cb618bf5ef305fadfd2c8fc0c26eecf8c6d5fd
Contract Name:
MdexPair
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity)
/** *Submitted for verification at BscScan.com on 2021-04-06 */ // SPDX-License-Identifier: MIT pragma solidity >=0.5.0 <0.8.0; interface IMdexFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function FEE_RATE_DENOMINATOR() external view returns (uint256); function feeRateNumerator() external view returns (uint256); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function feeToRate() external view returns (uint256); function initCodeHash() external view returns (bytes32); function pairFeeToRate(address) external view returns (uint256); function pairFees(address) external view returns (uint256); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; function addPair(address) external returns (bool); function delPair(address) external returns (bool); function getSupportListLength() external view returns (uint256); function isSupportPair(address pair) external view returns (bool); function getSupportPair(uint256 index) external view returns (address); function setFeeRateNumerator(uint256) external; function setPairFees(address pair, uint256 fee) external; function setDefaultFeeToRate(uint256) external; function setPairFeeToRate(address pair, uint256 rate) external; function getPairFees(address) external view returns (uint256); function getPairRate(address) external view returns (uint256); function sortTokens(address tokenA, address tokenB) external pure returns (address token0, address token1); function pairFor(address tokenA, address tokenB) external view returns (address pair); function getReserves(address tokenA, address tokenB) external view returns (uint256 reserveA, uint256 reserveB); function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) external pure returns (uint256 amountB); function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut, address token0, address token1) external view returns (uint256 amountOut); function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut, address token0, address token1) external view returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IMdexPair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IMdexERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; } interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); } interface IswapV2Callee { function swapV2Call(address sender, uint amount0, uint amount1, bytes calldata data) external; } library SafeMath { uint256 constant WAD = 10 ** 18; uint256 constant RAY = 10 ** 27; function wad() public pure returns (uint256) { return WAD; } function ray() public pure returns (uint256) { return RAY; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } function min(uint256 a, uint256 b) internal pure returns (uint256) { return a <= b ? a : b; } function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } function sqrt(uint256 a) internal pure returns (uint256 b) { if (a > 3) { b = a; uint256 x = a / 2 + 1; while (x < b) { b = x; x = (a / x + x) / 2; } } else if (a != 0) { b = 1; } } function wmul(uint256 a, uint256 b) internal pure returns (uint256) { return mul(a, b) / WAD; } function wmulRound(uint256 a, uint256 b) internal pure returns (uint256) { return add(mul(a, b), WAD / 2) / WAD; } function rmul(uint256 a, uint256 b) internal pure returns (uint256) { return mul(a, b) / RAY; } function rmulRound(uint256 a, uint256 b) internal pure returns (uint256) { return add(mul(a, b), RAY / 2) / RAY; } function wdiv(uint256 a, uint256 b) internal pure returns (uint256) { return div(mul(a, WAD), b); } function wdivRound(uint256 a, uint256 b) internal pure returns (uint256) { return add(mul(a, WAD), b / 2) / b; } function rdiv(uint256 a, uint256 b) internal pure returns (uint256) { return div(mul(a, RAY), b); } function rdivRound(uint256 a, uint256 b) internal pure returns (uint256) { return add(mul(a, RAY), b / 2) / b; } function wpow(uint256 x, uint256 n) internal pure returns (uint256) { uint256 result = WAD; while (n > 0) { if (n % 2 != 0) { result = wmul(result, x); } x = wmul(x, x); n /= 2; } return result; } function rpow(uint256 x, uint256 n) internal pure returns (uint256) { uint256 result = RAY; while (n > 0) { if (n % 2 != 0) { result = rmul(result, x); } x = rmul(x, x); n /= 2; } return result; } } library UQ112x112 { uint224 constant Q112 = 2 ** 112; // encode a uint112 as a UQ112x112 function encode(uint112 y) internal pure returns (uint224 z) { z = uint224(y) * Q112; // never overflows } // divide a UQ112x112 by a uint112, returning a UQ112x112 function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) { z = x / uint224(y); } } contract MdexERC20 is IMdexERC20 { using SafeMath for uint; string public constant name = 'MDEX LP Token'; string public constant symbol = 'MDEX LP'; uint8 public constant decimals = 18; uint public totalSupply; mapping(address => uint) public balanceOf; mapping(address => mapping(address => uint)) public allowance; bytes32 public DOMAIN_SEPARATOR; // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; mapping(address => uint) public nonces; event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); constructor() public { uint chainId; assembly { chainId := chainid } DOMAIN_SEPARATOR = keccak256( abi.encode( keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'), keccak256(bytes(name)), keccak256(bytes('1')), chainId, address(this) ) ); } function _mint(address to, uint value) internal { totalSupply = totalSupply.add(value); balanceOf[to] = balanceOf[to].add(value); emit Transfer(address(0), to, value); } function _burn(address from, uint value) internal { balanceOf[from] = balanceOf[from].sub(value); totalSupply = totalSupply.sub(value); emit Transfer(from, address(0), value); } function _approve(address owner, address spender, uint value) private { allowance[owner][spender] = value; emit Approval(owner, spender, value); } function _transfer(address from, address to, uint value) private { balanceOf[from] = balanceOf[from].sub(value); balanceOf[to] = balanceOf[to].add(value); emit Transfer(from, to, value); } function approve(address spender, uint value) external returns (bool) { _approve(msg.sender, spender, value); return true; } function transfer(address to, uint value) external returns (bool) { _transfer(msg.sender, to, value); return true; } function transferFrom(address from, address to, uint value) external returns (bool) { if (allowance[from][msg.sender] != uint(- 1)) { allowance[from][msg.sender] = allowance[from][msg.sender].sub(value); } _transfer(from, to, value); return true; } function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external { require(deadline >= block.timestamp, 'MdexSwap: EXPIRED'); bytes32 digest = keccak256( abi.encodePacked( '\x19\x01', DOMAIN_SEPARATOR, keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline)) ) ); address recoveredAddress = ecrecover(digest, v, r, s); require(recoveredAddress != address(0) && recoveredAddress == owner, 'MdexSwap: INVALID_SIGNATURE'); _approve(owner, spender, value); } } contract MdexPair is IMdexPair, MdexERC20 { using SafeMath for uint; using UQ112x112 for uint224; uint public constant MINIMUM_LIQUIDITY = 10 ** 3; bytes4 private constant SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)'))); address public factory; address public token0; address public token1; uint112 private reserve0; // uses single storage slot, accessible via getReserves uint112 private reserve1; // uses single storage slot, accessible via getReserves uint32 private blockTimestampLast; // uses single storage slot, accessible via getReserves uint public price0CumulativeLast; uint public price1CumulativeLast; uint public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event uint private unlocked = 1; modifier lock() { require(unlocked == 1, 'MdexSwap: LOCKED'); unlocked = 0; _; unlocked = 1; } function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) { _reserve0 = reserve0; _reserve1 = reserve1; _blockTimestampLast = blockTimestampLast; } function _safeTransfer(address token, address to, uint value) private { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'MdexSwap: TRANSFER_FAILED'); } event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); constructor() public { factory = msg.sender; } // called once by the factory at time of deployment function initialize(address _token0, address _token1) external { require(msg.sender == factory, 'MdexSwap: FORBIDDEN'); // sufficient check token0 = _token0; token1 = _token1; } // update reserves and, on the first call per block, price accumulators function _update(uint balance0, uint balance1, uint112 _reserve0, uint112 _reserve1) private { require(balance0 <= uint112(- 1) && balance1 <= uint112(- 1), 'MdexSwap: OVERFLOW'); uint32 blockTimestamp = uint32(block.timestamp % 2 ** 32); uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) { // * never overflows, and + overflow is desired price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed; price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed; } reserve0 = uint112(balance0); reserve1 = uint112(balance1); blockTimestampLast = blockTimestamp; emit Sync(reserve0, reserve1); } // if fee is on, mint liquidity equivalent to 1/6th of the growth in sqrt(k) function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) { address feeTo = IMdexFactory(factory).feeTo(); feeOn = feeTo != address(0) && IMdexFactory(factory).getPairRate(address(this)) != 9; uint _kLast = kLast; // gas savings if (feeOn) { if (_kLast != 0) { uint rootK = SafeMath.sqrt(uint(_reserve0).mul(_reserve1)); uint rootKLast = SafeMath.sqrt(_kLast); if (rootK > rootKLast) { uint numerator = totalSupply.mul(rootK.sub(rootKLast)); uint denominator = rootK.mul(IMdexFactory(factory).getPairRate(address(this))).add(rootKLast); uint liquidity = numerator / denominator; if (liquidity > 0) _mint(feeTo, liquidity); } } } else if (_kLast != 0) { kLast = 0; } } // this low-level function should be called from a contract which performs important safety checks function mint(address to) external lock returns (uint liquidity) { (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings uint balance0 = IERC20(token0).balanceOf(address(this)); uint balance1 = IERC20(token1).balanceOf(address(this)); uint amount0 = balance0.sub(_reserve0); uint amount1 = balance1.sub(_reserve1); bool feeOn = _mintFee(_reserve0, _reserve1); uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee if (_totalSupply == 0) { liquidity = SafeMath.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY); _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens } else { liquidity = SafeMath.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1); } require(liquidity > 0, 'MdexSwap: INSUFFICIENT_LIQUIDITY_MINTED'); _mint(to, liquidity); _update(balance0, balance1, _reserve0, _reserve1); if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date emit Mint(msg.sender, amount0, amount1); } // this low-level function should be called from a contract which performs important safety checks function burn(address to) external lock returns (uint amount0, uint amount1) { (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings address _token0 = token0; // gas savings address _token1 = token1; // gas savings uint balance0 = IERC20(_token0).balanceOf(address(this)); uint balance1 = IERC20(_token1).balanceOf(address(this)); uint liquidity = balanceOf[address(this)]; bool feeOn = _mintFee(_reserve0, _reserve1); uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee amount0 = liquidity.mul(balance0) / _totalSupply; // using balances ensures pro-rata distribution amount1 = liquidity.mul(balance1) / _totalSupply; // using balances ensures pro-rata distribution require(amount0 > 0 && amount1 > 0, 'MdexSwap: INSUFFICIENT_LIQUIDITY_BURNED'); _burn(address(this), liquidity); _safeTransfer(_token0, to, amount0); _safeTransfer(_token1, to, amount1); balance0 = IERC20(_token0).balanceOf(address(this)); balance1 = IERC20(_token1).balanceOf(address(this)); _update(balance0, balance1, _reserve0, _reserve1); if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date emit Burn(msg.sender, amount0, amount1, to); } // this low-level function should be called from a contract which performs important safety checks function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external lock { require(amount0Out > 0 || amount1Out > 0, 'MdexSwap: INSUFFICIENT_OUTPUT_AMOUNT'); (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings require(amount0Out < _reserve0 && amount1Out < _reserve1, 'MdexSwap: INSUFFICIENT_LIQUIDITY'); uint balance0; uint balance1; {// scope for _token{0,1}, avoids stack too deep errors address _token0 = token0; address _token1 = token1; require(to != _token0 && to != _token1, 'MdexSwap: INVALID_TO'); if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); // optimistically transfer tokens if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // optimistically transfer tokens if (data.length > 0) IswapV2Callee(to).swapV2Call(msg.sender, amount0Out, amount1Out, data); balance0 = IERC20(_token0).balanceOf(address(this)); balance1 = IERC20(_token1).balanceOf(address(this)); } uint amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0; uint amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0; require(amount0In > 0 || amount1In > 0, 'MdexSwap: INSUFFICIENT_INPUT_AMOUNT'); {// scope for reserve{0,1}Adjusted, avoids stack too deep errors uint balance0Adjusted = balance0.mul(1e4).sub(amount0In.mul(IMdexFactory(factory).getPairFees(address(this)))); uint balance1Adjusted = balance1.mul(1e4).sub(amount1In.mul(IMdexFactory(factory).getPairFees(address(this)))); require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1e8), 'MdexSwap: K'); } _update(balance0, balance1, _reserve0, _reserve1); emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to); } // force balances to match reserves function skim(address to) external lock { address _token0 = token0; // gas savings address _token1 = token1; // gas savings _safeTransfer(_token0, to, IERC20(_token0).balanceOf(address(this)).sub(reserve0)); _safeTransfer(_token1, to, IERC20(_token1).balanceOf(address(this)).sub(reserve1)); } // force reserves to match balances function sync() external lock { _update(IERC20(token0).balanceOf(address(this)), IERC20(token1).balanceOf(address(this)), reserve0, reserve1); } }
[{"inputs":[],"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":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","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":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","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":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"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":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sync","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526001600c5534801561001557600080fd5b5060405146908060526125de8239604080519182900360520182208282018252600d83526c26a222ac102628102a37b5b2b760991b6020938401528151808301835260018152603160f81b908401528151808401919091527fb85ad0ab12fc9666beeb4154f24feab6f58ff8137a3f14500ba8ae1d38e72118818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b031916331790556124d6806101086000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610bcc565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610bf5565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610c1f565b604080519115158252519081900360200190f35b610339610c36565b604080516001600160a01b039092168252519081900360200190f35b61035d610c45565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610c4b565b61035d610ce5565b6103b5610d09565b6040805160ff9092168252519081900360200190f35b61035d610d0e565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610d14565b61035d610d97565b61035d610d9d565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610da3565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b03166110a2565b61035d6110b4565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b03166110ba565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b03166110cc565b6040805192835260208301919091528051918290030190f35b610244611471565b61031d600480360360408110156104e857600080fd5b506001600160a01b038135169060200135611494565b61035d6114a1565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b03166114a7565b610339611611565b610339611620565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561162f565b61035d600480360360408110156105a357600080fd5b506001600160a01b0381358116916020013516611830565b61023a61184d565b600c5460011461060d576040805162461bcd60e51b815260206004820152601060248201526f1359195e14ddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c55841515806106205750600084115b61065b5760405162461bcd60e51b81526004018080602001828103825260248152602001806124136024913960400191505060405180910390fd5b600080610666610bf5565b5091509150816001600160701b03168710801561068b5750806001600160701b031686105b6106dc576040805162461bcd60e51b815260206004820181905260248201527f4d646578537761703a20494e53554646494349454e545f4c4951554944495459604482015290519081900360640190fd5b60065460075460009182916001600160a01b0391821691908116908916821480159061071a5750806001600160a01b0316896001600160a01b031614155b610762576040805162461bcd60e51b81526020600482015260146024820152734d646578537761703a20494e56414c49445f544f60601b604482015290519081900360640190fd5b8a1561077357610773828a8d6119ae565b891561078457610784818a8c6119ae565b861561083f57886001600160a01b031663b2ff9f26338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561082657600080fd5b505af115801561083a573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561088557600080fd5b505afa158015610899573d6000803e3d6000fd5b505050506040513d60208110156108af57600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108fb57600080fd5b505afa15801561090f573d6000803e3d6000fd5b505050506040513d602081101561092557600080fd5b5051925060009150506001600160701b0385168a90038311610948576000610957565b89856001600160701b03160383035b9050600089856001600160701b0316038311610974576000610983565b89856001600160701b03160383035b905060008211806109945750600081115b6109cf5760405162461bcd60e51b81526004018080602001828103825260238152602001806124586023913960400191505060405180910390fd5b60055460408051634c2fc06f60e01b81523060048201529051600092610a7c92610a5e926001600160a01b0390921691634c2fc06f91602480820192602092909190829003018186803b158015610a2557600080fd5b505afa158015610a39573d6000803e3d6000fd5b505050506040513d6020811015610a4f57600080fd5b5051859063ffffffff611b4816565b610a708761271063ffffffff611b4816565b9063ffffffff611ba816565b60055460408051634c2fc06f60e01b81523060048201529051929350600092610ad592610a5e926001600160a01b0390911691634c2fc06f91602480820192602092909190829003018186803b158015610a2557600080fd5b9050610b076305f5e100610afb6001600160701b038b8116908b1663ffffffff611b4816565b9063ffffffff611b4816565b610b17838363ffffffff611b4816565b1015610b58576040805162461bcd60e51b815260206004820152600b60248201526a4d646578537761703a204b60a81b604482015290519081900360640190fd5b5050610b6684848888611bea565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600d81526020016c26a222ac102628102a37b5b2b760991b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610c2c338484611dae565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610cd0576001600160a01b0384166000908152600260209081526040808320338452909152902054610cab908363ffffffff611ba816565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610cdb848484611e10565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610d69576040805162461bcd60e51b815260206004820152601360248201527226b232bc29bbb0b81d102327a92124a22222a760691b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610def576040805162461bcd60e51b815260206004820152601060248201526f1359195e14ddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c81905580610dff610bf5565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610e5357600080fd5b505afa158015610e67573d6000803e3d6000fd5b505050506040513d6020811015610e7d57600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610ed057600080fd5b505afa158015610ee4573d6000803e3d6000fd5b505050506040513d6020811015610efa57600080fd5b505190506000610f19836001600160701b03871663ffffffff611ba816565b90506000610f36836001600160701b03871663ffffffff611ba816565b90506000610f448787611eca565b60005490915080610f8157610f6d6103e8610a70610f68878763ffffffff611b4816565b612126565b9850610f7c60006103e8612178565b610fd0565b610fcd6001600160701b038916610f9e868463ffffffff611b4816565b81610fa557fe5b046001600160701b038916610fc0868563ffffffff611b4816565b81610fc757fe5b0461220e565b98505b6000891161100f5760405162461bcd60e51b815260040180806020018281038252602781526020018061247b6027913960400191505060405180910390fd5b6110198a8a612178565b61102586868a8a611bea565b811561105557600854611051906001600160701b0380821691600160701b90041663ffffffff611b4816565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c54600114611119576040805162461bcd60e51b815260206004820152601060248201526f1359195e14ddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c81905580611129610bf5565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561118557600080fd5b505afa158015611199573d6000803e3d6000fd5b505050506040513d60208110156111af57600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b1580156111fd57600080fd5b505afa158015611211573d6000803e3d6000fd5b505050506040513d602081101561122757600080fd5b5051306000908152600160205260408120549192506112468888611eca565b6000549091508061125d848763ffffffff611b4816565b8161126457fe5b049a5080611278848663ffffffff611b4816565b8161127f57fe5b04995060008b118015611292575060008a115b6112cd5760405162461bcd60e51b81526004018080602001828103825260278152602001806123ec6027913960400191505060405180910390fd5b6112d73084612225565b6112e2878d8d6119ae565b6112ed868d8c6119ae565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b15801561133357600080fd5b505afa158015611347573d6000803e3d6000fd5b505050506040513d602081101561135d57600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b1580156113a957600080fd5b505afa1580156113bd573d6000803e3d6000fd5b505050506040513d60208110156113d357600080fd5b505193506113e385858b8b611bea565b81156114135760085461140f906001600160701b0380821691600160701b90041663ffffffff611b4816565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600781526020016604d444558204c560cc1b81525081565b6000610c2c338484611e10565b6103e881565b600c546001146114f1576040805162461bcd60e51b815260206004820152601060248201526f1359195e14ddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926115a0928592879261159b926001600160701b03169185916370a0823191602480820192602092909190829003018186803b15801561156357600080fd5b505afa158015611577573d6000803e3d6000fd5b505050506040513d602081101561158d57600080fd5b50519063ffffffff611ba816565b6119ae565b600854604080516370a0823160e01b81523060048201529051611607928492879261159b92600160701b90046001600160701b0316916001600160a01b038616916370a0823191602480820192602092909190829003018186803b15801561156357600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b42841015611678576040805162461bcd60e51b81526020600482015260116024820152701359195e14ddd85c0e8811561412549151607a1b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611793573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906117c95750886001600160a01b0316816001600160a01b0316145b61181a576040805162461bcd60e51b815260206004820152601b60248201527f4d646578537761703a20494e56414c49445f5349474e41545552450000000000604482015290519081900360640190fd5b611825898989611dae565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611897576040805162461bcd60e51b815260206004820152601060248201526f1359195e14ddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b815230600482015290516119a7926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156118e857600080fd5b505afa1580156118fc573d6000803e3d6000fd5b505050506040513d602081101561191257600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561195f57600080fd5b505afa158015611973573d6000803e3d6000fd5b505050506040513d602081101561198957600080fd5b50516008546001600160701b0380821691600160701b900416611bea565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b60208310611a5b5780518252601f199092019160209182019101611a3c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611abd576040519150601f19603f3d011682016040523d82523d6000602084013e611ac2565b606091505b5091509150818015611af0575080511580611af05750808060200190516020811015611aed57600080fd5b50515b611b41576040805162461bcd60e51b815260206004820152601960248201527f4d646578537761703a205452414e534645525f4641494c454400000000000000604482015290519081900360640190fd5b5050505050565b600082611b5757506000610c30565b82820282848281611b6457fe5b0414611ba15760405162461bcd60e51b81526004018080602001828103825260218152602001806124376021913960400191505060405180910390fd5b9392505050565b6000611ba183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122c3565b6001600160701b038411801590611c0857506001600160701b038311155b611c4e576040805162461bcd60e51b81526020600482015260126024820152714d646578537761703a204f564552464c4f5760701b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611c7e57506001600160701b03841615155b8015611c9257506001600160701b03831615155b15611d03578063ffffffff16611cc085611cab8661235a565b6001600160e01b03169063ffffffff61236c16565b600980546001600160e01b03929092169290920201905563ffffffff8116611ceb84611cab8761235a565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611e39908263ffffffff611ba816565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611e6e908263ffffffff61239116565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611f1b57600080fd5b505afa158015611f2f573d6000803e3d6000fd5b505050506040513d6020811015611f4557600080fd5b505190506001600160a01b03811615801590611fd85750600554604080516335d0ea0b60e11b815230600482015290516001600160a01b0390921691636ba1d41691602480820192602092909190829003018186803b158015611fa757600080fd5b505afa158015611fbb573d6000803e3d6000fd5b505050506040513d6020811015611fd157600080fd5b5051600914155b600b54909250821561211257801561210d57600061200b610f686001600160701b0388811690881663ffffffff611b4816565b9050600061201883612126565b90508082111561210a576000612046612037848463ffffffff611ba816565b6000549063ffffffff611b4816565b600554604080516335d0ea0b60e11b815230600482015290519293506000926120e69286926120da926001600160a01b0390921691636ba1d41691602480820192602092909190829003018186803b1580156120a157600080fd5b505afa1580156120b5573d6000803e3d6000fd5b505050506040513d60208110156120cb57600080fd5b5051879063ffffffff611b4816565b9063ffffffff61239116565b905060008183816120f357fe5b0490508015612106576121068782612178565b5050505b50505b61211e565b801561211e576000600b555b505092915050565b60006003821115612169575080600160028204015b818110156121635780915060028182858161215257fe5b04018161215b57fe5b04905061213b565b50612173565b8115612173575060015b919050565b60005461218b908263ffffffff61239116565b60009081556001600160a01b0383168152600160205260409020546121b6908263ffffffff61239116565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183111561221e5781611ba1565b5090919050565b6001600160a01b03821660009081526001602052604090205461224e908263ffffffff611ba816565b6001600160a01b0383166000908152600160205260408120919091555461227b908263ffffffff611ba816565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b600081848411156123525760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123175781810151838201526020016122ff565b50505050905090810190601f1680156123445780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161238957fe5b049392505050565b600082820183811015611ba1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fdfe4d646578537761703a20494e53554646494349454e545f4c49515549444954595f4255524e45444d646578537761703a20494e53554646494349454e545f4f55545055545f414d4f554e54536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774d646578537761703a20494e53554646494349454e545f494e5055545f414d4f554e544d646578537761703a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a7231582046c07a569a6b1459249f351af48901239e20429187f1402f7470459510c63def64736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429
Deployed ByteCode Sourcemap
15582:10030:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15582:10030:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22956:2043;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;22956:2043:0;;;;;;;;-1:-1:-1;;;;;22956:2043:0;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;22956:2043:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;22956:2043:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;22956:2043:0;;-1:-1:-1;22956:2043:0;-1:-1:-1;22956:2043:0;:::i;:::-;;12240:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12240:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16589:231;;;:::i;:::-;;;;-1:-1:-1;;;;;16589:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14291:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14291:147:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;15879:21;;;:::i;:::-;;;;-1:-1:-1;;;;;15879:21:0;;;;;;;;;;;;;;12382:24;;;:::i;:::-;;;;;;;;;;;;;;;;14593:302;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14593:302:0;;;;;;;;;;;;;;;;;:::i;12674:108::-;;;:::i;12340:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12531:31;;;:::i;17648:218::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17648:218:0;;;;;;;;;;:::i;16230:32::-;;;:::i;16269:::-;;;:::i;19978:1288::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19978:1288:0;-1:-1:-1;;;;;19978:1288:0;;:::i;12413:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12413:41:0;-1:-1:-1;;;;;12413:41:0;;:::i;16308:17::-;;;:::i;12789:38::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12789:38:0;-1:-1:-1;;;;;12789:38:0;;:::i;21378:1466::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21378:1466:0;-1:-1:-1;;;;;21378:1466:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12292:41;;;:::i;14446:139::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14446:139:0;;;;;;;;:::i;15698:48::-;;;:::i;25048:352::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25048:352:0;-1:-1:-1;;;;;25048:352:0;;:::i;15850:22::-;;;:::i;15907:21::-;;;:::i;14903:672::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;14903:672:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12461:61::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12461:61:0;;;;;;;;;;:::i;25449:158::-;;;:::i;22956:2043::-;16481:8;;16493:1;16481:13;16473:42;;;;;-1:-1:-1;;;16473:42:0;;;;;;;;;;;;-1:-1:-1;;;16473:42:0;;;;;;;;;;;;;;;16537:1;16526:8;:12;23070:14;;;;:32;;;23101:1;23088:10;:14;23070:32;23062:81;;;;-1:-1:-1;;;23062:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23155:17;23174;23196:13;:11;:13::i;:::-;23154:55;;;;;23265:9;-1:-1:-1;;;;;23252:22:0;:10;:22;:48;;;;;23291:9;-1:-1:-1;;;;;23278:22:0;:10;:22;23252:48;23244:93;;;;;-1:-1:-1;;;23244:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23485:6;;23524;;23350:13;;;;-1:-1:-1;;;;;23485:6:0;;;;23524;;;;23553:13;;;;;;;:30;;;23576:7;-1:-1:-1;;;;;23570:13:0;:2;-1:-1:-1;;;;;23570:13:0;;;23553:30;23545:63;;;;;-1:-1:-1;;;23545:63:0;;;;;;;;;;;;-1:-1:-1;;;23545:63:0;;;;;;;;;;;;;;;23627:14;;23623:58;;23643:38;23657:7;23666:2;23670:10;23643:13;:38::i;:::-;23747:14;;23743:58;;23763:38;23777:7;23786:2;23790:10;23763:13;:38::i;:::-;23867:15;;23863:91;;23898:2;-1:-1:-1;;;;;23884:28:0;;23913:10;23925;23937;23949:4;;23884:70;;;;;;;;;;;;;-1:-1:-1;;;;;23884:70:0;-1:-1:-1;;;;;23884:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;23884:70:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23884:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23884:70:0;;;;23863:91;23980:40;;;-1:-1:-1;;;23980:40:0;;24014:4;23980:40;;;;;;-1:-1:-1;;;;;23980:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;23980:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23980:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23980:40:0;24046;;;-1:-1:-1;;;24046:40:0;;24080:4;24046:40;;;;;;23980;;-1:-1:-1;;;;;;24046:25:0;;;;;:40;;;;;23980;;24046;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;24046:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24046:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24046:40:0;;-1:-1:-1;24108:14:0;;-1:-1:-1;;;;;;;24136:22:0;;;;;24125:33;;:75;;24199:1;24125:75;;;24185:10;24173:9;-1:-1:-1;;;;;24173:22:0;;24161:8;:35;24125:75;24108:92;;24211:14;24251:10;24239:9;-1:-1:-1;;;;;24239:22:0;;24228:8;:33;:75;;24302:1;24228:75;;;24288:10;24276:9;-1:-1:-1;;;;;24276:22:0;;24264:8;:35;24228:75;24211:92;;24334:1;24322:9;:13;:30;;;;24351:1;24339:9;:13;24322:30;24314:78;;;;-1:-1:-1;;;24314:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24554:7;;24541:48;;;-1:-1:-1;;;24541:48:0;;24583:4;24541:48;;;;;;24481:21;;24505:86;;24527:63;;-1:-1:-1;;;;;24554:7:0;;;;24541:33;;:48;;;;;;;;;;;;;;;24554:7;24541:48;;;5:2:-1;;;;30:1;27;20:12;5:2;24541:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24541:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24541:48:0;24527:9;;:63;:13;:63;:::i;:::-;24505:17;:8;24518:3;24505:17;:12;:17;:::i;:::-;:21;:86;:21;:86;:::i;:::-;24679:7;;24666:48;;;-1:-1:-1;;;24666:48:0;;24708:4;24666:48;;;;;;24481:110;;-1:-1:-1;24606:21:0;;24630:86;;24652:63;;-1:-1:-1;;;;;24679:7:0;;;;24666:33;;:48;;;;;;;;;;;;;;;24679:7;24666:48;;;5:2:-1;;;;30:1;27;20:12;24630:86:0;24606:110;-1:-1:-1;24781:39:0;24816:3;24781:30;-1:-1:-1;;;;;24781:15:0;;;;:30;;;:19;:30;:::i;:::-;:34;:39;:34;:39;:::i;:::-;24739:38;:16;24760;24739:38;:20;:38;:::i;:::-;:81;;24731:105;;;;;-1:-1:-1;;;24731:105:0;;;;;;;;;;;;-1:-1:-1;;;24731:105:0;;;;;;;;;;;;;;;16549:1;;24860:49;24868:8;24878;24888:9;24899;24860:7;:49::i;:::-;24925:66;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24925:66:0;;;24930:10;;24925:66;;;;;;;;;-1:-1:-1;;16572:1:0;16561:8;:12;-1:-1:-1;;;;;;;;;22956:2043:0:o;12240:45::-;;;;;;;;;;;;;;-1:-1:-1;;;12240:45:0;;;;:::o;16589:231::-;16722:8;;-1:-1:-1;;;;;16722:8:0;;;;-1:-1:-1;;;16753:8:0;;;;;;-1:-1:-1;;;16794:18:0;;;;;16589:231::o;14291:147::-;14355:4;14372:36;14381:10;14393:7;14402:5;14372:8;:36::i;:::-;-1:-1:-1;14426:4:0;14291:147;;;;;:::o;15879:21::-;;;-1:-1:-1;;;;;15879:21:0;;:::o;12382:24::-;;;;:::o;14593:302::-;-1:-1:-1;;;;;14692:15:0;;14671:4;14692:15;;;:9;:15;;;;;;;;14708:10;14692:27;;;;;;;;-1:-1:-1;;14692:40:0;14688:141;;-1:-1:-1;;;;;14779:15:0;;;;;;:9;:15;;;;;;;;14795:10;14779:27;;;;;;;;:38;;14811:5;14779:38;:31;:38;:::i;:::-;-1:-1:-1;;;;;14749:15:0;;;;;;:9;:15;;;;;;;;14765:10;14749:27;;;;;;;:68;14688:141;14839:26;14849:4;14855:2;14859:5;14839:9;:26::i;:::-;-1:-1:-1;14883:4:0;14593:302;;;;;:::o;12674:108::-;12716:66;12674:108;:::o;12340:35::-;12373:2;12340:35;:::o;12531:31::-;;;;:::o;17648:218::-;17744:7;;-1:-1:-1;;;;;17744:7:0;17730:10;:21;17722:53;;;;;-1:-1:-1;;;17722:53:0;;;;;;;;;;;;-1:-1:-1;;;17722:53:0;;;;;;;;;;;;;;;17815:6;:16;;-1:-1:-1;;;;;17815:16:0;;;-1:-1:-1;;;;;;17815:16:0;;;;;;;17842:6;:16;;;;;;;;;;;17648:218::o;16230:32::-;;;;:::o;16269:::-;;;;:::o;19978:1288::-;20027:14;16481:8;;16493:1;16481:13;16473:42;;;;;-1:-1:-1;;;16473:42:0;;;;;;;;;;;;-1:-1:-1;;;16473:42:0;;;;;;;;;;;;;;;16537:1;16526:8;:12;;;16537:1;20096:13;:11;:13::i;:::-;-1:-1:-1;20167:6:0;;20160:39;;;-1:-1:-1;;;20160:39:0;;20193:4;20160:39;;;;;;20054:55;;-1:-1:-1;20054:55:0;;-1:-1:-1;20144:13:0;;-1:-1:-1;;;;;20167:6:0;;;;20160:24;;:39;;;;;;;;;;;;;;20167:6;20160:39;;;5:2:-1;;;;30:1;27;20:12;5:2;20160:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20160:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20160:39:0;20233:6;;20226:39;;;-1:-1:-1;;;20226:39:0;;20259:4;20226:39;;;;;;20160;;-1:-1:-1;20210:13:0;;-1:-1:-1;;;;;20233:6:0;;;;20226:24;;:39;;;;;20160;;20226;;;;;;;;20233:6;20226:39;;;5:2:-1;;;;30:1;27;20:12;5:2;20226:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20226:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20226:39:0;;-1:-1:-1;20276:12:0;20291:23;:8;-1:-1:-1;;;;;20291:23:0;;;:12;:23;:::i;:::-;20276:38;-1:-1:-1;20325:12:0;20340:23;:8;-1:-1:-1;;;;;20340:23:0;;;:12;:23;:::i;:::-;20325:38;;20376:10;20389:30;20398:9;20409;20389:8;:30::i;:::-;20430:17;20450:11;20376:43;;-1:-1:-1;20563:17:0;20559:374;;20609:58;15739:7;20609:35;20623:20;:7;20635;20623:20;:11;:20;:::i;:::-;20609:13;:35::i;:58::-;20597:70;;20682:36;20696:1;15739:7;20682:5;:36::i;:::-;20559:374;;;20831:90;-1:-1:-1;;;;;20844:37:0;;:25;:7;20856:12;20844:25;:11;:25;:::i;:::-;:37;;;;;;-1:-1:-1;;;;;20883:37:0;;:25;:7;20895:12;20883:25;:11;:25;:::i;:::-;:37;;;;;;20831:12;:90::i;:::-;20819:102;;20559:374;20963:1;20951:9;:13;20943:65;;;;-1:-1:-1;;;20943:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21019:20;21025:2;21029:9;21019:5;:20::i;:::-;21052:49;21060:8;21070;21080:9;21091;21052:7;:49::i;:::-;21116:5;21112:47;;;21150:8;;21131:28;;-1:-1:-1;;;;;21136:8:0;;;;-1:-1:-1;;;21150:8:0;;;21131:28;:18;:28;:::i;:::-;21123:5;:36;21112:47;21224:34;;;;;;;;;;;;;;21229:10;;21224:34;;;;;;;;-1:-1:-1;;16572:1:0;16561:8;:12;-1:-1:-1;19978:1288:0;;;-1:-1:-1;;;;;;19978:1288:0:o;12413:41::-;;;;;;;;;;;;;:::o;16308:17::-;;;;:::o;12789:38::-;;;;;;;;;;;;;:::o;21378:1466::-;21427:12;21441;16481:8;;16493:1;16481:13;16473:42;;;;;-1:-1:-1;;;16473:42:0;;;;;;;;;;;;-1:-1:-1;;;16473:42:0;;;;;;;;;;;;;;;16537:1;16526:8;:12;;;16537:1;21508:13;:11;:13::i;:::-;-1:-1:-1;21574:6:0;;21633;;21690:40;;;-1:-1:-1;;;21690:40:0;;21724:4;21690:40;;;;;;21466:55;;-1:-1:-1;21466:55:0;;-1:-1:-1;;;;;;21574:6:0;;;;21633;;;21556:15;;21574:6;;21690:25;;:40;;;;;;;;;;;;;;21574:6;21690:40;;;5:2:-1;;;;30:1;27;20:12;5:2;21690:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21690:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21690:40:0;21757;;;-1:-1:-1;;;21757:40:0;;21791:4;21757:40;;;;;;21690;;-1:-1:-1;21741:13:0;;-1:-1:-1;;;;;21757:25:0;;;;;:40;;;;;21690;;21757;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;21757:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21757:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21757:40:0;21843:4;21808:14;21825:24;;;:9;21757:40;21825:24;;;;;21757:40;;-1:-1:-1;21875:30:0;21884:9;21895;21875:8;:30::i;:::-;21916:17;21936:11;21862:43;;-1:-1:-1;21936:11:0;22055:23;:9;22069:8;22055:23;:13;:23;:::i;:::-;:38;;;;;;;-1:-1:-1;22197:12:0;22171:23;:9;22185:8;22171:23;:13;:23;:::i;:::-;:38;;;;;;22161:48;;22295:1;22285:7;:11;:26;;;;;22310:1;22300:7;:11;22285:26;22277:78;;;;-1:-1:-1;;;22277:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22366:31;22380:4;22387:9;22366:5;:31::i;:::-;22408:35;22422:7;22431:2;22435:7;22408:13;:35::i;:::-;22454;22468:7;22477:2;22481:7;22454:13;:35::i;:::-;22511:40;;;-1:-1:-1;;;22511:40:0;;22545:4;22511:40;;;;;;-1:-1:-1;;;;;22511:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;22511:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22511:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22511:40:0;22573;;;-1:-1:-1;;;22573:40:0;;22607:4;22573:40;;;;;;22511;;-1:-1:-1;;;;;;22573:25:0;;;;;:40;;;;;22511;;22573;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;22573:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22573:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22573:40:0;;-1:-1:-1;22626:49:0;22634:8;22573:40;22654:9;22665;22626:7;:49::i;:::-;22690:5;22686:47;;;22724:8;;22705:28;;-1:-1:-1;;;;;22710:8:0;;;;-1:-1:-1;;;22724:8:0;;;22705:28;:18;:28;:::i;:::-;22697:5;:36;22686:47;22798:38;;;;;;;;;;;;;;-1:-1:-1;;;;;22798:38:0;;;22803:10;;22798:38;;;;;;;;;;;16549:1;;;;;;;;;16572;16561:8;:12;;;;21378:1466;;;:::o;12292:41::-;;;;;;;;;;;;;;-1:-1:-1;;;12292:41:0;;;;:::o;14446:139::-;14506:4;14523:32;14533:10;14545:2;14549:5;14523:9;:32::i;15698:48::-;15739:7;15698:48;:::o;25048:352::-;16481:8;;16493:1;16481:13;16473:42;;;;;-1:-1:-1;;;16473:42:0;;;;;;;;;;;;-1:-1:-1;;;16473:42:0;;;;;;;;;;;;;;;16537:1;16526:8;:12;25117:6;;25176;;25289:8;;25244:40;;;-1:-1:-1;;;25244:40:0;;25278:4;25244:40;;;;;;-1:-1:-1;;;;;25117:6:0;;;;25176;;;;25217:82;;25117:6;;25240:2;;25244:54;;-1:-1:-1;;;;;25289:8:0;;25117:6;;25244:25;;:40;;;;;;;;;;;;;;;25117:6;25244:40;;;5:2:-1;;;;30:1;27;20:12;5:2;25244:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25244:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25244:40:0;;:54;:44;:54;:::i;:::-;25217:13;:82::i;:::-;25382:8;;25337:40;;;-1:-1:-1;;;25337:40:0;;25371:4;25337:40;;;;;;25310:82;;25324:7;;25333:2;;25337:54;;-1:-1:-1;;;25382:8:0;;-1:-1:-1;;;;;25382:8:0;;-1:-1:-1;;;;;25337:25:0;;;;;:40;;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;25310:82:0;-1:-1:-1;;16572:1:0;16561:8;:12;-1:-1:-1;25048:352:0:o;15850:22::-;;;-1:-1:-1;;;;;15850:22:0;;:::o;15907:21::-;;;-1:-1:-1;;;;;15907:21:0;;:::o;14903:672::-;15049:15;15037:8;:27;;15029:57;;;;;-1:-1:-1;;;15029:57:0;;;;;;;;;;;;-1:-1:-1;;;15029:57:0;;;;;;;;;;;;;;;15202:16;;-1:-1:-1;;;;;15298:13:0;;;15097:14;15298:13;;;:6;:13;;;;;;;;:15;;;;;;;;;15247:77;;12716:66;15247:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;15247:77:0;;;;;15237:88;;;;;;-1:-1:-1;;;15138:202:0;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;15138:202:0;;;;;;15114:237;;;;;;;;;15389:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15097:14;;15298:15;15389:26;;;;;-1:-1:-1;;15389:26:0;;;;;;;;;;15298:15;15389:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;15389:26:0;;-1:-1:-1;;15389:26:0;;;-1:-1:-1;;;;;;;15434:30:0;;;;;;:59;;;15488:5;-1:-1:-1;;;;;15468:25:0;:16;-1:-1:-1;;;;;15468:25:0;;15434:59;15426:99;;;;;-1:-1:-1;;;15426:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15536:31;15545:5;15552:7;15561:5;15536:8;:31::i;:::-;14903:672;;;;;;;;;:::o;12461:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;25449:158::-;16481:8;;16493:1;16481:13;16473:42;;;;;-1:-1:-1;;;16473:42:0;;;;;;;;;;;;-1:-1:-1;;;16473:42:0;;;;;;;;;;;;;;;16537:1;16526:8;:12;25505:6;;25498:39;;;-1:-1:-1;;;25498:39:0;;25531:4;25498:39;;;;;;25490:109;;-1:-1:-1;;;;;25505:6:0;;25498:24;;:39;;;;;;;;;;;;;;25505:6;25498:39;;;5:2:-1;;;;30:1;27;20:12;5:2;25498:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25498:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25498:39:0;25546:6;;25539:39;;;-1:-1:-1;;;25539:39:0;;25572:4;25539:39;;;;;;-1:-1:-1;;;;;25546:6:0;;;;25539:24;;:39;;;;;25498;;25539;;;;;;;;25546:6;25539:39;;;5:2:-1;;;;30:1;27;20:12;5:2;25539:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25539:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25539:39:0;25580:8;;-1:-1:-1;;;;;25580:8:0;;;;-1:-1:-1;;;25590:8:0;;;25490:7;:109::i;:::-;16572:1;16561:8;:12;25449:158::o;16828:286::-;15805:34;;;;;;;;;;;;;;;;;16956:43;;-1:-1:-1;;;;;16956:43:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;16956:43:0;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;16945:55:0;;;;16910:12;;16924:17;;16945:10;;;16956:43;16945:55;;;25:18:-1;16945:55:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;16945:55:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;16909:91:0;;;;17019:7;:57;;;;-1:-1:-1;17031:11:0;;:16;;:44;;;17062:4;17051:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17051:24:0;17031:44;17011:95;;;;;-1:-1:-1;;;17011:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16828:286;;;;;:::o;8270:471::-;8328:7;8573:6;8569:47;;-1:-1:-1;8603:1:0;8596:8;;8569:47;8640:5;;;8644:1;8640;:5;:1;8664:5;;;;;:10;8656:56;;;;-1:-1:-1;;;8656:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8732:1;8270:471;-1:-1:-1;;;8270:471:0:o;7926:136::-;7984:7;8011:43;8015:1;8018;8011:43;;;;;;;;;;;;;;;;;:3;:43::i;17951:872::-;-1:-1:-1;;;;;18063:24:0;;;;;:52;;-1:-1:-1;;;;;;18091:24:0;;;18063:52;18055:83;;;;;-1:-1:-1;;;18055:83:0;;;;;;;;;;;;-1:-1:-1;;;18055:83:0;;;;;;;;;;;;;;;18255:18;;18180:25;:15;:25;;;-1:-1:-1;;;18255:18:0;;;;18238:35;;;18320:15;;;;;;:33;;-1:-1:-1;;;;;;18339:14:0;;;;18320:33;:51;;;;-1:-1:-1;;;;;;18357:14:0;;;;18320:51;18316:336;;;18526:11;18473:64;;18478:44;18512:9;18478:27;18495:9;18478:16;:27::i;:::-;-1:-1:-1;;;;;18478:33:0;;:44;:33;:44;:::i;:::-;18449:20;:88;;-1:-1:-1;;;;;18473:50:0;;;;:64;;;;18449:88;;;18576:64;;;18581:44;18615:9;18581:27;18598:9;18581:16;:27::i;:44::-;18552:20;:88;;-1:-1:-1;;;;;18576:50:0;;;;:64;;;;18552:88;;;18316:336;18662:8;:28;;-1:-1:-1;;18662:28:0;-1:-1:-1;;;;;18662:28:0;;;;;;;-1:-1:-1;;;;18701:28:0;-1:-1:-1;;;18701:28:0;;;;;;;;;-1:-1:-1;;;;;18740:35:0;-1:-1:-1;;;18740:35:0;;;;;;;;;18791:24;;;18796:8;;;18791:24;;18806:8;;;;;;;18791:24;;;;;;;;;;;;;;;;;17951:872;;;;;;:::o;13886:169::-;-1:-1:-1;;;;;13967:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;14016:31;;;;;;;;;;;;;;;;;13886:169;;;:::o;14063:220::-;-1:-1:-1;;;;;14157:15:0;;;;;;:9;:15;;;;;;:26;;14177:5;14157:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;14139:15:0;;;;;;;:9;:15;;;;;;:44;;;;14210:13;;;;;;;:24;;14228:5;14210:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;14194:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;14250:25;;;;;;;14194:13;;14250:25;;;;;;;;;;;;;14063:220;;;:::o;18913:953::-;18986:10;19009:13;19038:7;;;;;;;;;-1:-1:-1;;;;;19038:7:0;-1:-1:-1;;;;;19025:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19025:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19025:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19025:29:0;;-1:-1:-1;;;;;;19073:19:0;;;;;;:76;;-1:-1:-1;19109:7:0;;19096:48;;;-1:-1:-1;;;19096:48:0;;19138:4;19096:48;;;;;;-1:-1:-1;;;;;19109:7:0;;;;19096:33;;:48;;;;;;;;;;;;;;;19109:7;19096:48;;;5:2:-1;;;;30:1;27;20:12;5:2;19096:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19096:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19096:48:0;19148:1;19096:53;;19073:76;19174:5;;19065:84;;-1:-1:-1;19214:645:0;;;;19244:11;;19240:549;;19276:10;19289:45;19303:30;-1:-1:-1;;;;;19303:15:0;;;;:30;;;:19;:30;:::i;19289:45::-;19276:58;;19353:14;19370:21;19384:6;19370:13;:21::i;:::-;19353:38;;19422:9;19414:5;:17;19410:364;;;19456:14;19473:37;19489:20;:5;19499:9;19489:20;:9;:20;:::i;:::-;19473:11;;;:37;:15;:37;:::i;:::-;19575:7;;19562:48;;;-1:-1:-1;;;19562:48:0;;19604:4;19562:48;;;;;;19456:54;;-1:-1:-1;19533:16:0;;19552:74;;19616:9;;19552:59;;-1:-1:-1;;;;;19575:7:0;;;;19562:33;;:48;;;;;;;;;;;;;;;19575:7;19562:48;;;5:2:-1;;;;30:1;27;20:12;5:2;19562:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19562:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19562:48:0;19552:5;;:59;:9;:59;:::i;:::-;:63;:74;:63;:74;:::i;:::-;19533:93;;19649:14;19678:11;19666:9;:23;;;;;;;-1:-1:-1;19716:13:0;;19712:42;;19731:23;19737:5;19744:9;19731:5;:23::i;:::-;19410:364;;;;19240:549;;;19214:645;;;19810:11;;19806:53;;19846:1;19838:5;:9;19806:53;18913:953;;;;;;:::o;9784:312::-;9832:9;9862:1;9858;:5;9854:235;;;-1:-1:-1;9884:1:0;9920;9916;9912:5;;:9;9936:92;9947:1;9943;:5;9936:92;;;9973:1;9969:5;;10011:1;10006;10002;9998;:5;;;;;;:9;9997:15;;;;;;9993:19;;9936:92;;;9854:235;;;;10049:6;;10045:44;;-1:-1:-1;10076:1:0;10045:44;9784:312;;;:::o;13460:201::-;13533:11;;:22;;13549:5;13533:22;:15;:22;:::i;:::-;13519:11;:36;;;-1:-1:-1;;;;;13582:13:0;;;;:9;:13;;;;;;:24;;13600:5;13582:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;13566:13:0;;;;;;:9;:13;;;;;;;;:40;;;;13622:31;;;;;;;13566:13;;;;13622:31;;;;;;;;;;13460:201;;:::o;9554:107::-;9612:7;9644:1;9639;:6;;:14;;9652:1;9639:14;;;-1:-1:-1;9648:1:0;;9554:107;-1:-1:-1;9554:107:0:o;13669:209::-;-1:-1:-1;;;;;13748:15:0;;;;;;:9;:15;;;;;;:26;;13768:5;13748:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;13730:15:0;;;;;;:9;:15;;;;;:44;;;;13799:11;:22;;13815:5;13799:22;:15;:22;:::i;:::-;13785:11;:36;;;13837:33;;;;;;;;-1:-1:-1;;;;;13837:33:0;;;;;;;;;;;;;13669:209;;:::o;8070:192::-;8156:7;8192:12;8184:6;;;;8176:29;;;;-1:-1:-1;;;8176:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8176:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8228:5:0;;;8070:192::o;11853:129::-;-1:-1:-1;;;;;11929:10:0;-1:-1:-1;;;11929:17:0;;11853:129::o;12053:108::-;12113:9;-1:-1:-1;;;;;12143:10:0;;-1:-1:-1;;;;;12139:14:0;;12143:10;12139:14;;;;;;12053:108;-1:-1:-1;;;12053:108:0:o;7737:181::-;7795:7;7827:5;;;7851:6;;;;7843:46;;;;;-1:-1:-1;;;7843:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;
Swarm Source
bzzr://46c07a569a6b1459249f351af48901239e20429187f1402f7470459510c63def
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.