UNPKG

@cryptoalgebra/integral-periphery

Version:

Peripheral smart contracts of Algebra Integral protocol

1,589 lines 127 kB
{ "_format": "hh-sol-artifact-1", "contractName": "NonfungiblePositionManager", "sourceName": "contracts/NonfungiblePositionManager.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "_factory", "type": "address" }, { "internalType": "address", "name": "_WNativeToken", "type": "address" }, { "internalType": "address", "name": "_tokenDescriptor_", "type": "address" }, { "internalType": "address", "name": "_poolDeployer", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "tickOutOfRange", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "name": "Collect", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint128", "name": "liquidity", "type": "uint128" }, { "indexed": false, "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "name": "DecreaseLiquidity", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "FarmingFailed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint128", "name": "liquidityDesired", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "actualLiquidity", "type": "uint128" }, { "indexed": false, "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "pool", "type": "address" } ], "name": "IncreaseLiquidity", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "NONFUNGIBLE_POSITION_MANAGER_ADMINISTRATOR_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WNativeToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount0Owed", "type": "uint256" }, { "internalType": "uint256", "name": "amount1Owed", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "algebraMintCallback", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bool", "name": "approve", "type": "bool" }, { "internalType": "address", "name": "farmingAddress", "type": "address" } ], "name": "approveForFarming", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint128", "name": "amount0Max", "type": "uint128" }, { "internalType": "uint128", "name": "amount1Max", "type": "uint128" } ], "internalType": "struct INonfungiblePositionManager.CollectParams", "name": "params", "type": "tuple" } ], "name": "collect", "outputs": [ { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token0", "type": "address" }, { "internalType": "address", "name": "token1", "type": "address" }, { "internalType": "address", "name": "deployer", "type": "address" }, { "internalType": "uint160", "name": "sqrtPriceX96", "type": "uint160" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "createAndInitializePoolIfNecessary", "outputs": [ { "internalType": "address", "name": "pool", "type": "address" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint128", "name": "liquidity", "type": "uint128" }, { "internalType": "uint256", "name": "amount0Min", "type": "uint256" }, { "internalType": "uint256", "name": "amount1Min", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "bytes", "name": "pluginData", "type": "bytes" } ], "internalType": "struct INonfungiblePositionManager.DecreaseLiquidityParams", "name": "params", "type": "tuple" } ], "name": "decreaseLiquidity", "outputs": [ { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "factory", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "farmingApprovals", "outputs": [ { "internalType": "address", "name": "farmingCenterAddress", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "farmingCenter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "amount0Desired", "type": "uint256" }, { "internalType": "uint256", "name": "amount1Desired", "type": "uint256" }, { "internalType": "uint256", "name": "amount0Min", "type": "uint256" }, { "internalType": "uint256", "name": "amount1Min", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "bytes", "name": "pluginData", "type": "bytes" } ], "internalType": "struct INonfungiblePositionManager.IncreaseLiquidityParams", "name": "params", "type": "tuple" } ], "name": "increaseLiquidity", "outputs": [ { "internalType": "uint128", "name": "liquidity", "type": "uint128" }, { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "isApprovedOrOwner", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "token0", "type": "address" }, { "internalType": "address", "name": "token1", "type": "address" }, { "internalType": "address", "name": "deployer", "type": "address" }, { "internalType": "int24", "name": "tickLower", "type": "int24" }, { "internalType": "int24", "name": "tickUpper", "type": "int24" }, { "internalType": "uint256", "name": "amount0Desired", "type": "uint256" }, { "internalType": "uint256", "name": "amount1Desired", "type": "uint256" }, { "internalType": "uint256", "name": "amount0Min", "type": "uint256" }, { "internalType": "uint256", "name": "amount1Min", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "bytes", "name": "pluginData", "type": "bytes" } ], "internalType": "struct INonfungiblePositionManager.MintParams", "name": "params", "type": "tuple" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint128", "name": "liquidity", "type": "uint128" }, { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes[]", "name": "data", "type": "bytes[]" } ], "name": "multicall", "outputs": [ { "internalType": "bytes[]", "name": "results", "type": "bytes[]" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "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": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "poolDeployer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "positions", "outputs": [ { "internalType": "uint88", "name": "nonce", "type": "uint88" }, { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "address", "name": "token0", "type": "address" }, { "internalType": "address", "name": "token1", "type": "address" }, { "internalType": "address", "name": "deployer", "type": "address" }, { "internalType": "int24", "name": "tickLower", "type": "int24" }, { "internalType": "int24", "name": "tickUpper", "type": "int24" }, { "internalType": "uint128", "name": "liquidity", "type": "uint128" }, { "internalType": "uint256", "name": "feeGrowthInside0LastX128", "type": "uint256" }, { "internalType": "uint256", "name": "feeGrowthInside1LastX128", "type": "uint256" }, { "internalType": "uint128", "name": "tokensOwed0", "type": "uint128" }, { "internalType": "uint128", "name": "tokensOwed1", "type": "uint128" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "refundNativeToken", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "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": "selfPermit", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "selfPermitAllowed", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "selfPermitAllowedIfNecessary", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "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": "selfPermitIfNecessary", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newFarmingCenter", "type": "address" } ], "name": "setFarmingCenter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amountMinimum", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "sweepToken", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bool", "name": "toActive", "type": "bool" } ], "name": "switchFarmingStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenFarmedIn", "outputs": [ { "internalType": "address", "name": "farmingCenterAddress", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amountMinimum", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "unwrapWNativeToken", "outputs": [], "stateMutability": "payable", "type": "function" }, { "stateMutability": "payable", "type": "receive" }, { "inputs": [], "name": "alreadyInitialized", "type": "error" }, { "inputs": [], "name": "arithmeticError", "type": "error" }, { "inputs": [], "name": "bottomTickLowerThanMIN", "type": "error" }, { "inputs": [], "name": "dynamicFeeActive", "type": "error" }, { "inputs": [], "name": "dynamicFeeDisabled", "type": "error" }, { "inputs": [], "name": "flashInsufficientPaid0", "type": "error" }, { "inputs": [], "name": "flashInsufficientPaid1", "type": "error" }, { "inputs": [], "name": "incorrectPluginFee", "type": "error" }, { "inputs": [], "name": "insufficientInputAmount", "type": "error" }, { "inputs": [], "name": "invalidAmountRequired", "type": "error" }, { "inputs": [ { "internalType": "bytes4", "name": "expectedSelector", "type": "bytes4" } ], "name": "invalidHookResponse", "type": "error" }, { "inputs": [], "name": "invalidLimitSqrtPrice", "type": "error" }, { "inputs": [], "name": "invalidNewCommunityFee", "type": "error" }, { "inputs": [], "name": "invalidNewTickSpacing", "type": "error" }, { "inputs": [], "name": "liquidityAdd", "type": "error" }, { "inputs": [], "name": "liquidityOverflow", "type": "error" }, { "inputs": [], "name": "liquiditySub", "type": "error" }, { "inputs": [], "name": "locked", "type": "error" }, { "inputs": [], "name": "notAllowed", "type": "error" }, { "inputs": [], "name": "notInitialized", "type": "error" }, { "inputs": [], "name": "pluginIsNotConnected", "type": "error" }, { "inputs": [], "name": "priceOutOfRange", "type": "error" }, { "inputs": [], "name": "tickInvalidLinks", "type": "error" }, { "inputs": [], "name": "tickIsNotInitialized", "type": "error" }, { "inputs": [], "name": "tickIsNotSpaced", "type": "error" }, { "inputs": [], "name": "tickOutOfRange", "type": "error" }, { "inputs": [], "name": "topTickAboveMAX", "type": "error" }, { "inputs": [], "name": "topTickLowerOrEqBottomTick", "type": "error" }, { "inputs": [], "name": "transferFailed", "type": "error" }, { "inputs": [], "name": "zeroAmountRequired", "type": "error" }, { "inputs": [], "name": "zeroLiquidityActual", "type": "error" }, { "inputs": [], "name": "zeroLiquidityDesired", "type": "error" } ], "bytecode": "0x6101a06040527601000000000000000000000000000000000000000000016010553480156200002d57600080fd5b5060405162005c7f38038062005c7f8339810160408190526200005091620001bb565b8383826040518060400160405280601881526020017f416c676562726120506f736974696f6e73204e46542d5632000000000000000081525060405180604001604052806008815260200167414c47422d504f5360c01b815250604051806040016040528060018152602001601960f91b81525082828160009081620000d79190620002bd565b506001620000e68282620002bd565b50508351602080860191909120608081815284518584012060a08181524660e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818901528082019690965260608601939093529284019290925230838301528051808403909201825260c09092019091528051910120905060c05250503061010052506001600160a01b039283166101205282166101405281166101605291909116610180525062000389915050565b80516001600160a01b0381168114620001b657600080fd5b919050565b60008060008060808587031215620001d257600080fd5b620001dd856200019e565b9350620001ed602086016200019e565b9250620001fd604086016200019e565b91506200020d606086016200019e565b905092959194509250565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200024357607f821691505b6020821081036200026457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002b857600081815260208120601f850160051c81016020861015620002935750805b601f850160051c820191505b81811015620002b4578281556001016200029f565b5050505b505050565b81516001600160401b03811115620002d957620002d962000218565b620002f181620002ea84546200022e565b846200026a565b602080601f831160018114620003295760008415620003105750858301515b600019600386901b1c1916600185901b178555620002b4565b600085815260208120601f198616915b828110156200035a5788860151825594840194600190910190840162000339565b5085821015620003795787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e05161010051610120516101405161016051610180516158386200044760003960006123330152600081816102210152818161062001528181611759015281816117e701528181613075015281816130bb015261314101526000818161042201528181610f3401528181612c0401526133760152600081816107490152818161114c0152611a2b01526000610df901526000610e2301526000610e4d01526000610ec601526000610e9e01526158386000f3fe6080604052600436106102115760003560e01c806301ffc9a71461028d57806306fdde03146102c2578063081812fc146102e4578063095ea7b31461031157806318160ddd14610331578063238f510e1461035057806323b872dd146103785780632d0b22de146103985780632f745c59146103ce57806330adf81f146103ee5780633119049a146104105780633644e515146104445780633dd657c514610459578063418652701461047957806342842e0e1461048157806342966c68146104a1578063430c2081146104b45780634659a494146104d45780634d10862d146104e75780634f6ccce714610507578063560482ce146105275780636352211e1461056257806369bc35b214610582578063702275151461059557806370a08231146105b557806372426eb1146105d55780637ac2ff7b146105e8578063832f630a146105fb5780638af3ac851461060e57806395d89b411461064257806399fbab8814610657578063a22cb4651461068f578063a4a78f0c146106af578063ac9650d8146106c2578063b227aa79146106e2578063b88d4fde14610704578063c2e3140a14610724578063c45a015514610737578063c87b56dd1461076b578063dd56e5d81461078b578063df2ab5bb146107ab578063dfb9239a146107be578063e7ce18a3146107e0578063e985e9c514610816578063f3995c6714610836578063fc6f78651461084957600080fd5b3661028857336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102865760405162461bcd60e51b815260206004820152601060248201526f2737ba102ba730ba34bb32aa37b5b2b760811b60448201526064015b60405180910390fd5b005b600080fd5b34801561029957600080fd5b506102ad6102a83660046146b5565b61085c565b60405190151581526020015b60405180910390f35b3480156102ce57600080fd5b506102d7610887565b6040516102b99190614722565b3480156102f057600080fd5b506103046102ff366004614735565b610919565b6040516102b9919061474e565b34801561031d57600080fd5b5061028661032c366004614782565b610947565b34801561033d57600080fd5b506008545b6040519081526020016102b9565b61036361035e3660046147ae565b610a5c565b604080519283526020830191909152016102b9565b34801561038457600080fd5b506102866103933660046147e8565b610d25565b3480156103a457600080fd5b506103046103b3366004614735565b600b602052600090815260409020546001600160a01b031681565b3480156103da57600080fd5b506103426103e9366004614782565b610d56565b3480156103fa57600080fd5b506103426000805160206157ec83398151915281565b34801561041c57600080fd5b506103047f000000000000000000000000000000000000000000000000000000000000000081565b34801561045057600080fd5b50610342610dec565b34801561046557600080fd5b50610286610474366004614871565b610f1f565b610286610fa1565b34801561048d57600080fd5b5061028661049c3660046147e8565b610fb3565b6102866104af366004614735565b610fce565b3480156104c057600080fd5b506102ad6104cf366004614782565b611072565b6102866104e23660046148d2565b61108e565b3480156104f357600080fd5b5061028661050236600461492e565b611123565b34801561051357600080fd5b50610342610522366004614735565b6111ea565b61053a61053536600461494b565b61127d565b604080519485526001600160801b0390931660208501529183015260608201526080016102b9565b34801561056e57600080fd5b5061030461057d366004614735565b61171e565b610286610590366004614993565b611752565b3480156105a157600080fd5b506102866105b03660046149d1565b611855565b3480156105c157600080fd5b506103426105d036600461492e565b611970565b6103046105e33660046149f6565b6119f6565b6102866105f63660046148d2565b611c22565b610286610609366004614a83565b611f54565b34801561061a57600080fd5b506103047f000000000000000000000000000000000000000000000000000000000000000081565b34801561064e57600080fd5b506102d7611fb5565b34801561066357600080fd5b50610677610672366004614735565b611fc4565b6040516102b99c9b9a99989796959493929190614ac5565b34801561069b57600080fd5b506102866106aa366004614b57565b612164565b6102866106bd3660046148d2565b612173565b6106d56106d0366004614b85565b61219b565b6040516102b99190614bf9565b3480156106ee57600080fd5b506103426000805160206157ac83398151915281565b34801561071057600080fd5b5061028661071f366004614d45565b6122bb565b6102866107323660046148d2565b6122f3565b34801561074357600080fd5b506103047f000000000000000000000000000000000000000000000000000000000000000081565b34801561077757600080fd5b506102d7610786366004614735565b612311565b34801561079757600080fd5b50600a54610304906001600160a01b031681565b6102866107b9366004614db0565b6123af565b6107d16107cc366004614de7565b612412565b6040516102b993929190614e21565b3480156107ec57600080fd5b506103046107fb366004614735565b600c602052600090815260409020546001600160a01b031681565b34801561082257600080fd5b506102ad610831366004614e42565b612690565b6102866108443660046148d2565b6126be565b610363610857366004614e70565b612715565b60006001600160e01b0319821663780e9d6360e01b1480610881575061088182612a34565b92915050565b60606000805461089690614e88565b80601f01602080910402602001604051908101604052809291908181526020018280546108c290614e88565b801561090f5780601f106108e45761010080835404028352916020019161090f565b820191906000526020600020905b8154815290600101906020018083116108f257829003601f168201915b5050505050905090565b600061092482612a84565b506000908152600f6020526040902054600160581b90046001600160a01b031690565b60006109528261171e565b9050806001600160a01b0316836001600160a01b0316036109bf5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161027d565b336001600160a01b03821614806109db57506109db8133612690565b610a4d5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161027d565b610a578383612aac565b505050565b6000808235610a6a81612b26565b8360800135610a7881612b6b565b6000610a8a6040870160208801614ed1565b6001600160801b031611610a9d57600080fd5b84356000908152600f6020908152604091829020600181015490926001600160501b03821692600160501b8304600290810b93600160681b810490910b92600160801b9091046001600160801b031691610afb918c01908c01614ed1565b6001600160801b0316816001600160801b03161015610b1957600080fd5b6000610b2485612bb1565b9050610b9684848d6020016020810190610b3e9190614ed1565b8e8060a00190610b4e9190614eee565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506001600160a01b03881695949392915050612c29565b909a50985060408b01358a10801590610bb357508a606001358910155b610bcf5760405162461bcd60e51b815260040161027d90614f34565b600080610be0888430898989612cae565b91509150818c018860040160008282829054906101000a90046001600160801b03160192506101000a8154816001600160801b0302191690836001600160801b03160217905550808b018860040160108282829054906101000a90046001600160801b03160192506101000a8154816001600160801b0302191690836001600160801b031602179055508c6020016020810190610c7d9190614ed1565b6001890180546001600160801b039287038316600160801b02921691909117905550508a357f26f6a048ee9138f2c0ce266f322cb99228e8d619ae2bff30c67f8dcf9d2377b4610cd360408e0160208f01614ed1565b8c8c604051610ce493929190614e21565b60405180910390a2610d188b35610d0160408e0160208f01614ed1565b6001600160801b0316610d1390614f78565b612d28565b5050505050505050915091565b610d2f3382612e52565b610d4b5760405162461bcd60e51b815260040161027d90614f94565b610a57838383612eb1565b6000610d6183611970565b8210610dc35760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b606482015260840161027d565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610e4557507f000000000000000000000000000000000000000000000000000000000000000046145b15610e6f57507f000000000000000000000000000000000000000000000000000000000000000090565b610f17604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b905090565b90565b6000610f2d82840184614fe1565b9050610f5d7f00000000000000000000000000000000000000000000000000000000000000008260000151613010565b508415610f7c57610f7c81600001516020015182602001513388613073565b8315610f9a57610f9a81600001516040015182602001513387613073565b5050505050565b4715610fb157610fb133476131f0565b565b610a57838383604051806020016040528060008152506122bb565b80610fd881612b26565b6000828152600f6020526040902060048101546001820154600160801b8083046001600160801b03908116938116919092049190911617171561101a57600080fd5b6000838152600f6020908152604080832080546001600160f81b0319168155600181018490556002810184905560038101849055600401839055600c909152902080546001600160a01b0319169055610a5783613293565b600061107d82612a84565b6110878383612e52565b9392505050565b6040516323f2ebc360e21b815233600482015230602482015260448101869052606481018590526001608482015260ff841660a482015260c4810183905260e481018290526001600160a01b03871690638fcbaf0c90610104015b600060405180830381600087803b15801561110357600080fd5b505af1158015611117573d6000803e3d6000fd5b50505050505050505050565b60405163e8ae2b6960e01b81526000805160206157ac83398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8ae2b6990604401602060405180830381865afa15801561119b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bf91906150bd565b6111c857600080fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60006111f560085490565b82106112585760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b606482015260840161027d565b6008828154811061126b5761126b6150da565b90600052602060002001549050919050565b60008060008084610140013561129281612b6b565b6000806113ab6040518061016001604052808a60000160208101906112b7919061492e565b6001600160a01b031681526020018a60200160208101906112d8919061492e565b6001600160a01b031681526020016112f660608c0160408d0161492e565b6001600160a01b0316815230602082015260400161131a60808c0160608d016150ff565b60020b815260200161133260a08c0160808d016150ff565b60020b815260a0808c0135602083015260c08c0135604083015260e08c013560608301526101008c01356080830152016113706101608c018c614eee565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250613324565b9299509097509550925090506113fa6113cc6101408a016101208b0161492e565b601080546001600160b01b0319811660016001600160b01b0392831690810190921617909155985088613503565b6000806114333061141160808d0160608e016150ff565b61142160a08e0160808f016150ff565b6001600160a01b03881692919061360c565b5050925092505060006114b08560405180606001604052808e604001602081019061145e919061492e565b6001600160a01b031681526020018e600001602081019061147f919061492e565b6001600160a01b031681526020018e60200160208101906114a0919061492e565b6001600160a01b031690526136ab565b905060405180610140016040528060006001600160581b0316815260200160006001600160a01b03168152602001826001600160501b031681526020018c606001602081019061150091906150ff565b60020b815260200161151860a08e0160808f016150ff565b60020b81526020018a6001600160801b0316815260200184815260200183815260200160006001600160801b0316815260200160006001600160801b0316815250600f60008c815260200190815260200160002060008201518160000160006101000a8154816001600160581b0302191690836001600160581b03160217905550602082015181600001600b6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a8154816001600160501b0302191690836001600160501b03160217905550606082015181600101600a6101000a81548162ffffff021916908360020b62ffffff160217905550608082015181600101600d6101000a81548162ffffff021916908360020b62ffffff16021790555060a08201518160010160106101000a8154816001600160801b0302191690836001600160801b0316021790555060c0820151816002015560e082015181600301556101008201518160040160006101000a8154816001600160801b0302191690836001600160801b031602179055506101208201518160040160106101000a8154816001600160801b0302191690836001600160801b03160217905550905050896000805160206157cc833981519152858b8b8b8a60405161170995949392919061511c565b60405180910390a25050505050509193509193565b60008061172a83613783565b90506001600160a01b0381166108815760405162461bcd60e51b815260040161027d90615155565b600061177d7f000000000000000000000000000000000000000000000000000000000000000061379e565b9050828110156117cb5760405162461bcd60e51b815260206004820152601960248201527824b739bab33334b1b4b2b73a102ba730ba34bb32aa37b5b2b760391b604482015260640161027d565b8015610a5757604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561183357600080fd5b505af1158015611847573d6000803e3d6000fd5b50505050610a5782826131f0565b600a546001600160a01b0316338114600083156118d7576000858152600b60205260409020546001600160a01b038481169116146118d05760405162461bcd60e51b81526020600482015260186024820152774e6f7420617070726f76656420666f72206661726d696e6760401b604482015260640161027d565b50816118fc565b81806118f957506000858152600c60205260409020546001600160a01b031633145b91505b8161193e5760405162461bcd60e51b815260206004820152601260248201527127b7363c902330b936b4b733a1b2b73a32b960711b604482015260640161027d565b6000948552600c602052604090942080546001600160a01b0319166001600160a01b0390951694909417909355505050565b60006001600160a01b0382166119da5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161027d565b506001600160a01b031660009081526003602052604090205490565b6000856001600160a01b0316876001600160a01b031610611a295760405162461bcd60e51b815260040161027d90615187565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038616611ace5760405163d9a641e160e01b8152600160