@cryptoalgebra/integral-periphery
Version:
Peripheral smart contracts of Algebra Integral protocol
389 lines (388 loc) • 41.1 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "V3Migrator",
"sourceName": "contracts/V3Migrator.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_factory",
"type": "address"
},
{
"internalType": "address",
"name": "_WNativeToken",
"type": "address"
},
{
"internalType": "address",
"name": "_nonfungiblePositionManager",
"type": "address"
},
{
"internalType": "address",
"name": "_poolDeployer",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "WNativeToken",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"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": [],
"name": "factory",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "pair",
"type": "address"
},
{
"internalType": "uint256",
"name": "liquidityToMigrate",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "percentageToMigrate",
"type": "uint8"
},
{
"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": "amount0Min",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount1Min",
"type": "uint256"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "bool",
"name": "refundAsNative",
"type": "bool"
},
{
"internalType": "bytes",
"name": "pluginData",
"type": "bytes"
}
],
"internalType": "struct IV3Migrator.MigrateParams",
"name": "params",
"type": "tuple"
}
],
"name": "migrate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes[]",
"name": "data",
"type": "bytes[]"
}
],
"name": "multicall",
"outputs": [
{
"internalType": "bytes[]",
"name": "results",
"type": "bytes[]"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "nonfungiblePositionManager",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "poolDeployer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"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"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x6101006040523480156200001257600080fd5b506040516200205638038062002056833981016040819052620000359162000075565b6001600160a01b03938416608052831660a05290821660c0521660e052620000d2565b80516001600160a01b03811681146200007057600080fd5b919050565b600080600080608085870312156200008c57600080fd5b620000978562000058565b9350620000a76020860162000058565b9250620000b76040860162000058565b9150620000c76060860162000058565b905092959194509250565b60805160a05160c05160e051611f05620001516000396000818161028d015281816109f801528181610a3201528181610a5c0152610c9e01526000818160dd0152818161022601528181610d0201528181610d7e01528181610e7b0152610ef7015260006101820152600081816102d4015261045d0152611f056000f3fe6080604052600436106100c05760003560e01c8063a4a78f0c11610074578063c2e3140a1161004e578063c2e3140a146102af578063c45a0155146102c2578063f3995c67146102f657600080fd5b8063a4a78f0c14610248578063ac9650d81461025b578063b44a27221461027b57600080fd5b806372426eb1116100a557806372426eb1146101e15780638a3defcc146101f45780638af3ac851461021457600080fd5b80633119049a146101705780634659a494146101ce57600080fd5b3661016b573373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f7420574e6174697665546f6b656e0000000000000000000000000000000060448201526064015b60405180910390fd5b005b600080fd5b34801561017c57600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101696101dc366004611720565b610309565b6101a46101ef36600461177c565b6103c4565b34801561020057600080fd5b5061016961020f366004611838565b610713565b34801561022057600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b610169610256366004611720565b610f95565b61026e61026936600461187b565b610fdb565b6040516101c5919061195e565b34801561028757600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b6101696102bd366004611720565b6110fc565b3480156102ce57600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b610169610304366004611720565b611116565b6040517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101869052606481018590526001608482015260ff841660a482015260c4810183905260e4810182905273ffffffffffffffffffffffffffffffffffffffff871690638fcbaf0c90610104015b600060405180830381600087803b1580156103a457600080fd5b505af11580156103b8573d6000803e3d6000fd5b50505050505050505050565b60008573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161061045b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c6964206f72646572206f6620746f6b656e730000000000000000006044820152606401610160565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8616610536576040517fd9a641e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152888116602483015282169063d9a641e190604401602060405180830381865afa15801561050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052f91906119de565b91506105d9565b6040517f23da36cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152898116602483015288811660448301528216906323da36cc90606401602060405180830381865afa1580156105b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d691906119de565b91505b73ffffffffffffffffffffffffffffffffffffffff82166106bb5773ffffffffffffffffffffffffffffffffffffffff86166106b6576040517f321935c600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063321935c690610667908b908b90899089906004016119fb565b6020604051808303816000875af1158015610686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106aa91906119de565b91506106b68286611193565b610708565b60006106dc8373ffffffffffffffffffffffffffffffffffffffff16611210565b90508073ffffffffffffffffffffffffffffffffffffffff16600003610706576107068387611193565b505b509695505050505050565b60006107256060830160408401611a73565b60ff161161078f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f50657263656e7461676520746f6f20736d616c6c0000000000000000000000006044820152606401610160565b60646107a16060830160408401611a73565b60ff16111561080c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f50657263656e7461676520746f6f206c617267650000000000000000000000006044820152606401610160565b6108196020820182611a90565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd336108426020850185611a90565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152602084013560448201526064016020604051808303816000875af11580156108be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e29190611abb565b506000806108f36020840184611a90565b6040517f89afcb4400000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906389afcb449060240160408051808303816000875af1158015610960573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109849190611ad8565b90925090506000606461099d6060860160408701611a73565b6109aa9060ff1685611b2b565b6109b49190611b42565b9050600060646109ca6060870160408801611a73565b6109d79060ff1685611b2b565b6109e19190611b42565b9050610a1d6109f66080870160608801611a90565b7f00000000000000000000000000000000000000000000000000000000000000008461128d565b610a57610a3060a0870160808801611a90565b7f00000000000000000000000000000000000000000000000000000000000000008361128d565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663560482ce6040518061018001604052808a6060016020810190610ab59190611a90565b73ffffffffffffffffffffffffffffffffffffffff168152602001610ae060a08c0160808d01611a90565b73ffffffffffffffffffffffffffffffffffffffff168152602001610b0b60c08c0160a08d01611a90565b73ffffffffffffffffffffffffffffffffffffffff168152602001610b3660e08c0160c08d01611b8c565b60020b8152602001610b4f6101008c0160e08d01611b8c565b60020b815260208101889052604081018790526101008b013560608201526101208b0135608082015260a001610b8d6101608c016101408d01611a90565b73ffffffffffffffffffffffffffffffffffffffff1681526101608b01356020820152604001610bc16101a08c018c611ba9565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152610c309190600401611c15565b6080604051808303816000875af1158015610c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c739190611d3c565b93509350505085821015610e1a5783821015610cc457610cc4610c9c6080890160608a01611a90565b7f0000000000000000000000000000000000000000000000000000000000000000600061128d565b6000610cd08388611d8f565b9050610ce46101a089016101808a01611da2565b8015610d4a575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610d3260808a0160608b01611a90565b73ffffffffffffffffffffffffffffffffffffffff16145b15610dfe576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610dd757600080fd5b505af1158015610deb573d6000803e3d6000fd5b50505050610df933826113fd565b610e18565b610e18610e1160808a0160608b01611a90565b33836114e6565b505b84811015610f8c5782811015610e3d57610e3d610c9c60a0890160808a01611a90565b6000610e498287611d8f565b9050610e5d6101a089016101808a01611da2565b8015610ec3575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610eab60a08a0160808b01611a90565b73ffffffffffffffffffffffffffffffffffffffff16145b15610f77576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610f5057600080fd5b505af1158015610f64573d6000803e3d6000fd5b50505050610f7233826113fd565b610f8a565b610f8a610e1160a08a0160808b01611a90565b505b50505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610fbf8761164f565b1015610fd357610fd3868686868686610309565b505050505050565b60608167ffffffffffffffff811115610ff657610ff6611dbf565b60405190808252806020026020018201604052801561102957816020015b60608152602001906001900390816110145790505b50905060005b828110156110f5576000803086868581811061104d5761104d611dee565b905060200281019061105f9190611ba9565b60405161106d929190611e1d565b600060405180830381855af49150503d80600081146110a8576040519150601f19603f3d011682016040523d82523d6000602084013e6110ad565b606091505b5091509150816110cd5760008151116110c557600080fd5b805181602001fd5b808484815181106110e0576110e0611dee565b6020908102919091010152505060010161102f565b5092915050565b846111068761164f565b1015610fd357610fd38686868686865b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526064810185905260ff8416608482015260a4810183905260c4810182905273ffffffffffffffffffffffffffffffffffffffff87169063d505accf9060e40161038a565b6040517ff637731d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063f637731d90602401600060405180830381600087803b1580156111fc57600080fd5b505af1158015610fd3573d6000803e3d6000fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663e76c01e46040518163ffffffff1660e01b815260040160c060405180830381865afa15801561125d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112819190611e44565b50939695505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291516000928392908716916113249190611ec3565b6000604051808303816000865af19150503d8060008114611361576040519150601f19603f3d011682016040523d82523d6000602084013e611366565b606091505b50915091508180156113905750805115806113905750808060200190518101906113909190611abb565b6113f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f53410000000000000000000000000000000000000000000000000000000000006044820152606401610160565b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516114349190611ec3565b60006040518083038185875af1925050503d8060008114611471576040519150601f19603f3d011682016040523d82523d6000602084013e611476565b606091505b50509050806114e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f53544500000000000000000000000000000000000000000000000000000000006044820152606401610160565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052915160009283929087169161157d9190611ec3565b6000604051808303816000865af19150503d80600081146115ba576040519150601f19603f3d011682016040523d82523d6000602084013e6115bf565b606091505b50915091508180156115e95750805115806115e95750808060200190518101906115e99190611abb565b6113f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f53540000000000000000000000000000000000000000000000000000000000006044820152606401610160565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015260009073ffffffffffffffffffffffffffffffffffffffff83169063dd62ed3e90604401602060405180830381865afa1580156116c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e69190611edf565b92915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461170e57600080fd5b50565b60ff8116811461170e57600080fd5b60008060008060008060c0878903121561173957600080fd5b8635611744816116ec565b95506020870135945060408701359350606087013561176281611711565b9598949750929560808101359460a0909101359350915050565b60008060008060008060a0878903121561179557600080fd5b86356117a0816116ec565b955060208701356117b0816116ec565b945060408701356117c0816116ec565b935060608701356117d0816116ec565b9250608087013567ffffffffffffffff808211156117ed57600080fd5b818901915089601f83011261180157600080fd5b81358181111561181057600080fd5b8a602082850101111561182257600080fd5b6020830194508093505050509295509295509295565b60006020828403121561184a57600080fd5b813567ffffffffffffffff81111561186157600080fd5b82016101c0818503121561187457600080fd5b9392505050565b6000806020838503121561188e57600080fd5b823567ffffffffffffffff808211156118a657600080fd5b818501915085601f8301126118ba57600080fd5b8135818111156118c957600080fd5b8660208260051b85010111156118de57600080fd5b60209290920196919550909350505050565b60005b8381101561190b5781810151838201526020016118f3565b50506000910152565b6000815180845261192c8160208601602086016118f0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156119d1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526119bf858351611914565b94509285019290850190600101611985565b5092979650505050505050565b6000602082840312156119f057600080fd5b8151611874816116ec565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301528260608301528284608084013760006080848401015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116830101905095945050505050565b600060208284031215611a8557600080fd5b813561187481611711565b600060208284031215611aa257600080fd5b8135611874816116ec565b801515811461170e57600080fd5b600060208284031215611acd57600080fd5b815161187481611aad565b60008060408385031215611aeb57600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176116e6576116e6611afc565b600082611b78577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8060020b811461170e57600080fd5b600060208284031215611b9e57600080fd5b813561187481611b7d565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611bde57600080fd5b83018035915067ffffffffffffffff821115611bf957600080fd5b602001915036819003821315611c0e57600080fd5b9250929050565b60208152611c3c60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b60006020830151611c65604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604083015173ffffffffffffffffffffffffffffffffffffffff81166060840152506060830151611c9c608084018260020b9052565b506080830151611cb160a084018260020b9052565b5060a083015160c083015260c083015160e083015260e0830151610100818185015280850151915050610120818185015280850151915050610140611d0d8185018373ffffffffffffffffffffffffffffffffffffffff169052565b84015161016084810191909152840151610180808501529050611d346101a0840182611914565b949350505050565b60008060008060808587031215611d5257600080fd5b8451935060208501516fffffffffffffffffffffffffffffffff81168114611d7957600080fd5b6040860151606090960151949790965092505050565b818103818111156116e6576116e6611afc565b600060208284031215611db457600080fd5b813561187481611aad565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8183823760009101908152919050565b805161ffff81168114611e3f57600080fd5b919050565b60008060008060008060c08789031215611e5d57600080fd5b8651611e68816116ec565b6020880151909650611e7981611b7d565b9450611e8760408801611e2d565b93506060870151611e9781611711565b9250611ea560808801611e2d565b915060a0870151611eb581611aad565b809150509295509295509295565b60008251611ed58184602087016118f0565b9190910192915050565b600060208284031215611ef157600080fd5b505191905056fea164736f6c6343000814000a",
"deployedBytecode": "0x6080604052600436106100c05760003560e01c8063a4a78f0c11610074578063c2e3140a1161004e578063c2e3140a146102af578063c45a0155146102c2578063f3995c67146102f657600080fd5b8063a4a78f0c14610248578063ac9650d81461025b578063b44a27221461027b57600080fd5b806372426eb1116100a557806372426eb1146101e15780638a3defcc146101f45780638af3ac851461021457600080fd5b80633119049a146101705780634659a494146101ce57600080fd5b3661016b573373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f7420574e6174697665546f6b656e0000000000000000000000000000000060448201526064015b60405180910390fd5b005b600080fd5b34801561017c57600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101696101dc366004611720565b610309565b6101a46101ef36600461177c565b6103c4565b34801561020057600080fd5b5061016961020f366004611838565b610713565b34801561022057600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b610169610256366004611720565b610f95565b61026e61026936600461187b565b610fdb565b6040516101c5919061195e565b34801561028757600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b6101696102bd366004611720565b6110fc565b3480156102ce57600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b610169610304366004611720565b611116565b6040517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101869052606481018590526001608482015260ff841660a482015260c4810183905260e4810182905273ffffffffffffffffffffffffffffffffffffffff871690638fcbaf0c90610104015b600060405180830381600087803b1580156103a457600080fd5b505af11580156103b8573d6000803e3d6000fd5b50505050505050505050565b60008573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161061045b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c6964206f72646572206f6620746f6b656e730000000000000000006044820152606401610160565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8616610536576040517fd9a641e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152888116602483015282169063d9a641e190604401602060405180830381865afa15801561050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052f91906119de565b91506105d9565b6040517f23da36cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152898116602483015288811660448301528216906323da36cc90606401602060405180830381865afa1580156105b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d691906119de565b91505b73ffffffffffffffffffffffffffffffffffffffff82166106bb5773ffffffffffffffffffffffffffffffffffffffff86166106b6576040517f321935c600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063321935c690610667908b908b90899089906004016119fb565b6020604051808303816000875af1158015610686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106aa91906119de565b91506106b68286611193565b610708565b60006106dc8373ffffffffffffffffffffffffffffffffffffffff16611210565b90508073ffffffffffffffffffffffffffffffffffffffff16600003610706576107068387611193565b505b509695505050505050565b60006107256060830160408401611a73565b60ff161161078f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f50657263656e7461676520746f6f20736d616c6c0000000000000000000000006044820152606401610160565b60646107a16060830160408401611a73565b60ff16111561080c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f50657263656e7461676520746f6f206c617267650000000000000000000000006044820152606401610160565b6108196020820182611a90565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd336108426020850185611a90565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152602084013560448201526064016020604051808303816000875af11580156108be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e29190611abb565b506000806108f36020840184611a90565b6040517f89afcb4400000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906389afcb449060240160408051808303816000875af1158015610960573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109849190611ad8565b90925090506000606461099d6060860160408701611a73565b6109aa9060ff1685611b2b565b6109b49190611b42565b9050600060646109ca6060870160408801611a73565b6109d79060ff1685611b2b565b6109e19190611b42565b9050610a1d6109f66080870160608801611a90565b7f00000000000000000000000000000000000000000000000000000000000000008461128d565b610a57610a3060a0870160808801611a90565b7f00000000000000000000000000000000000000000000000000000000000000008361128d565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663560482ce6040518061018001604052808a6060016020810190610ab59190611a90565b73ffffffffffffffffffffffffffffffffffffffff168152602001610ae060a08c0160808d01611a90565b73ffffffffffffffffffffffffffffffffffffffff168152602001610b0b60c08c0160a08d01611a90565b73ffffffffffffffffffffffffffffffffffffffff168152602001610b3660e08c0160c08d01611b8c565b60020b8152602001610b4f6101008c0160e08d01611b8c565b60020b815260208101889052604081018790526101008b013560608201526101208b0135608082015260a001610b8d6101608c016101408d01611a90565b73ffffffffffffffffffffffffffffffffffffffff1681526101608b01356020820152604001610bc16101a08c018c611ba9565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152610c309190600401611c15565b6080604051808303816000875af1158015610c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c739190611d3c565b93509350505085821015610e1a5783821015610cc457610cc4610c9c6080890160608a01611a90565b7f0000000000000000000000000000000000000000000000000000000000000000600061128d565b6000610cd08388611d8f565b9050610ce46101a089016101808a01611da2565b8015610d4a575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610d3260808a0160608b01611a90565b73ffffffffffffffffffffffffffffffffffffffff16145b15610dfe576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610dd757600080fd5b505af1158015610deb573d6000803e3d6000fd5b50505050610df933826113fd565b610e18565b610e18610e1160808a0160608b01611a90565b33836114e6565b505b84811015610f8c5782811015610e3d57610e3d610c9c60a0890160808a01611a90565b6000610e498287611d8f565b9050610e5d6101a089016101808a01611da2565b8015610ec3575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610eab60a08a0160808b01611a90565b73ffffffffffffffffffffffffffffffffffffffff16145b15610f77576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610f5057600080fd5b505af1158015610f64573d6000803e3d6000fd5b50505050610f7233826113fd565b610f8a565b610f8a610e1160a08a0160808b01611a90565b505b50505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610fbf8761164f565b1015610fd357610fd3868686868686610309565b505050505050565b60608167ffffffffffffffff811115610ff657610ff6611dbf565b60405190808252806020026020018201604052801561102957816020015b60608152602001906001900390816110145790505b50905060005b828110156110f5576000803086868581811061104d5761104d611dee565b905060200281019061105f9190611ba9565b60405161106d929190611e1d565b600060405180830381855af49150503d80600081146110a8576040519150601f19603f3d011682016040523d82523d6000602084013e6110ad565b606091505b5091509150816110cd5760008151116110c557600080fd5b805181602001fd5b808484815181106110e0576110e0611dee565b6020908102919091010152505060010161102f565b5092915050565b846111068761164f565b1015610fd357610fd38686868686865b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526064810185905260ff8416608482015260a4810183905260c4810182905273ffffffffffffffffffffffffffffffffffffffff87169063d505accf9060e40161038a565b6040517ff637731d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063f637731d90602401600060405180830381600087803b1580156111fc57600080fd5b505af1158015610fd3573d6000803e3d6000fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663e76c01e46040518163ffffffff1660e01b815260040160c060405180830381865afa15801561125d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112819190611e44565b50939695505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291516000928392908716916113249190611ec3565b6000604051808303816000865af19150503d8060008114611361576040519150601f19603f3d011682016040523d82523d6000602084013e611366565b606091505b50915091508180156113905750805115806113905750808060200190518101906113909190611abb565b6113f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f53410000000000000000000000000000000000000000000000000000000000006044820152606401610160565b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516114349190611ec3565b60006040518083038185875af1925050503d8060008114611471576040519150601f19603f3d011682016040523d82523d6000602084013e611476565b606091505b50509050806114e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f53544500000000000000000000000000000000000000000000000000000000006044820152606401610160565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052915160009283929087169161157d9190611ec3565b6000604051808303816000865af19150503d80600081146115ba576040519150601f19603f3d011682016040523d82523d6000602084013e6115bf565b606091505b50915091508180156115e95750805115806115e95750808060200190518101906115e99190611abb565b6113f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f53540000000000000000000000000000000000000000000000000000000000006044820152606401610160565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015260009073ffffffffffffffffffffffffffffffffffffffff83169063dd62ed3e90604401602060405180830381865afa1580156116c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e69190611edf565b92915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461170e57600080fd5b50565b60ff8116811461170e57600080fd5b60008060008060008060c0878903121561173957600080fd5b8635611744816116ec565b95506020870135945060408701359350606087013561176281611711565b9598949750929560808101359460a0909101359350915050565b60008060008060008060a0878903121561179557600080fd5b86356117a0816116ec565b955060208701356117b0816116ec565b945060408701356117c0816116ec565b935060608701356117d0816116ec565b9250608087013567ffffffffffffffff808211156117ed57600080fd5b818901915089601f83011261180157600080fd5b81358181111561181057600080fd5b8a602082850101111561182257600080fd5b6020830194508093505050509295509295509295565b60006020828403121561184a57600080fd5b813567ffffffffffffffff81111561186157600080fd5b82016101c0818503121561187457600080fd5b9392505050565b6000806020838503121561188e57600080fd5b823567ffffffffffffffff808211156118a657600080fd5b818501915085601f8301126118ba57600080fd5b8135818111156118c957600080fd5b8660208260051b85010111156118de57600080fd5b60209290920196919550909350505050565b60005b8381101561190b5781810151838201526020016118f3565b50506000910152565b6000815180845261192c8160208601602086016118f0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156119d1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526119bf858351611914565b94509285019290850190600101611985565b5092979650505050505050565b6000602082840312156119f057600080fd5b8151611874816116ec565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301528260608301528284608084013760006080848401015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116830101905095945050505050565b600060208284031215611a8557600080fd5b813561187481611711565b600060208284031215611aa257600080fd5b8135611874816116ec565b801515811461170e57600080fd5b600060208284031215611acd57600080fd5b815161187481611aad565b60008060408385031215611aeb57600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176116e6576116e6611afc565b600082611b78577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8060020b811461170e57600080fd5b600060208284031215611b9e57600080fd5b813561187481611b7d565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611bde57600080fd5b83018035915067ffffffffffffffff821115611bf957600080fd5b602001915036819003821315611c0e57600080fd5b9250929050565b60208152611c3c60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b60006020830151611c65604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604083015173ffffffffffffffffffffffffffffffffffffffff81166060840152506060830151611c9c608084018260020b9052565b506080830151611cb160a084018260020b9052565b5060a083015160c083015260c083015160e083015260e0830151610100818185015280850151915050610120818185015280850151915050610140611d0d8185018373ffffffffffffffffffffffffffffffffffffffff169052565b84015161016084810191909152840151610180808501529050611d346101a0840182611914565b949350505050565b60008060008060808587031215611d5257600080fd5b8451935060208501516fffffffffffffffffffffffffffffffff81168114611d7957600080fd5b6040860151606090960151949790965092505050565b818103818111156116e6576116e6611afc565b600060208284031215611db457600080fd5b813561187481611aad565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8183823760009101908152919050565b805161ffff81168114611e3f57600080fd5b919050565b60008060008060008060c08789031215611e5d57600080fd5b8651611e68816116ec565b6020880151909650611e7981611b7d565b9450611e8760408801611e2d565b93506060870151611e9781611711565b9250611ea560808801611e2d565b915060a0870151611eb581611aad565b809150509295509295509295565b60008251611ed58184602087016118f0565b9190910192915050565b600060208284031215611ef157600080fd5b505191905056fea164736f6c6343000814000a",
"linkReferences": {},
"deployedLinkReferences": {}
}